Sunteți pe pagina 1din 9

Algoritmul lui Kruskal

Problema arborelui parŃial de cost minim. Fie G = ( X , U ) un graf


neorientat conex, c : U → ( 0, ∞ ) o funcŃie, numită funcŃie cost a muchiilor lui G
şi H = ( X , V ) un graf parŃial al lui G . Numim costul lui H suma costurilor
tuturor muchiilor din V , adică valoarea c ( H ) = ∑ c ( u ) . Se pune problema
u∈U
determinării în G a unui graf parŃial conex de cost minim.
DefiniŃie. Fie G = ( X , U ) un graf neorientat conex, c : U → ( 0, ∞ )
funcŃia cost a muchiilor lui G şi Tcm = ( X , Vcm ) un arbore parŃial cu proprietatea
că pentru orice arbore parŃial T = ( X , V ) avem c (Tcm ) ≤ c (T ) . Atunci spunem
că Tcm este arbore parŃial de cost minim al lui G .

Teorema 3. Fie G = ( X , U ) un graf neorientat conex, c : U → ( 0, ∞ )
funcŃia cost a muchiilor lui G şi H = ( X , V ) un graf parŃial al lui G . Dacă H
este graf parŃial conex de cost minim, atunci H este arbore parŃial de cost minim.
DemonstraŃie. Presupunem că H nu este arbore parŃial, deci H nu este
arbore. Deoarece H este conex, ca H să nu fie arbore trebuie ca H să nu fie
aciclic. Astfel, există un ciclu C în H şi fie e o muchie a ciclului C .

( )
Considerăm graful H ′ = X , V \ {e} . Acest graf este conex, pentru că se
obŃine din H prin eliminarea unei muchii ce aparŃine unui ciclu. Din calculul
costurilor avem:
c ( H ) = ∑ c (u ) = c ( e) + ∑ c ( u ) > ∑ c ( u ) = c ( H ′)
u∈V u∈V \{e} u∈V \{e}

de unde rezultă că H nu este de cost minim. ContradicŃie.



Algoritmul 2. (Kruskal).
1. Considerăm că L ( i ) = i pentru fiecare i = 1, 2,..., X , construim M ( j ) ,
. j = 1, 2,..., U reprezentând muchiile lui G în ordinea crescătoare a
costurilor, considerăm k = 0 (pentru numărarea muchiilor selectate) şi
j = 1 (pentru parcurgerea lui M ). Fie V = ∅ .
2. Dacă k ≥ n − 1 , atunci algoritmul se opreşte, muchiile din V determină
arborele parŃial de cost minim, altfel se continuă.
3. Considerăm { p, q} = M ( j ) .
4. Dacă L ( p ) = L ( q ) , atunci punem j = j + 1 şi mergem la 3, altfel se
continuă.
5. Punem k = k + 1 şi V = V ∪ {{ p, q}} .
6. Dacă L ( p ) < L ( q ) , atunci înlocuim în L toate valorile L ( q ) prin
L ( p ) , altfel înlocuim în L toate valorile L ( p ) prin L ( q ) .
7. Punem j = j + 1 şi mergem la 2.

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.

Exemplul 5. Fie un graf neorientat G = ( X , U ) cu X = {1, 2,3, 4,5, 6} şi
cu reprezentarea
5
1 2
1 3 4
2
3
5 4 6
3
2 4
1
3
în care valorile trecute pe muchii sunt valorile funcŃiei cost c : U → ℝ .

Dorim să determinăm un graf parŃial de cost minim al lui . Pentru


