[9] greedy
DESCRIPTION
[9] greedyTRANSCRIPT
-
Proiectarea algoritmilor: Algoritmi greedy
Dorel Lucanu
Faculty of Computer ScienceAlexandru Ioan Cuza University, Iasi, Romania
PA 2014/2015
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 1 / 42
-
Outline
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 2 / 42
-
Prezentarea generala a paradigmei
Plan
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 3 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
Fie S o multime finita de intrari si C o colectie de submultimi ale lui S .Spunem ca C este accesibila daca satisface axioma de accesibilitate:
(X C)X 6= = (x X )X \ {x} C (1)
Daca C este accesibila atunci perechea (S , C) se numeste sistem accesibil.Exercitiu
Fie G = (V ,E ) un graf. Definim S(G ) = E siC(G ) = {X E | X este arbore}. Sa se arate ca (S(G ), C(G )) estesistem accesibil. Reamintim ca un arbore este un graf conex fara cicluri.
Exercitiu
Fie G = (V ,E ) un graf. Definim S(G ) = E si C(G ) = {X E | (V ,X )este o colectie de arbori (padure) }. Sa se arate ca (S(G ), C(G )) estesistem accesibil.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 4 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
O submultime X C se numeste baza daca este maximala, i.e. nu existax S \ X astfel ncat X {x} C.O submultime X C care nu este baza se numeste extensibila. Cu altecuvinte, daca X este extensibila atunci exista y S \ X astfel ncatX {y} C.Exercitiu
Fie G = (V ,E ) un graf si (S(G ), C(G )) un sistem accesibil definit ca nunul din exercitiile de pe slide-ul 4. Un arbore partial este una arbore careinclude toate varfurile grafului. Sa se arate ca, n fiecare caz, un arborepartial este baza.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 5 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
Clasa de probleme pentru care se pot defini algoritmi greedy estedefinita de urmatoarea schema:
Se considera date un sistem accesibil (S , C) si o functie obiectivf : C R. Problema consta n determinarea unei baze B Ccare satisface:
f (B) = optim{f (X ) | X baza n C}
In general, prin optim vom ntelege minim sau maxim.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 6 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
Strategia greedy consta n gasirea unui criteriu de selectie a elementelordin S care candideaza la formarea bazei optime (care da optimul pentrufunctia obiectiv). Acest criteriu este numit alegere greedy sau alegere aoptimului local. Formal, optimul local are o urmatoarea definitie:
f (X {x}) = optim{f (X {y}) | y S \ X ,X {x} C} (2)
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 7 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
Aceasta strategie este descrisa schematic de urmatorul algoritm:
greedy(S, B) {S1 = S;
B = ;while (B este extensibila) {
alege un optim local x din S1 conform cu (2)S1 = S1 \ {x};B = B {x};
}}
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 8 / 42
-
Prezentarea generala a paradigmei
Analiza algoritmului greedy pentru matroizi
Presupunem ca pasul de alegere greedy selecteaza elemente x n timpulO(kp) unde k = #S1 si ca testarea conditiei B {x} C se face n timpulO(`q), unde ` = #B. Avem k + ` n. Multimile S si B pot fireprezentate astfel ncat costul operatiilor B {x} si S1 {x} sa fie egalcu O(1). Deoarece pasul de alegere este executat de n ori rezulta castrategia are timpul de executie
T (n) = O(np + 1q) + + O(1p + nq)= O(1p + + np + 1q + + nq)= O(np+1 + nq+1) = O(nmax(p+1,q+1))
Operatiile peste multimile S1 si B vor trebui descrise n functie dereprezentarile concrete ale acestora.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 9 / 42
-
Prezentarea generala a paradigmei
Modelul matematic
Din pacate, numai conditia de accesibilitate nu asigura existentatotdeauna a unui criteriu de alegere locala care sa conduca la determinareaunei baze optime. Aceasta nseamna ca, pentru anumite probleme, putemproiecta algoritmi greedy care nu furnizeaza solutia optima ci o bazapentru care functia obiectiv poate avea valori apropiate de cea optima.Acesta este cazul, de exemplu, pentru anumite probleme netractabile.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 10 / 42
-
Prezentarea generala a paradigmei Matroizi
Plan
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 11 / 42
-
Prezentarea generala a paradigmei Matroizi
Definitie matroizi
Vom prezenta o clasa particulara de algoritmi greedy pentru carealegerile optime locale conduc la determinarea unei baze optime.Perechea M = (S , C) se numeste matroid daca satisface urmatoareleconditii:
proprietatea de ereditate:
X C X 6= = (x X )X \ {x} C,
proprietatea de interschimbare:
X ,Y C |X | < |Y | = (y Y \ X )X {y} C.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 12 / 42
-
Prezentarea generala a paradigmei Matroizi
Exemple
Exercitiu
Fie G = (V ,E ) un graf. Sa se arate ca (E , {X E | X este arbore}) nueste matroid. Care dintre proprietati nu este satisfacuta?
Exercitiu
Fie G = (V ,E ) un graf. Sa se arate ca
(E , {X E | (V ,X ) este padure })este matroid.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 13 / 42
-
Prezentarea generala a paradigmei Matroizi
Matroizi ponderati
Un matroid ponderat este un matroid M = (S , C) n care fiecare elementx S are asociata o pondere w(x). Problemele pe care le consideram aicisunt definite dupa urmatorul sablon:
Se considera dat un matroid ponderat M = (S , C,w). DacuaX S atunci definim w(X ) =
xXw(x). Problema consta n
determinarea unei baze B C care satisface:
w(B) = max{w(X ) | X baza n C}
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 14 / 42
-
Prezentarea generala a paradigmei Matroizi
Algoritmul greedy pentru matroizi
Determinarea optimului local consta n selectarea unui x S \ X astfelncat
w(x) = max{w(y) | y S \ X ,X {y} C.}Deoarece optimul local este determinat numai pe baza ponderilorelementelor ramase, algoritmul greedy consta n testarea tuturorelementelor din S n ordinea descrescatoare a ponderilor w(x):
greedyMatr(S, w, B) {sorteaza S descrescator dupa w(x)B = ;foreach x S considerat n ordine descrescatoare dupa w(x)
if (B {x} C) B = B {x};}
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 15 / 42
-
Prezentarea generala a paradigmei Matroizi
Analiza algoritmului greedy pentru matroizi
Lema
Fie x primul element din S ales de algoritmul greedyMatr. Exista o bazaoptima A care contine x .
Demonstratie. Fie A o baza optima. Daca x A, atunci luam A = A.Presupunem ca x 6 A. Luam pentru nceput A = {x}. Din definitiaalgoritmului greedyMatr, A C. Utilizand proprietatea de interschimbaren mod repetat, adaugam elemente din A la pana cand |A| = |A|. Existay A astfel ncat A = A \ {x} {y}. Din modul de alegere a lui x , avemw(x) w(y) care implica:
w(A) = w(A) w(x) + w(y) w(A).
Deoarece A este optima, rezulta w(A) = w(A) si de aici avem ca A esteoptima. Acum demonstratia lemei este terminata. sfdem
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 16 / 42
-
Prezentarea generala a paradigmei Matroizi
Analiza algporitmului greedy pentru matroizi
Teorema
Daca M = (S , C,w) este un matroid ponderat, atunci algoritmulgreedyMatr determina o baza optima.
Demonstratie. Fie acum M = (S ,w , C), undeS = {y S | {x , y} C},w = w |S (restrictia lui w la S ) siC = {X C | X {x} C}.Aplicand proprietatea de ereditate rezulta ca M este matroid si daca Aeste o baza optima a lui M, atunci A \ {x} este o baza optima pentru M (matroizii au proprietatea de substructura optima). Aplicand unrationament inductiv, obtinem ca B \ {x} este baza optima pentru M .sfdem
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 17 / 42
-
Prezentarea generala a paradigmei Matroizi
Analiza algoritmului greedy pentru matroizi
In cazul matroizilor ponderati, timpul de executie pentru cazul cel mainefavorabil poate fi redusa la O(n log n) daca testarea conditieiB {x} C se face n timpul O(1).
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 18 / 42
-
Studii de caz
Plan
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 19 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Plan
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 20 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Problema
Rucsac IInput n obiecte notate cu 0, 1, . . . , n 1 de dimensiuni (greutati)
w0,w1, . . . ,wn1, respectiv, si un rucsac de capacitate M.Daca n rucsac se pune o parte fractionara xi din obiectul i ,0 xi 1, atunci se obtine un profit pi xi (pi > 0).Umplerea rucsacului cu fractiunile (cantitatile) x0, . . . , xn1aduce profitul total
n1i=0 pixi .
Output Partile fractionare x0, . . . xn1 care aduc un profit total maxim.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 21 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Formulare matematica
Problema ar putea fi formulata si ca o problema de optim, n modulurmator:
functia obiectiv:
maxn1i=0
pixi
restrictii:n1i=0
wixi M0 xi 1 pentru i = 0, . . . , n 1
Dacan1
i=0 wi M atunci profitul maxim se obtine candxi = 1, 0 i n 1. De aceea vom presupune ca
n1i=0 wi > M. In acest
caz, nu toate fractiunile xi pot fi egale cu 1. In plus, rucsacul poate fiumplut exact, i.e., putem alege xi astfel ncat
n1i=0 wixi = M.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 22 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Definirea sistemului accesibil
Multimea de intrari este S = {(i , xi ) | 0 i < n, xi [0, 1]}.O submultime X S este n C daca((i , xi ), (i , xi ) X )i = i = xi = xi si
{xiwi | (i , xi ) X} M.Are loc proprietatea de ereditate:X C, (i , xi ) X = X{(i , xi)} C}NU are proprietatea de interschimbare (deci nu se poate aplica teorema dela matroizi):w = (7, 4, 5), M = 10, X = {(0, 1)}, Y = {(1, 1), (2, 1)}Avem |X | = 1, |Y | = 2, dar nu exista (i , y) Y a.. X {(i , y)} C.Functia asociata intrarilor:f (i , xi ) = xipi ,f (X ) =
{f (i , xi ) | (i , xi ) X}D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 23 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Alegere greedy care NU e OK
La fiecare pas se va introduce n rucsac obiectul care aduce profit maxim.La ultimul pas, daca obiectul nu ncape n totalitate, se va ntroducenumai acea parte fractionara a sa, care umple exact rucsacul.
Exemplu: Presupunem n = 3,M = 10, iar dimensiunile si profiturileobiectelor date de urmatorul tabel:
0 1 2
wi 6 4 8pi 3 4 6
Algoritmul rucsacC va determina solutia x = (0,1
2, 1) care produce
profitul
pixi =1
2 4 + 1 6 = 8. Se observa ca vectorul x = (0, 1, 3
4)
produce un profit mai bun:
pixi = 1 4 +
3
4 6 = 17
2> 8. sfex
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 24 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Alegere greedy care ESTE OK
La fiecare pas va fi introdus n rucsac obiectul care aduce profit maxim peunitatea de capacitate (greutate) utilizata, adica obiecul care maximizeaza
fractiapiwi
peste multimea obiectelor neintroduse nca.
La ultimul pas, daca obiectul nu ncape n totalitate, se va ntroducenumai acea parte fractionara a sa, care umple exact rucsacul.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 25 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Algoritmul greedy
rucsacC(w, p, x, n) {S ={0,..., n-1};for i = 0 to n-1 x[i] = 0;
C = 0;
while ((C < M) and (S 6= )) {alege i S care maximizeaza profitul pe unitatea de greutate peste SS = S\{i}if (C + w[i] M) {
C = C + w[i];
x[i] = 1;
} else {C = M;
x[i] =M Cw[i]
}}
}D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 26 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Presupunemp0w0 pn1
wn1. Fie x = (x0, , xn1) solutia generata
de procedura rucsacC. Daca xi = 1, 0 i < n, atunci evident ca aceastasolutie este optima.
Altfel, fie j primul indice pentru care xj 6= 1. Din algoritm, se observa caxi = 1 pentru orice 0 i < j si xi = 0 pentru i > j .Fie y = (y0 yn1) o solutie optima (care maximizeaza profitul).
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 27 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Lema
Fie k cel mai mic indice pentru care xk 6= yk . Atunci yk < xk si k j .
Demonstratie. Exista urmatoarele posibilitati:
(i) k < j . Rezulta xk = 1 si de aici yk 6= xk implica yk < xk .(ii) k = j . Deoarece
xi wi = M si xi = yi , 1 i < j , rezulta ca
yk < xk (altfel
yi wi > M care constituie o contradictie).
(iii) k > j . Rezultan1i=0
yi wi >j
i=0xi wi = M. Contradictie.
sfdem
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 28 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Lema
Exista o solutie optima z care coincide cu x pe pozitiile 0, . . . , k (z e maiaproape de x decat y).
Demonstratie.Marim yk cu diferenta pana la xk si scoatem aceasta diferenta dinsecventa (yk+1, . . . , yn1) astfel ncat capacitatea utilizata sa ramna totM. Rezulta o noua solutie z = (z0, . . . , zn1) care satisface:
zi = xi , 0 i kk
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Avem:
n1i=0
zi pi =
0i
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Teorema
Procedura rucsacC determina solutia optima (cu profit maxim).
Demonstratie. Aplicam n mode repetat lema de pe slide-ul 29 pana candse obtine o solutie optima care coincide cu x . sfdem
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 31 / 42
-
Studii de caz Problema rucsacului I (varianta continua)
Analiza
Timpul de executie a algoritmului rucsacC este O(n2). Dar daca intrarile
satisfacp0w0 pn1
wn1, atunci algoritmul rucsacC necesita timpul
O(n). La acesta trebuie adaugat timpul de preprocesare (ordonare) careeste O(n log n).
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 32 / 42
-
Studii de caz Arborele partial de cost minim
Plan
1 Prezentarea generala a paradigmeiMatroizi
2 Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 33 / 42
-
Studii de caz Arborele partial de cost minim
Problema
Arborele partial de cost minimInput Un graf ponderat G = (V ,E ) cu functia de cost c : E R.Output un arbore partial de cost minim.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 34 / 42
-
Studii de caz Arborele partial de cost minim
Modelul matematic
Reamintim ca un arbore partial al lui G este un subgraf conex fara ciclurice include toate varfurile lui G . Fie A o multime de muchii. O muchie{i , j} este sigura pentru A daca A {{i , j}} este o submultime a unuiarbore partial de cost minim. Urmatorul algoritm generic, bazat pestrategia greedy, determina arborele partial descris ca o multime de arce:
APCM(V,E,c) {A = ;E1 = E;while A nu formeaza arbore partial {
determina o muchie {i, j} E1 sigura AE1 = E1 \ {{i, j}}A = A {{i, j}}
}}
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 35 / 42
-
Studii de caz Arborele partial de cost minim
Modelul matematic
Teorema
A determinat de algoritmul APCM este arbore partial de cost minim pentruG = (V ,E ).
Demonstratie. Invariantul buclei while: A este o submultime a unuiarbore partial de cost minim. sfdem
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 36 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
Multimea A este o colectie de arbori (padure). Pasul de alegere localaselecteaza muchia de cost minim care nu formeaza circuite cu muchiilealese pana n acel moment.
Reamintim ca (E , {X E | (V ,X ) este o padure }) este matroid.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 37 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
2030
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
2030
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
2030
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
2030
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
20
30
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
10
2030
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 38 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Kruskal
O implementare eficienta a algoritmului lui Kruskal se obtine reprezentandA printr-o structura union-find :
Kruskal(V,E,c) {A = ;foreach (i V) single(i);sorteaza E crescator dupa c;foreach ({i, j} E n ordine crescatoare)
if (find(A, i) 6= find(A, j)union(A,i,j);
}
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 39 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
Multimea A este arbore. Pasul de alegere locala selecteaza muchia de costminim care, mpreuna cu celelalte alese pana n acel moment, pastreazaproprietatea de arbore. O implementare eficienta a algoritmului lui Prim seobtine prin ntretinerea unei structuri min-heap, pe care o notam cu Q.Fiecarui varf i i se asociaza o valoare cheie(i) ce reprezinta minimul dintrecosturile muchiilor care unesc acel varf cu un varf din arborele construitpana n acel moment. Pe timpul executiei algoritmului, Q va memora, pebaza valorilor cheie(i) definite mai sus, varfurile care nu sunt n arbore.
Reamintim ca (E , {X E | X este arbore }) NU este matroid, asa catrebuie demonstrata corectitudinea.
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 40 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3 4
5
10
20
50
30
40 10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3 4
5
10
20
50
30
40 10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1
2
3 4
5
10
20
50
30
40 10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3 4
5
10
20
50
30
40 10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3
4
5
10
20
50
30
40
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3 4
5
10
20
50
30
40
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
1 2
3 4
5
10
20
50
2030
30
4010
1 2
3 4
5
1 2
3 4
5
10
20
50
30
40
10
D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 41 / 42
-
Studii de caz Arborele partial de cost minim
Algoritmul lui Prim
Multimea A va fi A = {{j , parinte(j)} | j V \ {r} \ Q}, unde r este radacinaarborelui (aleasa arbitrar) si parinte(j) este adresa varfului care realizeazavaloarea cheie(j):
Prim(V,E,c) {Q = V;foreach (i Q) cheie[i] = ;cheie[r] = 0;
parinte[r] = -1;
while (Q 6= ) {i = Q.read(); Q.pop();
foreach (j G.a[i]) // G.a[i] lista de adiacentaif (j Q and c(i,j) < cheie[j]) {
parinte[j] = i;
cheie[j] = c({i,j});Q.replace(j);
}}
}D. Lucanu (FII - UAIC) Algoritmi greedy PA 2014/2015 42 / 42
Prezentarea generala a paradigmeiMatroizi
Studii de cazProblema rucsacului I (varianta continua)Arborele partial de cost minim