Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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