Sunteți pe pagina 1din 9

Arbori

1. Definiții. Proprietăți

Se numeste Arbore un graf conex si fara cicluri.Termenul de „arbore” din teoria grafurilor a fost folosit
pentru prima dată de Cayley în anul 1857. El a plecat de la o analogie cu noțiunea de „arbore” din
botanica.

 Fie G un graf neorientat. Un graf parțial H al lui G cu proprietatea că H este arbore se numește
„arbore parțial” al lui G.

 Un graf neorientat G conține un arbore parțial dacă și numai dacă G este conex.

 Un graf neorientat care nu conține cicluri se numește „pădure” (e format din cel putin 2 arbori).
Pădure parțială

„Pădurea parțială” este un concept care îl generalizează pe cel de arbore parțial, în cazul grafurilor
neconexe. Astfel o pădure parțială este un graf parțial format din reuniunea arborilor parțiali ai fiecărei
componente conexe a grafului. O definiție echivalentă este aceea de graf parțial aciclic cu număr maxim de
muchii.

Teoreme și propoziții

 Teorema. Fie un graf neorientat G=(V,E), unde V e mulțimea vârfurilor, iar E cea a muchiilor sale.
Următoarele afirmații sunt echivalente:

1. G este arbore.

2. G are n-1 muchii şi nu conţine cicluri

3. G are n-1 muchii şi este conex

4. oricare două vârfuri din G sunt unite printr-un unic lant elementar

5. G este un graf conex minimal („minimal” se numește proprietatea unui graf, că dacă i se elimină
orice muchie, se obține un graf neconex).

6. G este un graf fără cicluri maximal („maximal” se numește proprietatea unui graf, că dacă i se
adaugă orice muchie, se obține un graf care are măcar un ciclu, și deci nu e arbore).

PROPOZITII.

 Orice arbore cu n vârfuri are n-1 muchii.

 Daca F este o padure de ordinul n (ARE N VARFURI) cu k componente conexe atunci F contine n −
k muchii.

 Un graf de ordinul n este arbore daca si numai daca este conex si contine n − 1 muchii.

 Un graf de ordinul n este arbore daca si numai daca este aciclic si contine n − 1 muchii.

 Fie T un arbore de ordin n ≥ 2. Atunci T are cel putin doua frunze (varfuri terminale).

OBS. Determinarea unui arbore parțial se poate face folosind un algoritm de parcurgere a grafului
(BFS sau DFS). În acest caz se obține un arbore parțial cu rădăcină, care poate fi reprezentat prin
intermediul vectorului de tați.

Un graf conex cu n vârfuri și m muchii conține m-(n-1) cicluri elementare distincte.

2. ARBORI PARTIALI DE COST MINIM (APM)

 Ip : - Fie G un graf conex cu n vârfuri și m muchii.

- Fiecarei muchii i se asociaza un cost de parcurgere ( >0).

 C: Să se determine un arbore parțial al grafului dat, de cost minim.

OBS. - Costul unui arbore = suma costurilor muchiilor arborelui.

- Arborele partial nu este unic. Costul este unic!


2.1. Algoritmul lui Kruskal (Tehnica Greedy)

http://campion.edu.ro/arhiva/www/arhiva_2009/seds/14/index.htm

Pornind de la un graf cu n noduri izolate (n componente conexe), se unifică aceste componente prin
adaăgarea a câte unei muchii din șirul de muchii sortat crescător după cost. OBS> muchia [x,y] din
șirul sortat este adăugată doar dacă x și y nu sunt în aceeași componentă conexă. Prin alegerea a
celor mai “ieftine” n-1 muchii se construiește APM

Pas 1. - Se ordonează crescător după cost vectorul muchiilor.


