Você está na página 1de 53

Proiectarea algoritmilor: Algoritmi greedy

Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro

PA 2014/2015

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

1 / 42

Outline

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

2 / 42

Prezentarea general
a a paradigmei

Plan

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

3 / 42

Prezentarea general
a 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 si
C(G ) = {X E | X este arbore}. Sa se arate ca (S(G ), C(G )) este
sistem 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 )) este
sistem accesibil.
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

4 / 42

Prezentarea general
a a paradigmei

Modelul matematic

O submultime X C se numeste baza daca este maximala, i.e. nu exista


x S \ X astfel ncat X {x} C.
O submultime X C care nu este baza se numeste extensibila. Cu alte
cuvinte, daca X este extensibila atunci exista y S \ X astfel ncat
X {y } C.
Exercitiu
Fie G = (V , E ) un graf si (S(G ), C(G )) un sistem accesibil definit ca n
unul din exercitiile de pe slide-ul 4. Un arbore partial este una arbore care
include toate varfurile grafului. Sa se arate ca, n fiecare caz, un arbore
partial este baza.

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

5 / 42

Prezentarea general
a a paradigmei

Modelul matematic

Clasa de probleme pentru care se pot defini algoritmi greedy este


definita de urmatoarea schema:
Se considera date un sistem accesibil (S, C) si o functie obiectiv
f : C R. Problema consta n determinarea unei baze B C
care 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 general
a a paradigmei

Modelul matematic

Strategia greedy consta n gasirea unui criteriu de selectie a elementelor


din S care candideaza la formarea bazei optime (care da optimul pentru
functia obiectiv). Acest criteriu este numit alegere greedy sau alegere a
optimului local. Formal, optimul local are o urmatoarea definitie:
f (X {x}) = optim{f (X {y }) | y S \ X , X {x} C}

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

(2)

7 / 42

Prezentarea general
a a paradigmei

Modelul matematic

Aceasta strategie este descrisa schematic de urmatorul algoritm:


greedy(S, B) {
S1 = S;
B = ;
while (B este extensibil
a) {
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 general
a a paradigmei

Analiza algoritmului greedy pentru matroizi


Presupunem ca pasul de alegere greedy selecteaza elemente x n timpul
O(k p ) unde k = #S1 si ca testarea conditiei B {x} C se face n timpul
O(`q ), unde ` = #B. Avem k + ` n. Multimile S si B pot fi
reprezentate astfel ncat costul operatiilor B {x} si S1 {x} sa fie egal
cu O(1). Deoarece pasul de alegere este executat de n ori rezulta ca
strategia 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 de
reprezentarile concrete ale acestora.

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

9 / 42

Prezentarea general
a a paradigmei

Modelul matematic

Din pacate, numai conditia de accesibilitate nu asigura existenta


totdeauna a unui criteriu de alegere locala care sa conduca la determinarea
unei baze optime. Aceasta nseamna ca, pentru anumite probleme, putem
proiecta algoritmi greedy care nu furnizeaza solutia optima ci o baza
pentru 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 general
a a paradigmei

Matroizi

Plan

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

11 / 42

Prezentarea general
a a paradigmei

Matroizi

Definitie matroizi

Vom prezenta o clasa particulara de algoritmi greedy pentru care


alegerile optime locale conduc la determinarea unei baze optime.
Perechea M = (S, C) se numeste matroid daca satisface urmatoarele
conditii:
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 general
a a paradigmei

Matroizi

Exemple

Exercitiu
Fie G = (V , E ) un graf. Sa se arate ca (E , {X E | X este arbore}) nu
este 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 general
a a paradigmei

Matroizi

Matroizi ponderati

Un matroid ponderat este un matroid M = (S, C) n care fiecare element


x S are asociata o pondere w (x). Problemele pe care le consideram aici
sunt definite dupa urmatorul sablon:
Se considera dat un matroid ponderat
M = (S, C, w ). Dacua
P
X S atunci definim w (X ) =
w (x). Problema consta n
xX

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 general
a a paradigmei

Matroizi

Algoritmul greedy pentru matroizi


Determinarea optimului local consta n selectarea unui x S \ X astfel
ncat
w (x) = max{w (y ) | y S \ X , X {y } C.}
Deoarece optimul local este determinat numai pe baza ponderilor
elementelor ramase, algoritmul greedy consta n testarea tuturor
elementelor din S n ordinea descrescatoare a ponderilor w (x):
greedyMatr(S, w, B) {
sorteaza S descrescator dup
a w (x)
B = ;
foreach x S considerat n ordine descresc
atoare dupa w (x)
if (B {x} C) B = B {x};
}

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

15 / 42

Prezentarea general
a a paradigmei

Matroizi

Analiza algoritmului greedy pentru matroizi


Lema
Fie x primul element din S ales de algoritmul greedyMatr. Exista o baza
optima A care contine x.
Demonstratie. Fie A0 o baza optima. Daca x A0 , atunci luam A = A0 .
Presupunem ca x 6 A0 . Luam pentru nceput A = {x}. Din definitia
algoritmului greedyMatr, A C. Utilizand proprietatea de interschimbare
n mod repetat, adaugam elemente din A0 la pana cand |A| = |A0 |. Exista
y A0 astfel ncat A = A0 \ {x} {y }. Din modul de alegere a lui x, avem
w (x) w (y ) care implica:
w (A) = w (A0 ) w (x) + w (y ) w (A0 ).
Deoarece A0 este optima, rezulta w (A) = w (A0 ) si de aici avem ca A este
optima. Acum demonstratia lemei este terminata.
sfdem
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

16 / 42

Prezentarea general
a a paradigmei

Matroizi

Analiza algporitmului greedy pentru matroizi


Teorema
Daca M = (S, C, w ) este un matroid ponderat, atunci algoritmul
greedyMatr determina o baza optima.
Demonstratie. Fie acum M 0 = (S 0 , w 0 , C 0 ), unde
S 0 = {y S | {x, y } C},
w 0 = w |S 0 (restrictia lui w la S 0 ) si
C 0 = {X C | X {x} C}.
Aplicand proprietatea de ereditate rezulta ca M 0 este matroid si daca A
este o baza optima a lui M, atunci A \ {x} este o baza optima pentru M 0
(matroizii au proprietatea de substructura optima). Aplicand un
rationament inductiv, obtinem ca B \ {x} este baza optima pentru M 0 .
sfdem
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

17 / 42

Prezentarea general
a a paradigmei

Matroizi

Analiza algoritmului greedy pentru matroizi

In cazul matroizilor ponderati, timpul de executie pentru cazul cel mai


nefavorabil poate fi redusa la O(n log n) daca testarea conditiei
B {x} C se face n timpul O(1).

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

18 / 42

Studii de caz

Plan

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema 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 continu


a)

Plan

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema 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 continu


a)

Problema

Rucsac I
Input
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 rucsaculuiP
cu fractiunile (cantitatile) x0 , . . . , xn1
n1
aduce profitul total i=0
pi x i .
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 continu


a)

