Sunteți pe pagina 1din 9

REFERAT

pe tema:
Arbori partiali in grafuri cu muchiile ponderate.
Arbori partiali economici. Algoritmul lui Prim.
Arbori partiali ai distantelor. Algoritmul lui Dijkstra


Profesor: Conf.dr. Popescu Dragos-Radu

Student:Andrusceac Serghei
Grupa:132
An I





Bucuresti 2010

1.Generalitati


2.Arbori partiali in grafuri cu muchiil ponderate.
- Definitii.
- Notatii.


3.Arbori partiali economici.
- Algoritmul lui Prim.


4.Arbori partiali ai distantelor.
- Algoritmul lui Dijkstra.













1.Generalitati

n matematic i informatic, teoria grafurilor studiaz proprietile grafurilor.
Un graf este o mulime de obiecte (numite noduri) legate ntre ele printr-o mulime de
muchii crora le pot fi atribuite direcii (n acest caz, se spune c graful este orientat).
Vizual, un graf poate fi reprezentat ca o mulime de puncte legate ntre ele prin linii (de
obicei curbe).

Unele aplicatii ale grafurilor:
- n unele problemele de sortare i cutare - elementele mulimii pe care se face sortarea sau
cutarea se pot reprezenta prin noduri ntr-un graf;
- schema logic a unui program se poate reprezenta printr-un graf orientat n care o
instruciune sau un bloc de instruciuni este reprezentat printr-un nod, iar muchiile
direcionate reprezint calea de execuie;
- n programarea orientat pe obiecte, ierarhia obiectelor (claselor) unui program poate fi
reprezentat printr-un graf n care fiecare nod reprezint o clas, iar muchiile reprezint
relaii ntre acestea.
De multe ori n practic apar probleme a cror rezolvare implic noiuni i rezultate din teoria
grafurilor.Considerm drept exemplu, proiectarea unei reele de telecomunicaii ce conecteaza
un numr dat de centrale, de amplasare cunoscut, astfel nct ntre oricare dou centrale s
existe legtur. Unei astfel de probleme i se poate asocia un graf neorientat n care mulimea
vrfurilor este format din centralele ce trebuie interconectate, iar mulimea muchiilor din
perechile de centrale ntre care se poate realiza o legtur direct, fiecare muchie are un cost
pozitiv (sau o lungime pozitiva). Pentru ca ntre oricare dou centrale s existe legtur, ar trebui
ca graful s fie conex, dar, ca n orice problem practic, intervine factorul de cost i atunci ar
fi de dorit s se selecteze un numr ct mai mic posibil de legturi directe ntre centrale, cu alte
cuvinte intereseaz un graf parial conex minimal al grafului, deci un arbore.




2.Arbori partiali in grafuri
cu muchii ponderate

Definiie:
Fie G = (X, U) un graf neorientat. Numim arbore parial al grafului G un graf parial care
este arbore.
Teorem:
Condiia necesar i suficient ca un graf s conin un arbore parial este ca graful s fie
conex.( Spunem ca un graf este conex dac ntre oricare dou vrfuri ale acestuia exist cel puin
un drum.)
Demonstraie:
Necesitatea
Presupunem c G = (V,E) admite un arbore parial H = (V, E'), E' _ E. H, fiind arbore,
este conex i adugnd la H muchiile din E-E' el rmne conex. Deci G conex.
Suficiena
Presupunem c G este conex. Dac G este conex minimal, el este arborele parial cutat.
Altfel, exist o muchie [x,y]eE astfel nct graful G
1
= (V, E-{[x,y]}) este conex. Dac G
1

este conex minimal, arborele parial cutat este G
1
, altfel continum procedeul de eliminare
a muchiilor pn cnd obinem un graf conex minimal, care va fi un arbore parial a lui G.
C.C.T.D.
Observaie
Procedeul descris are un numr finit de pai, deoarece la fiecare pas este eliminat o
muchie, iar G are un numr finit de muchii. Mai mult, putem demonstra urmtoarea
proprietate :
Propoziie
Fie G = (V, E) conex, |V| = n, |E| = m. Numrul de muchii ce trebuie nlturate pentru ca
graful s devin un arbore este numarul v(G) = m-n+1,adica numrul ciclomatic al grafului
dat.
Demonstraie:
Presupunem c prin eliminarea unui numr oarecare de muchii din G am obinut un graf G'
fr cicluri (o pdure). Fiecare din componentele conexe ale lui G' este un arbore.
Notm :
- p numrul componentelor conexe,
- n
i
numrul de vrfuri din componenta conex i, ie{1,2,...,p}
- m
i
numrul de muchii din componenta conex i, ie{1,2,...,p}.
Evident c m
i
= n
i
-1, ie{1,2,...,p}.
Numrul de muchi din G' este

( ) n n p i
i
p
=
=

1
1

Deci au fost eliminate m-n+p muchii. Cnd G' este arbore, deci conex (p=1), numrul
muchiilor eliminate este m-n+1. C.c.t.d.





3.Arbori partiali economici.
Algoritmul lui Prim.

Fie G = <V, E> un graf neorientat conex, unde V este multimea varfurilor si E este multimea
muchiilor.Numim arbore partial de cost minim acel arbore ce are multimea varfurilor X si a
muchiilor A iar suma lungimilor muchiilor din A este minima.Cautam deci o submultime A de cost
total minim care sa lege printr-un drum oricare doua noduri din X. Graful partial <X,A> este un
arbore si este numit arborele partial de cost minim al grafului G (minimal spanning tree)

Arborii partiali de cost minim pot fi costruiti muchie dupa muchie aplicand algoritmul lui Prim.
Voi prezenta mai jos un algoritm de tip Greedy a lui Prim ce determina arborele partial de cost
minim al unui graf.
(Algoritmii Greedy sunt algoritmii ce au ca principiu faptul ca fac alegerea care pare cea mai
buna la moment,adica fac o alegere locala optima in speranta ca aceasta sa duca la o solutie
optima globala.)


Algoritmul lui Prim.
Algoritmul greedy dat pentru determinarea arborelui partial de cost minim al unui graf se
datoreaza lui Prim (1957).
Algoritmul lui Prim
1. Initial, toate nodurile grafului se considera nevizitate
2. Se porneste de la un nod oarecare al grafului care se marcheaza ca vizitat
(nodul (a) in fig.1)
3. In permanenta vor fi mentinute doua multimi:
Multimea U a nodurilor vizitate (initial, U va contine doar nodul de start)
Multimea N\U a nodurilor nevizitate (N este multimea tuturor nodurilor)
4. La fiecare pas se alege acel nod din multimea N\U care este legat prin arc de cost
minim de oricare din nodurile din multimea U.
5. Nodul ales va fi scos din multimea N\U si trecut in multimea U.
6. Algoritmul continua pana cand U devine egal cu N.


Fig.1 Executia algoritmului lui Prim.
Muchiile umbrite sunt muchiile
arborelui minim de construit pentru graful
dat.Varfurile arborelui construit sunt colorate
cu negru.Nodul de inceput este luat ca fiind
nodul (a).

4.Arbori partiali ai distantelor.
Algoritmul lui Dijkstra.


Sa spunem de exemplu ca un automobilist dorete s gseasc cea mai scurt drum posibil de la
Chicago la Boston.
Avnd n fata o harta al Statelor Unite pe care distana dintre fiecare
intersecii este marcata,se pune intrebarea cum putem determina cel mai scurt traseu(drum) intre
cele doua orase?
O posibil modalitate este de a enumera toate rutele posibile din Chicago la Boston, se aduna
distantele pe fiecare traseu i se selecteaza cel mai scurt drum.Cu toate acestea, chiar dac vom
omite rutele ce conin cicluri, exista milioane de posibilitile-legturi, dintre care majoritatea
pur i simplu nu merit luate n considerare.

Astfel intalnim asa numita shortest-paths problem.

Fie G=(V,E) un graf orientat cu muchiile ponderate cu functia pondere . Ponderea
drumului este constituita din suma ponderilor muchiilor drumului.



Definim cel mai scurt drum de la u la v ca fiind:





Cel mai scurt drum dintre nodul u si nodul v este definit ca fiind orice drum p cu ponderea egala
cu:


Algoritmul lui Dijkstra.

Este un algoritm care calculeaza drumurile minime de la un nod al unui graf la toate
celelalte noduri din graf

Grafurile pe care poate lucra algoritmul lui Dijkstra sunt, in general, ponderate si orientate
arcele sunt orientate de la un nod la alt nod (nu se poate merge si invers) si au un anumit cost de care se
va tine seama in aflarea drumului minim.
Daca graful este neponderat (arcele nu au costuri asociate) atunci drum minim intre doua noduri se
considera drumul alcatuit din numar minim de arce.
Pentru a gasi drumul minim de la un nod X la un nod Y se poate aplica o cautare prin cuprindere
pornind de la nodul X prima aparitie a lui Y in coada algoritmului de cautare prin cuprindere presupune
existenta unui drum cu numar minim de arce de la X la Y, care poate fi reconstituit.


Cum lucreaza:

INPUT:
Algoritmul porneste de la un graf orientat si ponderat cu N noduri
De asemenea, e nevoie de un nod de start apartinand grafului acesta este nodul de
la care se doreste aflarea drumurilor minime pana la celelalte noduri din graf
OUTPUT:
Rezultatul algoritmului se prezinta sub forma unui tablou D cu N intrari, continand
distantele minime de la nodul de start la toate celelalte noduri din graf De
asemenea, tot ca rezultat se poate obtine si arborele drumurilor minime (in cazul in
care ne intereseaza nu numai lungimile minime ale drumurilor, ci si drumurile
propriu-zise) acesta este un arbore generalizat care se va obtine sub forma unui
tablou T cu N intrari (implementarea cu indicatori spre parinte).


Fie X nodul de start acesta se marcheaza ca vizitat .
Ideea gasirii drumului minim de la X la un un alt nod este cautarea treptata: se presupune
ca drumul minim este alcatuit dintr-un singur arc (arcul direct intre X si nodul tinta, care
poate sa nu existe, costul sau fiind infinit in acest caz), apoi se cauta drumuri mai scurte
alcatuite din 2 arce, apoi din 3, etc. (un drum minim nu poate avea mai mult de N-1
arce), deci algoritmul are N-1 pasi (al N-lea este banal).
Dupa pasul k (1 k N-1), tabloul D va contine lungimile drumurilor minime de la nodul
X la celelalte noduri, toate aceste drumuri fiind alcatuite din maxim k arce.
Astfel, D[Y] = L dupa pasul k inseamna ca de la X la Y exista un drum minim de lungime
L alcatuit din maxim k arce.
Deci, dupa pasul k, au fost gasite numai drumurile minime alcatuite din maxim k arce
abia la finalul algoritmului (dupa pasul N-1) drumurile minime obtinute sunt definitive, ele
fiind drumuri minime alcatuite din maxim N-1 arce.

La inceputul fiecarui pas k avem un set de k-1 noduri marcate (in cadrul pasilor
precedenti) nodurile marcate sunt cele pentru care se cunoaste drumul minim (initial,
doar nodul de start este marcat deoarece doar pentru el se cunoaste drumul minim)
In cadrul pasului k trebuie executate 3 operatiuni:
Se gaseste acel nod Y nemarcat care are D[Y] minim (acesta este singurul dintre
nodurile nemarcate pentru care se poate spune sigur ca drumul minim are lungimea
D[Y]) pentru celelalte noduri nemarcate valoarea corespunzatoare din tabloul D
s-ar putea sa nu reprezinte lungimea drumului minim ci un drum minim intermediar
(alcatuit din maxim k-1 arce) care poate fi imbunatatit in cadrul pasilor viitori ai
algoritmului
Nodul Y se marcheaza ca vizitat
Pentru fiecare nod Z ramas nemarcat se executa urmatorul algoritm:


if D[Z] > D[Y] + Arc(Y , Z) then begin
D[Z] := D[Y] + Arc(Y , Z);
T[Z] := Y
end







Bibliografie

1.Cormen, Leiserson, Rivest, Steinm , Introduction to algorithms (2001)

2.Dragos Radu-Popescu, Combinatorica si teoria grafurilor,editura SSMR.

3... , , , 1999.

4. Wikipedia.org

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