Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cel mai ieftin TV LED mic

Reverse proxy si htaccess pe Raps...

Statie de epurare sau fosa septic...

"enerlux p" afisaj interm...
 Adaptor usb3.1gigabit vs Adaptor ...

La multi ani @Atreides!

La multi ani @KENSINGTON!

La multi ani @burebista!
 La multi ani de Florii!

Stihl fs 70 c-e

Challengers (2024)

Care mai sunt mediile de admitere...
 Laptop cu HDD atasare memorie MMC...

Hartile google nu mai au chenarul...

Tomate in ghiveci la curte?

Idei cale de actiune recuperare g...
 

Algoritm de memoizare

* - - - - 1 votes
  • Please log in to reply
No replies to this topic

#1
Ltschmer

Ltschmer

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 09.10.2017
Am gasit intr-o carte un foarte interesant algoritm de memoizare. Practic este vorba despre o functie (memoize) care ia ca argument functia pe care vrem sa o memoizam , si intoarce ca si valoare -> un local scope in care declaram tabelul in care tinem valorile calculate. Acest local scope intoarce ca si rezultat o functie care ia un argument.
   Avem :
  
(define (memoize f)
					   (let  ((table (make-table)))
						   (lambda (x)
							  (let  ((seen (lookup x table)))
								 (if (not (null? seen))
									  seen
									  (let ((ans (f x)))
											(insert! x ans table)
											ans))))))
  
unde : (make-table) este o functie care returneaza un tabel
  (lookup x table) este o functie care verifica daca intr-un table oarecare exista un obiect cu cheia x
  (insert! x ans table) este o functie care insereaza ans intr-un tabel , si ii atribuie cheia x.
aceste trei functii sunt implementate in functie de limbajul folosit, vointa si imaginatia fiecaruia.
   sintaxa pentru let : let este folosit in general petru a creea variabile locale
          Ex :
                
							  (let ((a 5))
								  (*  (+ a 1) 2) ))
				

echivalent logic cu :
	   ( (lambda  (a) (* (+ a 1) 2)) 5)
												

iar functia care calculeaza numerele fibonacci :
	  
 (define  mem-fib
			(memoize (lambda (n)
									 (cond ((= n 0) 0)
											   ((= n 1) 1)
											   (else (+  (mem-fib (- n 1))
															 (mem-fib (- n 2)))))))


Edited by Ltschmer, 19 July 2018 - 12:49.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate