Sunteți pe pagina 1din 2

Algoritmul lui Kruskal este un algoritm n teoria grafurilor care gsete arborele 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 opdure 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

elimin o muchie de cost minim din S

dac acea muchie conecteaz doi arbori distinci, atunci adaug muchia n
pdure, combinnd cei doi arbori ntr-unul singur

altfel, ignor muchia

La sfritul algoritmului, pdurea are doar o component care reprezint un arbore par ial de cost
minim al grafului.

PSEUDOCOD:

1 funcia Kruskal(G)
2
pentru fiecare vrf v n G execut
3
Define te un grup elementar C(v) {v}.
4
Creeaz o coad cu priorit i 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
ct timp T are mai puin de n-1 muchii execut
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
dac C(v) C(u) atunci

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
returneaz arborele T

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