Formulare matematica
Problema ar putea fi formulata si ca o problema de optim, n modul
urmator:
functia obiectiv:
max

n1
X

pi xi

i=0

restrictii:
n1
P

wi xi M

i=0

0 xi 1 pentru i = 0, . . . , n 1
P
Daca n1
inePcand
i=0 wi M atunci profitul maxim se obt

xi = 1, 0 i n 1. De aceea vom presupune ca n1


i=0 wi > M. In acest

caz, nu toate fractiunile xi pot fi egale cu 1. InPplus, rucsacul poate fi


n1
umplut exact, i.e., putem alege xi astfel ncat i=0
wi xi = M.
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

22 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Definirea sistemului accesibil


Multimea de intrari este S = {(i, xi ) | 0 i < n, xi [0, 1]}.
O submultime X S este n C daca
P
((i, xi ), (i 0 , xi 0 ) X )i = i 0 = xi = xi 0 si {xi wi | (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 de
la 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 ) =Pxi pi ,
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 continu


a)

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 ntroduce
numai acea parte fractionara a sa, care umple exact rucsacul.
Exemplu: Presupunem n = 3, M = 10, iar dimensiunile si profiturile
obiectelor date de urmatorul tabel:
wi
pi

0
6
3

1
4
4

2
8
6

1
Algoritmul rucsacC va determina solutia x = (0, , 1) care produce
2
P
1
3
profitul
pi xi = 4 + 1 6 = 8. Se observa ca vectorul x 0 = (0, 1, )
2
4
P
17
3
produce un profit mai bun:
pi xi0 = 1 4 + 6 =
> 8.
sfex
4
2
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

24 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Alegere greedy care ESTE OK

La fiecare pas va fi introdus n rucsac obiectul care aduce profit maxim pe


unitatea de capacitate (greutate) utilizata, adica obiecul care maximizeaza
pi
peste multimea obiectelor neintroduse nca.
fractia
wi
La ultimul pas, daca obiectul nu ncape n totalitate, se va ntroduce
numai 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 continu


a)

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 maximizeaz
a profitul pe unitatea de greutate peste S
S = S\{i}
if (C + w[i] M) {
C = C + w[i];
x[i] = 1;
} else {
C = M;
MC
x[i] =
w[i]
}
}
}
D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

26 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Analiza

p0
pn1

. Fie x = (x0 , , xn1 ) solutia generata
w0
wn1
de procedura rucsacC. Daca xi = 1, 0 i < n, atunci evident ca aceasta
solutie este optima.

Presupunem

Altfel, fie j primul indice pentru care xj 6= 1. Din algoritm, se observa ca


xi = 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 continu


