Sunteți pe pagina 1din 6

Problema Arborelui Minim

1. DEFINITII
Se numeste graf ponderat ("weighted graph") un graf in cadrul cruia fiecrui arc ii este asociat o valoare. Valoarea asociata arcului are semnificaia de "cost" a legaturii intre cele 2 noduri sau de "distanta" intre noduri . Fie G=(N,A) un graf conex in care fiecare arc (u,v) apartinand lui A are costul atasat c(u,v). Un arbore de acoperire al lui G este arborele liber care cuprinde toate nodurile din N si este un subgraf al lui G. Costul unui arbore de acoperire este suma costurilor tuturor arcelor cuprinse in arbore. Aplicatii tipice ale arborilor de acoperire minimi se regasesc in proiectarea retelelor de comunicatii. Exista mai multe metode de determinare a unui arbore minim asociat unui graf orientat; Se remarca algoritmul lui Prim, tehnica cautarii bazata pe prioritate si algoritmul lui Kruskal.

2. Algoritmul lui Prim


Algoritmul se bazeaza pe o proprietate, denumita si proprietatea arborilor de acoperire minimi. Proprietatea arborilor de acoperire minimi se enunta astfel: Fie G=(N,A) un graf conex si o funtie de cost definita pe arcele sale. Fie U o submultime a multimii de noduri N. Daca (u,v) este un arc cu costul cel mai scazut astfel incat uiU iar viN-U, atunci exista un arbore de acoperire minim care include arcul (u,v).

Algoritmul lui Prim incepe prin introducerea primului nod (arbitrar) in multimea U (U=multimea nodurilor adaugate deja la arborele de acoperire). In continuare, intr-o maniera ciclica, este construit pas cu pas arborele de acoperire minim. La fiecare pas se selecteaza arcul cu cost minim (u,v) care conecteaza multimea U cu multimea N-U (uiU , viN-U) si se adauga acest arc arborelui, iar nodul v multimii U. Se repeta acest procedeu pana cand U=N.

Determinarea arborelui de acoperire minim prin metoda cautarii "bazata pe prioritate"


Dupa cum s-a aratat la tehnicile de traversare a grafurilor, nodurile pot fi divizate in trei clase: -clasa arbore ( noduri vizitate) - cuprinde nodurile care au fost extrase din structura de date utilizata in traversare -clasa vecinatate - cuprinde nodurile adiacente celor din arbore (au fost luate in considerare dar nu au fost inca vizitate) -clasa neintalnite - cuprinde nodurile la care nu s-a ajuns inca Pentru a parcurge in mod sistematic o componenta conexa a unui graf se introduce un nod oarecare al componentei in clasa "vecinatate" si restul in clasa neintalnite. In continuare, pana la vizitarea tuturor nodurilor, se aplica urmatorul procedeu: se muta un nod x din clasa vecinatate in clasa arbore si se trec in clasa vecinatate toate nodurile neintalnite adiacente lui x. Metodele de parcurgere se diferetiaza in functie de politica de selectie a nodului x din vecinatate care e trecut in arbore. Determinarea arborelui de acoperire minim se poate asimila cu acea traversare a grafului in care se alege din clasa vecinatate nodul cu prioritatea maxima, adica cel la care conduce arcul cu ponderea minima.

Exemplu :

Constructia arborelui de acoperire minim rezultat in urma algoritmului de cautare bazata pe prioritati parcurge urmatorii pasi: Se considera nod de start nodul 1 si se marcheaza ca vizitat (este trecut in clasa arbore). Clasa vecinatate va contine nodurile 2 [la dist 2 de 1] si 5[ la dist 5 de 1]. Urmatorul pas va selecta nodul 2, aflat la distanta 2 de singurul nod al arborelui. Clasa vecinatate va fi formata din nodurile 3[dist 3] de 2, 4[dist 7 de 2], 5[dist 5 de 1]. Urmatorul nod selectat va fi 3, aflat la distanta minima 3 de nodul 2 din arbore iar clasa vecinatate va deveni 4[dist 7 de 2], 5[dist 4 de 3], 6[dist 8 de 3]. Urmatorul nod selectat va fi 5, aflat la distanta 4 de nodul 3. In clasa vecinatate vor fi nodurile 4[dist 7 de 2] si 6[dist 8 de 3]. Se va alege nodul 4, clasa vecinatate contine nodul 6[dist 6 de 4] , nod care va fi selectat in pasul urmator, rezultand nodul 7[dist 9 de 6] in clasa vecinatate, care va fi ultimul selectat.

3.Algoritmul lui Kruskal


Fie graful G=(N,A), N multimea nodurilor si A multimea arcelor. Algoritmul lui Kruskal de determinare a arborelui de acoperire minim T este un algoritm de tip Greedy, care alege la fiecare pas arcul cu cost minim dintre arcele grafului ramase inca in in evidenta. Arcul este adaugat daca aceasta operatie nu duce la formarea unui ciclu.

Initial, se formeaza o multime de N componente conexe, alcatuite fiecare din cate un nod si toate arcele A ale lui G se afla in evidenta pentru a fi eventual selectate. La fiecare pas, algoritmul scoate arcul de cost minim dintre arcele inca neselectate. Daca capetele sale fac parte din componente conexe diferite arcul este adaugat lui T, si cele doua componente conexe sunt reunite. Altfel, daca cele doua capete sunt in cadrul aceleiasi componente conexe, arcul este ignorat. Algoritmul continua pana la ramanerea unei singure componente conexe ( in ipoteza ca graful initial a fost un graf conex). Se propune ca implementarea algoritmului sa foloseasca o coada bazata pe prioritati pentru pastrarea ordonata a arcelor, si un TDA multime de submultimi pe care sunt definiti operatorii UNIUNE si CAUTA pentru memorarea componentelor conexe.

Exemplu : Arborele de acoperire minim se poate determina folosind algoritmul lui Kruskal urmand secventa de pasi de mai jos :

Se selecteaza arcul avand costul minim , arcul (1,2) de cost 2 si se adauga la arbore. Urmatorul arc care se selecteaza este arcul (2,3) de cost 3 si se adauga la arbore. Urmeaza arcul (3,5) de cost 4 care se adauga si acesta la arbore. Urmatorul arc in ordinea costurilor este arcul (1,5) de cost 5; acesta insa nu poate fi adaugat, deoarece capetele sale apartin aceleiasi componente conexe si s-ar forma un ciclu. Se adauga arcul (4,6) de cost 6, apoi arcul (2,4) de cost 7. Urmatorul arc in ordinea crescatoare a costurilor este (3,6) de cost 8,dar acesta nu poate fi adaugat, avand capetele in aceeasi componenta conexa. Urmeaza arcul (6,7) de cost 9. In acest moment, toate nodurile apartin aceleiasi componente conexe, deci constructia arborelui a fost incheiata. Arborele de acoperire minim rezultat este reprezentat in figura 3 Arcele care fac parte din arbore au fost reprezentate ingrosat si numerotate in ordinea selectionarii lor. Se observa ca s-a obtinut acelasi arbore minim de acoperire ca si in cazul aplicarii algoritmului de cautare bazata pe prioritati; Acest fapt insa nu este o regula generala, valabila in cazul tuturor grafurilor. Un graf poate avea mai multi arbori de acoperire minimi. In cadrul acestui exemplu, se observa insa ca ordinea de adaugare a arcelor de arbore nu este identica, chiar pentru arbori rezultati identici: arcul (2,4) care a fost al 4-lea in cazul algoritmului de cautare bazata pe prioritati este in cazul algoritmului lui Kruskal al 5-lea selectat.

4 . DRUMUL MINIM
Problema drumului minim se refera la a gasi acel drum intr-un graf ponderat care conecteaza nodurile x si y si care se bucura de proprietatea ca suma ponderilor arcelor care il compun este minima. Daca graful nu este ponderat, problema se reduce la determinarea acelui drum care conecteaza nodurile x si y si care este alcatuit dintr-un numar minim de arce. Algoritmul de cautare prin cuprindere, prezentat in lucrarea anterioara, rezolva aceasta problema.
Drumul minim intre doua noduri ale unui graf ponderat se poate determina prin tehnica cautarii bazate pe prioritate.

5. Concluzii
Un arbore minim de acoperire al unui graf este un arbore care conine toate nodurile, i n plus acestea sunt conectate prin muchii care asigur un cost total minim. Determinarea unui arbore minim de acoperire pentru un graf este o problem cu aplicaii n foarte multe domenii: reele, clustering, prelucrare de imagini. Cei mai cunoscui algoritmi, Prim i Kruskal, rezolv problema n timppolinomial. Performana algoritmilor depinde de modul de reprezentare a structurilor de date folosite.

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