Documente Academic
Documente Profesional
Documente Cultură
Algoritmica Grafurilor
Algoritmica Grafurilor
{{x, y} x, y X } .
X se numesc noduri sau vrfuri, iar elementele din mulimea U poart numele
de muchii ale grafului.
Un graf se reprezint grafic printr-o mulime de puncte corespunztoare
vrfurilor grafului i o mulime de segmente corespunztoare muchiilor. Dac
pentru un graf exist o reprezentare n care s nu existe dou segmente care s se
intersecteze, atunci spunem c graful reprezentat este un graf planar.
Pornind de la definiie observm c dac X are n elemente, atunci U are
cel mult Cn2 elemente.
Dac A este o mulime, vom nota prin A numrul de elemente ale
mulimii.
Definiie. Fie G = ( X , U ) un graf i x X un nod fixat. Prin gradul
nodului x nelegem numrul muchiilor incidente lui x i notm acest numr cu
d ( x ) . Dac d ( x ) = 1 spunem c x este nod terminal. Dac d ( x ) = 0 spunem
c x este nod izolat.
Propoziia 1. Fie G = ( X , U ) un graf n care U = m . Atunci
d ( x ) = 2m .
x X
G = ( X ,V ) , unde V U .
Definiie. Fie G = ( X , U ) un graf. Numim subgraf n G, graful
G = (Y ,V ) , n care Y X , iar V =
{{x, y} U x, y Y } .
1
{ x, y} U ) spunem c
xi xi +1 U (adic o succesiune n care oricare dou vrfuri vecine din lan sunt
adiacente).
Fie G = ( X , U ) este un graf i L = x0 x1...xr un lan n G . Vrfurile x0 i
( x, y ) U
{( y, x ) U
y X .
{( x, y ) U
y X .
d ( A) =
{( y, x ) U
y A, x A .
3
d + ( A) =
{( x, y ) U x A, y A} .
d ( x) ,
deoarece s-ar
xA
putea ca anumite arce care ies din A s aib extremitatea final tot n A ,
arce care nu se numr la determinarea valorii d + ( A ) .
2) Evident, pentru orive A X avem d + ( A )
d ( x) ,
+
deoarece s-ar
xA
d ( x) .
xA
{( x, y ) U x, y Y }
( xi , xi +1 ) U
sau
( xi +1 , xi ) U
(sau
succesiune
de
arce
L = ( x0 , x1 ,..., xr ) de extremiti x i y .
Definiie. Fie G = ( X , U ) un graf neorientat. Numim componenta
conex a lui G , un subgraf conex C = ( Y , V ) al su, i pentru orice x Y ,
subgraful obinut lund mulimea de vrfuri Y \ { x} nu este conex (subgraful C
este maximal n raport cu proprietatea de conexitate).
Fie G = ( X , U ) un graf neorientat. Pentru x, y X spunem c x este
conectat cu
L = ( x0 , x1 ,..., xr ) de extremiti x i y
Pe mulimea X definim relaia binar ~ X X , dat prin x ~ y dac
i numai dac ( x = y sau x este conectat cu y ).
Propoziia 1. Relaia " ~ " definit mai sus este o relaie de echivale
Propoziia 2. Fie G = ( X , U ) un graf n care X = n , U = m i n 2 .
Dac G este conex, atunci m n 1 .
Noiunea de graf conex este valabil i pentru grafurile orientate.
Definiia este urmtoarea:
Definiie. Graful orientat G = ( X , U ) se numete conex dac i numai
dac oricare ar fi dou noduri x, y X , x y , exist cel puin un lan n G ,
L = ( x0 , x1 ,..., xr ) de extremiti x i y .
6
G , d = ( x = x0 , x1 ,..., xr = y ) de extremiti x i y .
O posibilitate de a determina dac un graf neorientat este conex, sau
determinarea efectiv a componentelor conexe (sau problemele similare
pentru grafurile orientate) const n aplicarea unui algoritm de tip greede.
S considerm nti problema determinrii conexitii unui graf
neorientat G = ( X ,U ) .
Algoritm 1.
1. Se consider Y = X , V = U i se alege orice x X pentru care
considerm B = { x} .
2. Dac B = , atunci algoritmul se termin genernd un rspuns
astfel:
a. Dac V = , atunci graful este conex
b. Dac V , atunci graful nu este conex (n plus se poate
spune c mulimea X \ Y reprezint componenta conex din
care face parte i nodul x considerat la 1).
Altfel se continu.
3. Se alege orice y B .
4. Pentru fiecare
z Y \ B
astfel nct
{ y, z} V
considerm
B = B { z} i V = V \ {{ y, z}}
5. Considerm B = B \ { y} i relum de la 2.
Aa cum se vede din pasul 2, algoritmul prezentat d rspunsul la
ntrebarea Este G un graf conex?. De asemenea, se poate determina
componenta conex a grafului G din care face parte un anumit nod
specificat. Acest lucru creaz premizele realizrii algoritmului de
determinare a componentelor conexe, plecnd de la algoritmul 1.
Algoritm 2.
1. Se consider Y = X , V = U k = 0 .
2. Dac V = , atunci algoritmul se termin i componentele conexe
k
i =1
z Y \ B
astfel nct
{ y, z} V
considerm
B = B { z} i V = V \ {{ y, z}} .
7. Considerm B = B \ { y} , Ak = Ak { y} . Se trece la 4.
8. Se elimin din V orice muchie {a, b} pentru care a, b Ak . Se trece
la 2.
2.2. Grafuri complementare i izomorfe
Definiie. Fie G = ( X , U ) un graf neorientat, numim complementarul lui
Din definiie rezult c dou grafuri sunt izomorfe dac au acelai numr
de vrfuri i se poat obine unul din cellalt printr-o renumerotare a vrfurilor.
Definiii similare celor de mai sus sunt valabile pentru grafurile orientate.
Ele se obin nlocuid muchiile cu arce.
Propoziia 3. Fie G = ( X , U ) i G = ( X , U ) dou grafuri orientate.
Atunci G G dac i numai dac CG CG .
2.3. Grafuri ciclice
Definiie. Fie G = ( X , U ) un graf neorientat. Numim ciclu n G un lan
avem { xi , xi +1} x j , x j +1 (toate muchiile sale sunt distincte dou cte dou).
graf
orientat.
Definim
V = ( Ci , C j ) x Ci , y C j cu ( x, y ) U Y Y .
Graful H = (Y ,V ) se numete graful condensat al lui G .
Observaie. Graful condensat al oricrui graf orientat este aciclic.
4. ARBORI
4.1. Definire i proprieti
Definiie. Numim arbore orice graf neorientat conex i fr cicluri.
Teorema 1. Fie G = ( X , U ) un graf neorientat. Urmtoarele afirmaii
sunt echivalente:
1. G este arbore.
2. G este aciclic maximal.
3. G este convex minimal.
Corolar. Dac G = ( X , U ) este arbore, atunci U = X 1 .
Propoziie 1. Dac G = ( X , U ) este un arbire, atunci G are cel puin
dou vrfuri terminale.
4.2. Arbori pariali
Definiie. Fie G = ( X , U ) un graf neorientat i H = ( X , V ) un graf
parial al lui G . Dac H este arbore spunem c H este un arbore paial (de
acoperire sau de traversare) al lui G .
Observaie. Dac un graf neorientat G = ( X , U ) are arbore parial, acesta
nu este unic.
Definiie. Fie G = ( X , U ) un graf neorientat i A = ( X , V ) un arbore
parial al lui G . Numim coarde ale lui H elementele mulimii U \ V , iar numrul
U \ V se numete numrul ciclomatic al lui G .
Teorema 2. Fie G = ( X , U ) un graf neorientat. G este conex dac i
numai dac G are arbore parial.
10
Algoritm 1.
1. Fie V = U .
2. Dac graful H = ( X , V ) nu conine cicluri, atunci algoritmul se termin i
c ( u ) . Se pune problema
uU
{{ p, q}} .
( x0 ,..., x )
este drumul
{x X d
( x ) = 0} = n
{x X d
( x ) = 0} = n . Atunci U = 2 ( n 1) .
Definiie. Fie A = ( X , U ) o arborescen binar i
DT = {s x X cu d + ( x ) = 0 si l ( x0 ,..., x ) = s}
+
dac
X = 2m ,
atunci
n
. Atunci G este graf hamiltonian.
2
13
Fie
i = 1, 2,..., k ,
astfel
nct
mij U , j = 1, 2,..., p i ,
cicluri,
notnd
U i U j = pentru orice 1 i, j k , i j i
avem
= U (mulimea
i =1
k > 0 . Atunci exist Li = m1i , m2i ,..., mipi lan deschis, mij U , j = 1, 2,..., p i ,
14
avem U i U j =
pentru orice 1 i, j k , i j i
i =1
complexitatea O 2n 4 .
1.
2.
3.
4.
5. Se calculeaz d ik = dik + d jk .
O alt modalitate de calcul direct folosete operaiile uzuale definite pe
mulimea numerelor naturale.
Algoritmul se bazeaz pe propoziia 6 din capitalul 3 i pe legtura care
exist ntre matricile DG i NDG . Algoritmul are forma urmtoare.
Algoritmul 2.
1. Considerm i = 1 , D = A i T = A .
2. Dac i > n se trece la pasul 6, altfel se continu.
3. Considerm i = i + 1 i calculm T = T i A folosind operaiile uzuale de
adunare i nmulire a numerelor ntregi.
15
4.
5.
6.
7.
8.
P = ( pij )
1i , j n
de elemente
(( x , m
i1
i1i2
) (
)(
k k +1
)) ,
L ( d ) = mi ji j+1 .
j =1
DGmin = ( dij )
1i , j n
, unde
d ij = min L ( d )
d D xi , x j
.
Folosind aceste notaii, pentru determinarea matricii DGmin a drumurilor
minine se poate face folosind Algoritmul Wharshal pentru drumuri minime,
adic:
16
Algoritmul 3.
1. Considerm i = 1 (prelucrm linia i ), D = P .
2. Dac i > n , atunci algoritmul se termin i DGmin = D , altfel se continu.
3. Pentru fiecare j = 1, 2,..., n se aplic pasul 5.
4. Facem i = i + 1 (trecem la urmtoarea linie) i trecem la pasul 2.
5. Dac d ij = + , atunci se continu, altfel se nlocuiete liniei i cu
minimul dintre liniei i i linia obinut din linia j prin adugarea valorii
( )
P = ( pij )
1i , j n
( x , x ) U
j
pentru care x j X m i xk X m se
( )
calculeaz valoarea d jk = p jk + c x j
4. Calculm d = min d jk .
x j X m
xk X m
5. Pentru fiecare k
astfel nct d = d jk
considerm c ( xk ) = d
( )
Considerm c P = pij
1i , j n
( )
pij
wij =
0
1i , j n
mij
= 0
pentru i = j
pentru i j
pentru i j si ( xi , mij , x j ) U
pentru i = j
pentru i j si ( xi , mij , x j ) U
Algoritmul 5.
Etapa 1
Se construiete matricea estins a valorilor arcelor W = wij
( )
i , j =1, n
Construim un tabel n care liniile sunt liniile matricii , notat L = ( Li )1i n , unde Li
este linia i a tabelului La tabelul format se adaug linia Ln +1 care este transpusa
coloanei n din matricea W .
Etapa 2
Se adaug tabelului L , liniile suplimentare Li , i = n + 2, n + 3,... , astfel:
a) presupunnd completat linia Lk se completeaz linia Lk +1 conform relaiei:
) .a.m.d. Ultimul
succesor determinat va fi x n .
( )
Considerm c P = pij
1i , j n
( )
1i , j n
19
pij
wij =
0
mij
= 0
pentru i = j
pentru i j
pentru i j si ( xi , mij , x j ) U
pentru i = j
pentru i j si ( xi , mij , x j ) U
Algoritmul 6.
Etapa 1
Se construiete matricea estins a valorilor arcelor W = wij
( )
i , j =1, n
( )
1i n
pe
baza formului:
v = min vi , min {v j + w ji } .
j
( x j , xi )U
*
i
i+1
relaia vk
i+1
(x
ki
+ wki+1ki = vki
( )
i , j =1, n
.,
( x , x ) U , atunci ne
j
xi C , facem vi = min {v j + w ji } .
j
x j A
4. Facem nlocuirile A = A C , B = B \ C .
5. Dac xn A atunci se trece la pasul 2, altfel se continu.
6. Se determin drumul de la x1 la xn plecndu-se de la xn , procednd dup
i+1
i+1
i 1
+ wki+1ki = vki .
( )
i , j =1, n
( x , x ) U , atunci ne
j
xi C , facem vi = min {v j + w ji } .
j
x j A
4. Pentru fiecare
xk C
xj A
astfel nct
vk + w jk = min {v j + w jk } considerm A = A { xk } i B = B \ { xk } .
j
x j A
21
i+1
i+1
i 1
+ wki+1ki = vki .
( C , C ) V
i
( x, y ) U .Se formeaz
d = ( C1 , C2 ,..., Cr ) .
22
Etapa 3
3.a) Se consider x1 C1 i x2 C2 pentru care exist ( x1 , x2 ) U . Gsim n
3.c)
3.d)
d i* = d i*1 , ( xi*1 , xi ) , di
graful
parial
al
lui
de
vrfuri
Fie ei partea din drumul d i*1 care formeaz acest drum mpreun cu d i 1 .
Fie xi1 Ci 1 i xi Ci pentru care ( xi1 , xi ) U . mprim drumul d i 1 n
xi*1 i apoi prin toate celelante vrfuri care apar n drumul d i1 astfel nct
extremitatea final a lui d i1 s fie xi1 . Se consider n Ci un drum
hamiltonian d i de extremitate iniial xi i notm extremitatea sa final prin
xi* . Considerm drumul di* = ( di1 , di1 , ( xi1 , xi ) , di ) n graful parial al lui
23
( x , x ) U . Atunci
i
2
i =1
unde pi este gradul de atingere al vrfului xi .
Teorema 2. ntr-un graf orientat fr circuite, drumul hamiltonian, dac
exist este unic..
Rezultatele prezentate mai sus dau au proces imediat pentru determinarea
drumului hamiltonian ntr-un graf orientat fr circuite. Prentru acesta vom proceda
dup cum urmeaz:
1. Scriem matricea de adiacen A .
2. Calculm, prin una din metodele descrise n capitolele anterioare, matricea
drumurilor D . Dac n aceast matrice apare cel puin o valoare 1 pe
diagonala principal ne oprim pentru c graful G conine un circuit i
teorema lui Chen nu se poate aplica.
3. Se determin puterile de atingere ale vrfurilor ( pi )i =1,2,...,n i se verific
n
i =1
n ( n 1)
. Dac aceast relaie
2
h = x (1) , x ( 2) ,..., x ( n )
este drumul hamiltonian cutat.
24
( )
xi x j
mij(1) =
0
de nmulire latin. M ( ) L M ( ) .
nmulirea latin a matricilor se face formal ca i nmulirea a dou matrici,
fr nsumare i fr nmulire efectiv innd cont c:
- produsul latin a dou componente participante la calcul este nul dac cel puin
una din ele este nul.
- produsul latin a dou componente participante este nul dac au vrf comun.
- rezultatul compunerii const n scrierea n continuare a vrfurilor componente
ale simbolurilor participante.
1
Prin
definiia
produsului
latin
avem
M ( 2 ) = M (1) L M (1) ,
25
ui = { xi 1 , xi } .
Prezentm n comtinuare algoritmul lui Fleury:
Algoritmul 2.
6. Se alege un vrf x0 X i considerm C0 = { x0 } i i = 0 .
7. Pentru xi alegem o muchie ui +1 = ( xi , xi +1 ) care nu apare n Ci i care
nu este izolat n graful parial al lui G obinut prin eliminarea muchiiler
care formeaz Ci (sau o muchie izolat din graful parial menionat, dac
nu
avem
alt
variant)..
Definim
lanul
Ci +1 = {Ci , ui +1 , xi +1} = { x0 , u1 , x1 , u2 ,..., xi , ui +1 , xi +1} i facem i = i + 1 .
8. Dac i = m ne oprim, Cm este ciclul eulerian, altfel se trece la pasul (2)..
Teorema 3. Dac G = ( X , U ) este un graf eulerian, atunci orice ciclu
obinut prin aplicarea algoritmului 2 este un ciclu eulerian.
7.5. Algoritmul lui Hierholzer pentru drumuri euleriene
O alt idee pentru determinarea unui ciclu eulerian este s determinm
ciclurile formate cu muchii distincte i care s aib cte un nod comun i unirea
acestor cicluri n ciclul eulerian cutat.
Existena ciclurilor cu un nod comun este garantat de faptul c graful
considerat este conex.
26
} i i = 0 .
i +1
(Y ) =
{( x , x ) U x Y , x Y } U
i
27
+ (Y ) =
Cantitatea c (Y ) =
{( x , x ) U x Y , x Y } U .
i
ij
xi , x j (Y )
(xk , x j ) =
n
k =1
xk , x j
(x
n
h =1
x , x
j
h
, xh ) .
Observaii.
1. Condiia 2) afirm c pentru orice vrf x cu x x1 i x x n , suma
fluxurilor de pe arcele care intr n x este egal cu suma fluxurilor pe arcele
care ies din x .
2. Funcia nu este unic.
h =1
( xh , xn )
h =1
( xh , xn ) .
( xh , xn )U
( xh , xn )U
Propoziia 1. Fie G = ( X , U , p ) o reea de transport avnd sursa x1 ,
destinaia x n i :U + un flux oarecare n reeaua G , atunci:
n
i =1
( x1 , xi )U
( x1 , xi ) =
j =1
( x j , xn )
( x j , xn )U
( x j , xn ) ( xn )
( x j , xn ) =
( x1 , xi ) + ( xi )
( x1 , xi )
xi , x j (Y )
(xi , x j )
xi , x j + (Y )
(xi , x j ) c = (Y ) .
( x , x ) U .
i
Pasul II
Folosind operaiile de marcare ce vor fi prezentate mai jos, se cerceteaz
dac fluxul iniial 0 este maxim; operaiunile de marcare constau n
urmtoarele:
a) se marcheaz sursa reelei x1 cu semnul + ;
( )
prin + x j ;
este
arcul
( ) arcul
prin x j .;
29
1 = min+ {c(u ) (u )}
uV
2 = min (u )
uV
BIBLIOGRAFIE Obligatorie
BIBLIOGRAFIE Opiomal
31