Documente Academic
Documente Profesional
Documente Cultură
Proiectarea Algoritmilor
http://www.cs.umass.edu/~barring/cs611/lecture/4.pdf
http://thor.info.uaic.ro/~dlucanu/cursuri/tpaa/resurse/Curs6.pps
http://www.math.fau.edu/locke/Greedy.htm
http://en.wikipedia.org/wiki/Greedoid
http://activities.tjhsst.edu/sct/lectures/greedy0607.pdf
http://www.cse.ust.hk/~dekai/271/notes/L12/L12.pdf
Programare dinamică
Programare dinamică
Descriere generală
Algoritm generic
Caracteristici
Descriere generală
Soluții optime construite iterativ asamblând soluții optime ale
unor probleme similare de dimensiuni mai mici.
Algoritmi “clasici”
Algoritmul Floyd-Warshall care determină drumurile de cost
minim dintre toate perechile de noduri ale unui graf.
AOC
Înmulţirea unui şir de matrici
Numere catalane
Viterbi
Ex: p = 5, q = 4, r = 6, s = 2
(AB)C => 180 înmulţiri
A(BC) => 88 înmulţiri
1 ≤ i ≤ j ≤ n:
Notăm Ai, j = Ai x … x Aj. Ai,j are pi-1 linii si pj coloane: Ai,j(pi-1, pj)
m[i, j] = numărul optim de înmulţiri pentru a rezolva
subproblema Ai,j
s[i, j] = poziţia primei paranteze pentru subproblema Ai,j
Care e parantezarea optimă pentru Ai, j?
Spaţială: Θ(n2)
Pentru memorarea soluţiilor subproblemelor
Temporală: O(n3)
Ns: Număr total de subprobleme: O(n2)
Na: Număr total de alegeri la fiecare pas: O(n)
Complexitate: Θ(logn)
Proiectarea Algoritmilor 2010
Inserţie în arbore de căutare
Inserare(elem, Arb) nod Stânga
Dacă Arb = vid // adaug cheia in arbore
nod_nou(elem, null, null) nod Dreapta
Dacă elem = Arb.val // valoarea există deja
Întoarce Arb
Dacă elem Arb.val
Întoarce Inserare(elem, Arb.st) // adaugă in stânga
Întoarce Inserare(elem, Arb.dr) // sau in dreapta
Complexitate: Θ(logn)
Proiectarea Algoritmilor 2010
Exemplu de arbori de căutare
8 28 41 8 19 28 41 8 32
19 15
19
p q
wi , j k k
k i 1 k i
Ci , j min{Ci , 1 C , j } wi , j xα
i j
Ai, α-1 = S(Ai, j) Aα, j = D(Ai, j)
xi+1,...xα-1 x α+1,...xj
yi,...yα-1 y α+1,...yj
Demonstrație: j j
Cost( Aij ) (nivel ( x , A ) 1) * p nivel ( y , A ) * q
k i 1
k ij k
k i
k ij k
Ci , j Ci , 1 C , j wi , j
dacă Ci,α-1 şi Cα,j sunt minime (costurile unor AOC) Ci,j este minim.
Arborele Ai, i+d conține in noduri cheile {xi+1, xi+2, … xi+d}, iar in
frunzele fictive sunt cheile {yi, yi+1, … yi+d}. Calculul este efectuat pe
baza rezultatelor obținute in etapele anterioare.
Rădăcina Ai, i+d are indicele Ri, j = α care minimizează Ci, i+d.
Complexitate???
Proiectarea Algoritmilor 2010
Exemplu constructie AOC (I)
8: 0.2; 15: 0.01; 19: 0.1; 23: 0.02; 28: 0.25; (58%)
C01=p1+q0+q1=0.29
C12=p2+q1+q2=0.16
C23=p3+q2+q3=0.25
C34=p4+q3+q4=0.02+0.05+0.05=0.12
C45=p5+q4+q5=0.25+0.05+0.15=0.45
8
19 23
<8 19
15 23 19 28
15 19-23
8-15 15-19 19-23 23-28 15-19 19-23 23-28 >28
8-15 15-19
j j
wi , j pk qk Ci ,i d min {Ci , 1 C ,i d } wi ,i d
k i 1 k i i i d
unde costurile Ci, α-1 si Cα, i+d corespund unor arbori cu un număr de noduri d’
= α – 1 – i in cazul Ci, α-1 si d’ = i + d – α in cazul Cα, i+d.
Conform Lemei anterioare, Ci, j este costul unui AOC. Conform algoritmului
rădăcina acestui arbore are indicele r = Ri, j, iar cheile sunt {xi+1, xi+2, … xr-1}
{xr} {xr+1, xr+2, … xj} = {xi+1, xi+2, … xj}