a)

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 .
P
(ii) k = j. DeoareceP xi wi = M si xi = yi , 1 i < j, rezulta ca
yk < xk (altfel
yi wi > M care constituie o contradictie).
j
n1
P
P
(iii) k > j. Rezulta
yi wi >
xi wi = M. Contradictie.
i=0

i=0

sfdem

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

28 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Analiza
Lema
Exista o solutie optima z care coincide cu x pe pozitiile 0, . . . , k (z e mai
aproape de x decat y ).
Demonstratie.
Marim yk cu diferenta pana la xk si scoatem aceasta diferenta din
secventa (yk+1 , . . . , yn1 ) astfel ncat capacitatea utilizata sa ramna tot
M. Rezulta o noua solutie z = (z0 , . . . , zn1 ) care satisface:
zi = xi , 0 i k
P

(yi zi ) wi = (xk yk ) wk

k<in1

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

29 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Analiza
Avem:
n1
P

zi pi

i=0

n1
P
P
zi pi + zk pk +
yi pi
zi pi +
i=0
0i<k
k<i<n
P
P

yi pi yk pk
yi pi

0i<k

n
P

k<i<n
wk
pk
wk

wi
wi
i=0
k<i<n
n1
P
P
pk
pk

yi pi + (zk yk ) wk

(yi zi ) wi
wk k<i<n
wk
i=0
n1
P
=
yi pi
=

yi pi + (zk yk )

(yi zi ) pi

i=0

Deoarece y este solutie optima, rezulta


D. Lucanu (FII - UAIC)

Pn1

Algoritmi greedy

i=0

z i pi =

Pn1
i=0

y i pi .

sfdem

PA 2014/2015

30 / 42

Studii de caz

Problema rucsacului I (varianta continu


a)

Analiza

Teorema
Procedura rucsacC determina solutia optima (cu profit maxim).
Demonstratie. Aplicam n mode repetat lema de pe slide-ul 29 pana cand
se 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 continu


a)

Analiza

Timpul de executie a algoritmului rucsacC este O(n2 ). Dar daca intrarile


p0
pn1
satisfac

, atunci algoritmul rucsacC necesita timpul
w0
wn1
O(n). La acesta trebuie adaugat timpul de preprocesare (ordonare) care
este O(n log n).

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

32 / 42

Studii de caz

Arborele partial de cost minim

Plan

Prezentarea generala a paradigmei


Matroizi

Studii de caz
Problema 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 minim


Input
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 cicluri
ce 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 unui
arbore partial de cost minim. Urmatorul algoritm generic, bazat pe
strategia greedy, determina arborele partial descris ca o multime de arce:
APCM(V,E,c) {
A = ;
E1 = E;
while A nu formeaz
a arbore partial {
determina o muchie {i, j} E1 sigur
aA
E1 = 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 pentru
G = (V , E ).
Demonstratie. Invariantul buclei while: A este o submultime a unui
arbore 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 locala


selecteaza muchia de cost minim care nu formeaza circuite cu muchiile
alese 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


10

20

20
50

3
40

30

30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

38 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Kruskal


10

20

20
50

3
40

30

30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

38 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Kruskal


10

20

20
50

3
40

10

30

30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

38 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Kruskal


10

20

20
50

3
40

10

30

30

10

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

38 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Kruskal


10

20

20
50

3
40

10

20

30

30

10

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

38 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Kruskal


10

20

20
50

3
40

10

20

30

30

30

10

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 reprezentand


A printr-o structura union-find:
Kruskal(V,E,c) {
A = ;
foreach (i V) single(i);
sorteaza E crescator dup
a c;
foreach ({i, j} E n ordine cresc
atoare)
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 cost


minim care, mpreuna cu celelalte alese pana n acel moment, pastreaza
proprietatea de arbore. O implementare eficienta a algoritmului lui Prim se
obtine 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 dintre
costurile muchiilor care unesc acel varf cu un varf din arborele construit
pana n acel moment. Pe timpul executiei algoritmului, Q va memora, pe
baza valorilor cheie(i) definite mai sus, varfurile care nu sunt n arbore.
Reamintim ca (E , {X E | X este arbore }) NU este matroid, asa ca
trebuie demonstrata corectitudinea.

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

40 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

3
40

30

30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

3
40

30

30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

3
40

10

20

30

50
30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

3
40

10

1
20

30

2
30

50
30

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

30

30

10

20

30

4
40

40

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

30

30

10

20

30

4
10

40

10

D. Lucanu (FII - UAIC)

Algoritmi greedy

PA 2014/2015

41 / 42

Studii de caz

Arborele partial de cost minim

Algoritmul lui Prim


10

20

20
50

30

30

10

20

30

4
10

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 radacina
arborelui (aleasa arbitrar) si parinte(j) este adresa varfului care realizeaza
valoarea 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 adiacent

a
if (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