- Se utilizează un vector V cu def : V[i]=i, adică nodul i se află în componenta conexă cu
numărul i (i=1,2,,,,n)
- Cost_APM=0
Pas 2. Cât timp nu au fost selectate n-1 muchii execută
2.1. Se alege prima muchie [x,y] din vectorul de muchii cu prop ca V[x]≠V[y] , adică
nodurile x și y sunt în componente conexe distincte.
2.2. Se unifică componenta conexă a nodului x cu cea a nodului y, păstrând numărul cel
mai mic al componentei conexe (adică, în vectorul V se înlocuiește fiecare
V[i]=max(V[x],V[y]) cu V[i]=min(V[x],V[y])
2.3. Cost_APM=Cost_APM+Cost([x,y])
2.4. Mergi la pasul 2.
Pas 3. Stop. Scrie Cost_APM

Vector muchii sortat :


([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;

i
1 2 3 4 5 6

V[i] 1 2 3 4 5 6

Pas 2. Se alege [1,3] Cost_APM=1


Vector muchii sortat :
([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;

i 1 2 3 4 5 6

V[i] 1 2 3 1 4 5 6

Pas 2. Se alege [4,6] Cost_APM=1+2


Vector muchii sortat :
([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;
i 1 2 3 4 5 6

V[i] 1 2 1 4 5 6 4

Pas 2. Se alege [2,5] Cost_APM=1+2+3


Vector muchii sortat :
([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;

i
1 2 3 4 5 6

V[i] 1 2 1 4 5 2 4
Cost_APM=1+2+3+4
Pas 2. Se alege [3,6]
Vector muchii sortat :
([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;

i
1 2 3 4 5 6

V[i] 1 2 1 4 1 2 4 1
Cost_APM=1+2+3+4+5=15
Pas 2. Se alege [2,3]
Vector muchii sortat :
([1,3], 1) ; ([4,6],2) ; ([2,5],3) ; ([3,6],4) ; ([1,4],5) ;
([2,3], 5) ; ([3,4],5) ; ([5,6],5) ; ([1,2],6) ; ([3,5],6) ;

i 1 2 3 4 5 6
V[i]
1 2 1 1 1 2 1 1

S-au ales n-1 muchii  arborele partial din figura


alăturată.

https://en.wikipedia.org/wiki/Kruskal%27s_algorithm#/media/File:MST_kruskal_en.gif
2.2. Algoritmul lui Prim (Tehnica Greedy)
- Graful este dat prin matricea costurilor :

C[i][j] = costul muchiei [i,j], daca exista, altfel C[i][j]= 0,

Algoritm:

- Se porneste initial, ca si in algoritmul lui Kruskal, cu n arbori distincti (nodurile izolate), si la


fiecare pas k vom avea un arbore cu k+1 varfuri si n-k-1 arbori cu cate un singur varf fiecare
- Initial se alege muchia de cost minim.
- La pasul k se alege muchia de cost minim care are o extremitate in arborele cu mai multe varfuri
iar cealalta intr-unul din ceilalti arbori

https://ro.wikipedia.org/wiki/Algoritmul_lui_Prim#/media/File:Prim_Algorithm_0.svg
3. ARBORI CU RADACINA

Se numeste Arbore cu rădacină un graf neorientat conex fără cicluri în care unul din noduri este
desemnat ca rădăcină. Nodurile pot fi aşezate pe niveluri începând cu rădăcina care este plasată pe
nivelul 1 (sau zero).

Rădăcină = Nod special care generează aşezarea unui arbore pe niveluri; Această operaţie se
efectuează în funcţie de lungimea lanţurilor prin care celelalte noduri sunt legate de rădăcină.

Descendent = într-un arbore cu rădăcină nodul y este descendentul nodului x dacă este situat pe un
nivel mai mare decât nivelul lui x şi există un lanţ care le uneşte şi nu trece prin rădăcină.

Descendent direct / fiu = într-un arbore cu rădăcină nodul y este fiul (descendentul direct)
nodului x dacă este situat pe nivelul imediat următor nivelului lui x şi există muchie între x şi y.

Ascendent = într-un arbore cu rădăcină nodul x este ascendentul nodului y dacă este situat pe un
nivel mai mic decât nivelul lui y şi există un lanţ care le uneşte şi nu trece prin rădăcină.

Ascendent direct / părinte = într-un arbore cu rădăcină nodul x este părintele (ascendentul direct)
nodului y dacă este situat pe nivelul imediat superior (cu număr de ordine mai mic) nivelului lui y şi
există muchie între x şi y.

Fraţi = într-un arbore cu rădăcină nodul x este fratele nodului y dacă au acelaşi părinte.
Frunză = într-un arbore cu rădăcină nodul x este frunză dacă nu are nici un descendent direct

Se numeste inaltimea arborelui cu rădăcină nivelul maxim al nodurilor unui arbore (=lungimea
maxima a unui lant elementar ce uneste radacina cu o frunza)
O altă definiție a înălţimii unui arbore cu rădăcină: înălțimea=diferenţa dintre nivelul maxim din arbore
şi nivelul minim (nivelul rădăcinii). Pentru arborele din desen, înălţimea este 3-0=3.
Observaţie: Într-un arbore orice nod este legat de rădăcină printr-un lanţ unic de lungime minimă
(corespunzător parcurgerii BF de la grafuri).

 Daca intr-un arbore eliminam radacina, atunci obtinem subarbori.


Arbore cu rădăcină - Nodul 0 este rădăcină.
- Nodurile 4, 6 sunt fii nodului 5.
- Nodul 6 este părintele nodurilor 3,7 şi 11;
- Nodul 9 este descendentul lui 4
- Nodul 2 este ascendentul direct al lui 1
- Nodul 4 este ascendentul lui 1
- Nodurile 1,8, 10,3, 11 şi 7 sunt frunze
- Nodurile 3,7 şi 11 sunt fraţi.
- Inaltimea=3

Un subarbore B pentru arborele A este orice arbore care îndeplineste conditiile:


1. nodurile lui B sunt si noduri în A;
2. muchii lui B sunt si muchii în A;
3. orice frunza din A care pentru care exista un lant elementar de la această frunză la radacina ar-
borelui B trebuie sa apartina multimii nodurilor lui B.
Observatie. Conditia 3 este esentiala!.

4. Metode de memorare a arborilor


Arborele fiind un caz particular de graf neorientat, îl putem reprezenta ca un graf. Astfel, pentru
reprezentarea unui arbore se pot utiliza:

1. Metode specifice grafurilor:

-matricea de adiacenta

- liste de adiacente

2. Metode specifice arborilor:

-prin legaturi de tip TATA. Arborele se reprezinta sub forma unui vector t cu n componente (n
reprezinta numarul de noduri). Daca t[i]=k atunci nodul I este descendent al nodului k. Daca
nodul k este rădăcină atunci t[i]=0.
Fie arborele cu radacina 5 din figura:
vectorul de tip tata este:
1 2 3 4 5 6 7 8 9 10 11
2 4 6 5 0 5 6 9 4 9 6

Legatura de tip TATA se mai numeste si legatura cu referinte ascendente.

Legatura de tip TATA este determinata si de modul in care am ales nodul radacina. Spre exemplu daca
vom considera nodul 4 ca fiind radacina vom obtine o alta solutie.

5. Metode de parcurgere:

Metodele de parcurgere sunt cele specifice grafurilor: in


adancime si in latime.
Se parcurg asemeni grafurilor neorientate: parcurgerea în latime
(BF) si parcurgerea în înaltime (DF).
BF: (1,2,5,6,3,4,7,8,9,10)
DF=(1,2,3,4,5,7,8,9,10,6)
6. Probleme propuse:

1. Pornind de la definitia arborelui: un graf neorientat care este conex sin nu contine cicluri sa se
determine daca un graf neorientat este arbore. Graful este memorat prin matricea de adiacenta.
2. Definitia 2 – un graf neorientat cu n noduri care are n-1 muchii si nu contine cicluri. Pornind de la
definitia 2 sa se determine daca un graf neorientat memorat prin matricea de adiacenta poate fi
arbore.
3. Fie arborele din figura alaturata. Sa se reprezinte arborele prin: matricea de adiacenta, liste de
adiacenta. Sa se memoreze arborele prin legatura de tip TATA, considerand nodul 1 radacina si apoi
nodul 4 radacina
4. Fie un arbore memorat prin matricea de adiacenta. Sa se construiasca vectorul de tip tata stiind ca
nodul x citit de la tastaura este radacina.
5. Dintr-un fisier se citesc : numarul de noduri apoi vectorul de tip tata.
a) sa se determine radacina
b) afisati frunzele (nodurile terminale)
c) pentru un nod citit sa se determine: fii si parintele
d) sa se determine nodul cu cei mai multi descendenti
6. Arbore genealogic. Dintr-un fisier se citesc numele a n persoane. Persoanele sunt numerotate de
la 1 la n. In continuare se citesc m perechi de nume x y cu semnificatia x este parintele lui y. Sa se
determine:
a) stramosul comun
b) persoanele fara descendenti
c) parintele unei persoane al carei nume se citeste de la tastatura
d) fii unei persoane al carei nume se citeste de la tastatura
e) daca doua personae al caror nume se citesc de la tastatura sunt frati
f) toti ascendentii unei personae
g) toti descendentii unei persoane
h) sa se determine bunicul unei persoane
i) se citesc numele a doua persoane x,y. Sa se determine daca x este ascendentul lui y (direct
sau indirect)
j) din a cata generatie face parte o persoana citita?
k) câte generatii are arborele
l) verii unei persoane

7. Se considera un arbore dat prin vectorul TATA. Radacina arborelui este x. Se memoreaza in fiecare nod
al arborelui numere naturale nenule. Sa se determine lantul elementar radacina-frunza avand cea mai
mare suma a numerelor asociate

8. Numarul de niveluri al unui arbore depinde de radacina aleasa. Dandu-se un graf conex si fara cicluri
prin listele de adiacenta, sa se determine un nod care sa fie radacina astfel incat numarul de niveluri sa fie
maxim (minim).
9· Se citesc doi arbori, unde fiecare are nodurile 1,2,…,n si sunt reprezentati prin legaturi de tip
tata. Sa se decida daca ei reprezinta unul si acelasi arbore (in reprezentari diferite).
10. Sa se afiseze nodurile unui arbore pe niveluri. Arborele este dat prin matricea de adiacenta si are
radacina x.
http://campion.edu.ro/arhiva/www/arhiva_2009/seds/14/index.htm

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