aceasta vom folosi algoritmul lui Kruskal prezentat mai sus.
Conform primului pas generăm vectorul L = (1, 2,3, 4,5, 6 ) . Ordonăm
muchiile în ordine crescătoare şi ne rezultă vectorul
M = ({1,5} , {3, 6} , {2, 4} , {3,5} , {1, 6} , {2,3} , {4,5} , {3, 4} , {2, 6} , 1, 2 .
Punem k = 0 , j = 1 şi V = ∅
Cum k = 0 şi n − 1 = 5 nu se îndeplineşte condiŃia din pasul 2 şi intervine
prima iteraŃie a algoritmului.
Prima iteraŃie
Considerăm muchia {1,5} . Deoarece L (1) = 1 ≠ 5 = L ( 5 ) se continuă cu
pasul 4 şi trecem la k = 1 şi adăugăm muchia considerată la V care devine astfel
{
V = {1,5} ..}
Deoarece L (1) = 1 < 5 = L ( 5 ) , conform pasului 5 înlocuim toate valorile
5 prin valoarea 1 şi astfel L ajunge la forma L = (1, 2,3, 4,1, 6 ) .
Se consideră j = 2 şi terminăm prima iteraŃie şi cum k = 1 şi
reluăm cu o nouă iteraŃie.
A doua iteraŃie
Muchia a doua din M este {3, 6} şi avem L ( 3) = 3 ≠ 6 = L 6 . Astfel
ajungem la k = 2 şi adăugând muchia la V , se obŃine V = {{1,5} , {3, 6} .
Cum L ( 3) = 3 < 6 = L ( 6 ) , prin schimbarea valorilor 6 cu 3 ajungem la
L = (1, 2,3, 4,1,3) şi iteraŃia se termină considerând j = 3 . În plus avem
n − 1 = 5 astfel că vom continua.
A treia iteraŃie
Următoarea muchie considerată este {2, 4} pentru care avem

L ( 2) = 2 ≠ 4 = L ( 4) şi ajungem la configuraŃia k =3 şi
V = {{1,5} , {3, 6} , {2, 4}}

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
.
Deoarece L ( 2 ) = 2 < 4 = L ( 4 ) prin schimbarea valorilor se obŃine
L = (1, 2,3, 2,1,3) şi după ce facem j = 4 vom continua cu o nouă iteraŃie
deoarece k = 3 şi n − 1 = 5 .
A patra iteraŃie
Luăm muchia {3,5} şi avem L ( 3) = 3 ≠ 1 = L ( 5 ) ceea ce generează nouă
structură k = 4 şi V = {{1,5} ,{3, 6} , {2, 4} , {3,5}} .
Acum avem L ( 3) = 3 > 1 = L ( 5 ) astfel că se înlocuiesc toate apariŃiile lui
3 prin valoarea 1 şi obŃinem L = (1, 2,1, 2,1,1) şi după ce ajungem la j = 5 vom
trece la următoarea iteraŃie deoarece k = 4 şi n − 1 = 5 .
A cincea iteraŃie
Noua muchie considerată este {1, 6} pentru care L (1) = 1 = L ( 6 ) astfel că
face j = 6 şi luăm o nouă muchie, {2,3} . Pentru aceasta L ( 2 ) = 2 ≠ 1 = L ( 3) şi
ca urmare vom ajunge la situaŃia k =5 şi
V = {{1,5} , {3, 6} , {2, 4} , {3,5} , {2,3}} .
RelaŃia exactă relativă la valorile din L este L ( 2 ) = 2 > 1 = L ( 3) şi astfel
se ajunge la L = (1,1,1,1,1,1) . Facem j = 7 . La revenirea la pasul 2 cu k = 5 şi
n − 1 = 5 condiŃia este îndeplinită pe egalitate şi astfel algoritmul se opreşte. Am
obŃinut graful parŃial H = ( X , V ) care este arbore parŃial de cost minim, costul
arborelui fiind CH = 1 + 1 + 2 + 2 + 3 = 9 . Arborele parŃial de cost minim are
reprezentarea

1 2
1
2

5 4 6
3
2
1
3

4.4. A rborescenŃe

DefiniŃie. Fie G = ( X , U ) un graf orientat conex şi aciclic. Dacă există


un unic vârf x0 ∈ X cu d − ( x0 ) = 0 şi pentru orice x ∈ X , x ≠ x0 avem
d − ( x ) ≠ 0 , spunem că G este o arborescenŃă (sau arbore orientat). x0 poartă
numele de rădăcină a arborescenŃei G . Vârfurile y pentru care d + ( y ) = 0 se
numesc vârfuri terminale sau frunze.

This PDF document was edited with Icecream PDF Editor.
Upgrade to PRO to remove watermark.
DefiniŃie. Fie A = ( X , U ) o arborescenŃă cu rădăcina x0 . Pentru un vârf
x ∈ X definim nivelul nodului prin l ( x0 ,..., x ) , unde ( x0 ,..., x ) este drumul
(unic) de extremitate iniŃială x0 şi extremitate finală x .

Exemplul 6. Considerăm graful orientat conex şi aciclic G = ( X , U ) cu
10 vârfuri şi care are reprezentarea

2 3

4 5 6 7 8

9 10
Graful G este conex deoarece există lanŃuri între oricare două vârfuri. El
este aciclic. De asemenea există un unic vârf (notat 1) pentru care gradul de intrare
este zero, iar celelalte vârfuri au gradul de intrare mai mare sau egal cu 1. Astfel,
graful orientat G este o arborescenŃă.
Deoarece d − (1) = 0 , rezultă că vârful 1 este rădăcina arborescenŃei.
Observând că d + ( 6 ) = 0 rezultă că 6 este o frunză a arborescenŃei.
MulŃimea frunzelor arborescenŃei G este mulŃimea {4, 6, 7,8,9,10} .
Se poate vedea că l (1, 2 ) = l (1,3) = 1 şi astfel vârfurile 2 şi 3 se găsesc pe
acelaşi nivel, şi anume pe nivelul 1. Avem şi l (1, 2,5,9 ) = l (1, 2,5,10 ) = 3 , deci
putem spune că vârfurile 9 şi 10 se găsesc pe acelaşi nivel 3.

DefiniŃia de mai sus clasifică vârfurile arborescenŃelor în funcŃie de
distanŃa lor faŃă de rădăcină. Această clasificare are ca efect o reprezentare în care
nodurile sunt poziŃionate pe fiecare nivel, cu rădăcina arborescenŃei în partea
superioară a imaginii.

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
Pentru o arborescenŃă A = ( X , U ) , dacă ( x, y ) ∈U , spunem că
x este
părintele (tatăl) lui y şi y este fiul (descendentul direct) lui x . Dacă x, y ∈ X
şi există drumul (unic) ( x, z1 ,..., zk , y ) , spunem că y este descendentul lui x .
DefiniŃie. Fie A = ( X , U ) o arborescenŃă. Dacă pentru orice x ∈ X
avem d + ( x ) ∈ {0,1, 2} . Spunem că A este o arborescenŃă binară (arbore binar).
Dacă d + ( x ) ∈ {0, 2} , spunem că A este o arborescenŃă binară completă (arbore
binar complet).

Exemplul 7. Considerăm arborescenŃa din imaginea de mai jos

2 3

4 5 6

7 8
care are ca răvădină vârful 1. Avem
d + ( 4 ) = d + ( 5 ) = d + ( 7 ) = d + ( 8) = 0 ,
d + ( 3) = 1
şi
d + (1) = d + ( 2 ) = d + ( 6 ) = 2 ,
deci orice vârf are gradul de ieşire în mulŃimea {0,1, 2} . Rezultă că arborescenŃa
considerată este un arbore binar.
Deoarece d + ( 3) = 1 rezultă că arborele binar nu este complet.. Dacă am
adăuga vârful 9 şi arcul ( 3,9 ) se obŃine d + ( 3) = 2 şi d + ( 9 ) = 0 şi vom obŃine un
arbore binar complet. Acesta are reprezentarea

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
1

2 3

4 5 6 9

7 8

Teorema 4. Pentru orice n ∈ ℕ *
există A = ( X , U ) o arborescenŃă
binară astfel încât
{x ∈ X d + ( x ) = 0} = n
(numărul vârfurilor terminale să fie egal cu n ).
DemonstraŃie. Dacă n = 1 , atunci X = { x0 } şi U = ∅ . Astfel

{
A1 = ( X , U ) este arborescenŃă binară şi x ∈ X d + ( x ) = 0 = { x0 } = 1 . }
Dacă n = 2 , atunci fie X 1 = { x1 , x2 } . Considerăm X 2 = { x1,2 } şi
mulŃimea de arce U1 = {( x
1,2 }
, x2 ) , ( x1,2 , x2 ) . Deoarece X 2 are un element, există
o arborescenŃă binară A1 = ( X 2 , U 2 ) cu un nod terminal. Fie arborescenŃa
A2 = ( X 1 ∪ X 2 , U1 ∪ U 2 ) care este o arborescenŃă binară şi are numărul de noduri
terminale X 1 = { x1 , x2 } = 2 = n .
Presupunem că pentru orice i = 1, 2,..., k există Ai = (Yi , Vi ) arborescenŃă
binară cu numărul de vârfuri terminale egal cu i .
Considerăm n = k + 1 .
Dacă k + 1 este număr par, deci k +1 = 2 p , considerăm
X 1 = { x1 , x2 ,..., x2 p −1 , x2 p } . Fie X 2 = { x1,2 , x3,4 ,..., x2 p −1,2 p } pentru care avem
X 2 = p ≤ k . Considerăm mulŃimea de muchii

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
U1 = {( x1,2 , x1 ) , ( x1,2 , x2 ) ,..., ( x2 p −1,2 p , x2 p −1 ) , ( x2 p −1,2 p , x2 p ) .}
Deoarece X 2 = p ≤ k , rezultă că există Ap = (Yp , V p ) o arborescenŃă
binară care are p noduri terminale. Fie atunci Ak +1 = X 1 ∪ Yp , U1 ∪ V p care este ( )
o arborescenŃă binară care are numărul de noduri terminale egal cu
X 1 = { x1 , x2 ,..., x2 p −1 , x2 p } = 2 p = k + 1 .
Dacă k +1 este număr impar, deci k + 1 = 2q + 1 , considerăm
X 1 = { x1 , x2 ,..., x2 q −1 , x2 q , x2 q +1} . Fie X 2 = { x1,2 , x3,4 ,..., x2 q −1,2 q } pentru care
avem X 2 = q < k . Considerăm mulŃimea de muchii
U1 = {( x 1,2 }
, x1 ) , ( x1,2 , x2 ) ,..., ( x2 q −1,2 q , x2 q −1 ) , ( x2 q −1,2 q , x2 q ) .
Deoarece X 2 = q < k , pentru X 2 ∪ { xq +1} cu număr de elemente
q + 1 ≤ k există Aq +1 = (Yq +1 , Vq +1 ) o arborescenŃă binară care are q + 1 noduri
( )
terminale. Fie atunci Ak +1 = X 1 ∪ Yq +1 , U1 ∪ Vq +1 care este o arborescenŃă binară
care are numărul de noduri terminale egal cu
X 1 = { x1 , x2 ,..., x2 q −1 , x2 q , x2 q +1} = 2q + 1 = k + 1 .
Folosind teorema inducŃiei complete, obŃinem că afirmaŃia din enunŃ este
adevărată pentru orice n ∈ ℕ* .

PropoziŃia 4. Fie A = ( X , U ) o arborescenŃă binară completă în care

{x ∈ X d + ( x ) = 0} = n . Atunci U = 2 ( n − 1) .
DemonstraŃie. Pentru n = 1 , conform construcŃiei din demonstraŃia
teoremei 4, V1 = ∅ şi astfel V1 = 0 = 2 (1 − 1) . De semenea, pentru n = 2 avem
V2 = {( x
1,2 }
, x2 ) , ( x1,2 , x2 ) şi astfel V2 = 2 = 2 ( 2 − 1) .
Presupunem că pentru orice i = 1, 2,..., k enunŃul propoziŃiei este adevărat
şi fie n = k + 1 .
Dacă k + 1 este număr par, deci k + 1 = 2 p , conform construcŃiei din
(
demonstraŃia teoremei 4, avem Ak +1 = X 1 ∪ Yp , U1 ∪ V p şi Ap = Yp , V p ) ( ) este o
arborescenŃă binară completă cu p vârfuri terminale şi astfel V p = 2 ( p − 1) . Din
construcŃie avem U1 = 2 p . Cum U1 ∩ V p = ∅ , rezultă că
Vk +1 = U1 ∪ V p = U1 + V p = 2 p + 2 ( p − 1) = 2 ( 2 p − 1) = 2 ( k + 1 − 1) = 2k .

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
Dacă k + 1 este număr impar, deci k + 1 = 2q + 1 , conform construcŃiei
din demonstraŃia teoremei 4, avem Ak +1 = ( X 1 ∪ Yq +1 , U1 ∪ Vq +1 ) şi
Aq +1 = (Yq +1 , Vq +1 ) este o arborescenŃă binară care are q + 1 noduri terminale şi
astfel Vq +1 = 2 ( q + 1 − 1) = 2q . Din construcŃie avem U1 = 2q . Cum
U1 ∩ Vq +1 = ∅ , rezultă că
Vk +1 = U1 ∪ Vq +1 = U1 + Vq +1 = 2q + 2q = 2 ( 2q + 1 − 1) = 2 ( k + 1 − 1) = 2k .
Din teorema inducŃiei complete rezultă că enunŃul din propoziŃie este
adevărat pentru orice n ∈ ℕ* .

DefiniŃie. Fie A = ( X , U ) o arborescenŃă binară şi

{
DT = s ∈ ℕ ∃x ∈ X cu d + ( x ) = 0 si l ( x0 ,..., x ) = s }
(mulŃimea distanŃelor de la rădăcină la fiecare vârf terminal). Dacă
max DT − min DT ≤ 1 , spunem că A este o arborescenŃă binară echilibrată.

Exemplul 8. Pentru ambele grafuri orientate din exemplul 7 avem
DT = {2,3} de unde
max DT − min DT = 3 − 2 = 1 ≤ 1
şi astfel ambele grafuri sunt arborescenŃe binare echilibrate.

Teorema 5. Fie A = ( X , U ) o arborescenŃă binară. Următoarele
afirmaŃii sunt echivalente:
1. A este o arborescenŃă binară echilibrată;
2. pentru orice x ∈ X cu d + ( x ) = 0 , dacă X = 2m , atunci
m = l ( x0 ,..., x ) şi dacă 2 < X < 2 m m +1
, atunci l ( x0 ,..., x ) ∈ {m, m + 1} .
DemonstraŃie

Presupunem că 2m ≤ X < 2m +1 şi există x ∈ X , d + ( x ) = 0 şi
l ( x0 ,..., x ) < m . Presupunând că nivelul l ( x0 ,..., x ) este complet, atunci şi
nivelurile anterioare sunt complete şi astfel numărul total de vârfuri din nivelurile
1, 2, ..., l ( x0 ,..., x ) este
(
l x0 ,..., x )
0 1 ( )
l x0 ,..., x −1 2 −1 (
l x0 ,..., x )
2 + 2 + ... + 2 = =2 − 1 < 2m − 1 .
2 −1
ContradicŃie.

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.
1

2 3

4 5 6 9

7 8

Teorema 4. Pentru orice n ∈ ℕ *
există A = ( X , U ) o arborescenŃă
binară astfel încât
{x ∈ X d + ( x ) = 0} = n
(numărul vârfurilor terminale să fie egal cu n ).
DemonstraŃie. Dacă n = 1 , atunci X = { x0 } şi U = ∅ . Astfel

{
A1 = ( X , U ) este arborescenŃă binară şi x ∈ X d + ( x ) = 0 = { x0 } = 1 . }
Dacă n = 2 , atunci fie X 1 = { x1 , x2 } . Considerăm X 2 = { x1,2 } şi
mulŃimea de arce U1 = {( x
1,2 }
, x2 ) , ( x1,2 , x2 ) . Deoarece X 2 are un element, există
o arborescenŃă binară A1 = ( X 2 , U 2 ) cu un nod terminal. Fie arborescenŃa
A2 = ( X 1 ∪ X 2 , U1 ∪ U 2 ) care este o arborescenŃă binară şi are numărul de noduri
terminale X 1 = { x1 , x2 } = 2 = n .
Presupunem că pentru orice i = 1, 2,..., k există Ai = (Yi , Vi ) arborescenŃă
binară cu numărul de vârfuri terminale egal cu i .
Considerăm n = k + 1 .
Dacă k + 1 este număr par, deci k +1 = 2 p , considerăm
X 1 = { x1 , x2 ,..., x2 p −1 , x2 p } . Fie X 2 = { x1,2 , x3,4 ,..., x2 p −1,2 p } pentru care avem
X 2 = p ≤ k . Considerăm mulŃimea de muchii

This PDF document was edited with Icecream PDF Editor.


Upgrade to PRO to remove watermark.

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