Algoritmul Kruskal

2
Algoritmul lui Kruskal este un algoritm în teoria grafurilor care găsește arborele parțial de cost minim pentru un graf conex ponderat. Cu alte cuvinte, găsește submulțimea muchiilor care formează un arbore care include toate vârfurile și care este minimizat din punct de vedere al costului. Dacă graful nu este conex, atunci algoritmul găsește opădure parțială de cost minim (un arbore parțial de cost minim pentru fiecare componentă conexă). Algoritmul lui Kruskal este un exemplu de algoritm greedy . Algoritmul funcționează în felul următor: creează o pădure F (o mulțime de arbori), unde fiecare vârf din graf este un arbore separat creează o mulțime S care conține toate muchiile din graf atât timp cât S este nevidă elimină o muchie de cost minim din S dacă acea muchie conectează doi arbori distincți, atunci adaugă muchia în pădure, combinând cei doi arbori într-unul singur altfel, ignoră muchia La sfârșitul algoritmului, pădurea are doar o componentă care reprezintă un arbore parțial de cost minim al grafului. PSEUDOCOD: 1 funcția Kruskal(G) 2 pentru fiecare vârf v în G execută 3 Definește un grup elementar C(v) ← {v}. 4 Creează o coadă cu priorități Q care conține muchiile din G, având costul drept cheie. 5 Definește un arbore T ← Ø //T va conține în final toate muchiile din APCM 6 // n este numărul total de vârfuri 7 cât timp T are mai puțin de n-1 muchii execută 8 // muchia u,v este drumul minim de la u la v 9 (u,v) ← Q.eliminăMin() 10 Fie C(v) grupul care îl conține pe v și C(u) grupul care îl conține pe u. 11 dacă C(v) ≠ C(u) atunci 12 Adaugă muchia (v,u) la T. 13 Unește C(v) și C(u) într-un grup, adică reuniune între C(v) și C(u). 14 returnează arborele T

description

Algoritmul Kruskal

Transcript of Algoritmul Kruskal

Algoritmul lui Kruskaleste unalgoritmnteoria grafurilorcare gsetearboreleparial de cost minim pentru ungrafconexponderat. 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 dealgoritm greedy.Algoritmul funcioneaz n felul urmtor: creeaz o pdureF(o mulime de arbori), unde fiecare vrf din graf este un arbore separat creeaz o mulimeScare conine toate muchiile din graf att timp ctSeste nevid elimin o muchie de cost minim dinS dac acea muchie conecteaz doi arbori distinci, atunci adaug muchia n pdure, combinnd cei doi arbori ntr-unul singur altfel, ignor muchiaLa sfritul algoritmului, pdurea are doar o component care reprezint un arbore parial de cost minim al grafului.PSEUDOCOD: 1 funcia Kruskal(G) 2 pentru fiecare vrf v n G execut 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 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) atunci12 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