Sunteți pe pagina 1din 4

Algoritmul lui Kruskal este un algoritm n teoria grafurilor care gsete arborele (graf neorientat, conex i fr cicluri) parial

de cost minim pentru un graf conex ponderat. Cu alte cuvinte, gsete submulimea muchiilor care formeaz un arbore care include toate vrfurile i care este minimizat din punct de vedere al costului. Dac graful nu este conex, atunci algoritmul gsete o pdure parial de cost minim (un arbore parial de cost minim pentru fiecare component conex). Algoritmul lui Kruskal este un exemplu de algoritm greedy. Algoritmul funcioneaz n felul urmtor: creeaz o pdure F (o mulime de arbori), unde fiecare vrf din graf este un arbore separat creeaz o mulime S care conine toate muchiile din graf att timp ct S este nevid o elimin o muchie de cost minim din S o dac acea muchie conecteaz doi arbori distinci, atunci adaug muchia n pdure, combinnd cei doi arbori ntr-unul singur o altfel, ignor muchia La sfritul algoritmului, pdurea are doar o component care reprezint un arbore parial de cost minim al grafului. Acest algoritm a fost scris de Joseph Kruskal, n 1956.

Exemplu :

Acesta este graful original. Numerele de pe muchii reprezint costul acestora. Nici o muchie nu este evideniat.

AD i CE sunt cele mai scurte muchii, de cost 5, iar AD a fost arbitrar aleas, deci este evideniat.

CE este muchia de cost minim care nu formeaz un ciclu, deci este evideniat.

Urmtoarea muchie, DF, de cost 6, este evideniat n acelai fel.

Urmtoarele muchii de cost minim sunt AB i BE, de cost 7. AB este aleas arbitrar i este evideniat. Muchia BD este marcat cu rou, deoarece ar forma ciclul ABD dac ar fi aleas.

Procesul continu cu evidenierea urmtoarei muchii, BE, de cost 7. Mai multe muchii sunt marcate cu rou la acest pas: BC, deoarece ar forma ciclul BCE, DE, deoarece ar forma ciclul DEBA i FE deoarece ar forma ciclul FEBAD.

n sfrit, procesul se ncheie cu muchia EG de cost 9, iar arborele parial de cost minim este gsit.

Pseudocod
1 function Kruskal(G) 2 for each vrf v n G do 3 Definete un grup elementar C(v) {v}. 4 Creeaz o coad cu prioriti Q care conine muchiile din G, avnd costul drept cheie. 5 Definete un arbore T //T va conine n final toate muchiile din APCM 6 // n este numrul total de vrfuri 7 while T are mai puin de n-1 muchii do 8 // muchia u,v este drumul minim de la u la v 9 (u,v) Q.eliminMin() 10 Fie C(v) grupul care l conine pe v i C(u) grupul care l conine pe u. 11 if C(v) C(u) then 12 Adaug muchia (v,u) la T. 13 Unete C(v) i C(u) ntr-un grup, adic reuniune ntre C(v) i C(u). 14 return arborele T

S-ar putea să vă placă și