Documente Academic
Documente Profesional
Documente Cultură
Alg Graf
Alg Graf
XXXXXXXXXXXXXXXX
XXXXXXXXXX
XXXXXXXX
XXXXXXXXXXX
Universitatea de Stat din Moldova
Facultatea de Matematică şi Informatică
Sergiu CATARANCIUC
Angela NICULIŢĂ
Aspecte algoritmice
ale teoriei grafurilor
Partea I
Aprobată de
Consiliul metodico-ştiinţific
şi editorial al USM
CEP USM
Chişinău, 2006
CZU 519.17 (075.8)
C 29
Cataranciuc Sergiu
Aspecte algoritmice ale teoriei grafurilor / Sergiu Cataranciuc,
Angela Niculiţă; Univ. de Stat din Moldova. Fac. de Matematică şi
Informatică – Ch.: CEP USM, 2006. –ISBN 978-9975-70-655-1
Partea I. – 2006. – 140 p. – Bibliogr. P. 138-140 (48 tit.). –
ISBN 978-9975-70-655-1
- - 1. Teoria grafurilor.
519.17(075.8)
C Sergiu Cataranciuc,
Angela Niculiţă, 2006
C USM, 2006
ISBN 978-9975-70-655-1
CUPRINS
INTRODUCERE.....................................................................................................5
I. NOŢIUNI DE BAZĂ...........................................................................................7
1.1. GRAFUL NEORIENTAT ŞI ELEMENTELE SALE...................................................7
1.2. GRAFURI ORIENTATE......................................................................................9
1.3. TIPURI DE GRAFURI......................................................................................10
1.4. SUBGRAFURI.................................................................................................12
1.5. LANŢURI ŞI CICLURI.....................................................................................12
1.6. REPREZENTĂRI ALE GRAFURILOR................................................................14
1.7. PROBLEME....................................................................................................16
II. MULŢIMI STABILE ÎN GRAFURI NEORIENTATE................................22
2.1. MULŢIMI DE VÂRFURI STABILE INTERIOR....................................................22
2.1.1. Modelul matematic al problemei de determinare.............................32
a mulţimii de vârfuri stabile interior maxime............................................32
2.1.2. Algoritmul recursiv al lui Bednarek şi Taulbee................................36
2.1.3. Algoritmul Malgrange.......................................................................39
2.1.3.1. Noţiuni preliminare.................................................................................39
2.1.3.2. Descrierea algoritmului...........................................................................42
2.1.4. Algoritmul Bron şi Kerbosch............................................................47
2.1.4.1. Noţiuni preliminare.................................................................................47
2.1.4.2. Descrierea algoritmului...........................................................................50
2.2. MULŢIMI DE VÂRFURI STABILE EXTERIOR....................................................51
2.2.1. Modelul matematic al problemei de determinare.............................56
a mulţimii de vârfuri stabile exterior minime.............................................56
2.2.2. Algoritmul de construire a mulţimii de.............................................58
vârfuri stabile exterior minime...................................................................58
2.3. CUPLAJURI....................................................................................................66
2.3.1. Lanţuri de majorare a cuplajurilor...................................................70
2.3.2. Cuplajuri în grafuri bipartite............................................................72
2.3.2.1. Algoritmul construirii cuplajului maxim într-un graf bipartit...................76
2.3.2.2. Descrierea algoritmului...........................................................................77
2.3.3. Cuplajuri în grafuri neorientate. Caz general.............................78
2.4. PROBLEME....................................................................................................85
III. COLORAREA GRAFURILOR....................................................................92
3.1. COLORAREA VÂRFURILOR............................................................................92
3.2. METODA PROGRAMĂRII DINAMICE...............................................................95
3.3. ALGORITMUL DE TRIERE IMPLICITĂ...........................................................100
3.4. METODE EURISTICE DE COLORARE............................................................101
3
3.4.1. Metoda succesivă.............................................................................101
3.4.2. Metoda dihotomiei...........................................................................102
3.5. COLORAREA MUCHIILOR............................................................................104
3.6. PROBLEME..................................................................................................105
IV. DRUMURI MINIME....................................................................................112
4.1. ALGORITMUL DIJKSTRA.............................................................................114
4.2. ALGORITMUL FORD....................................................................................118
4.3. ALGORITMUL FLOYD..................................................................................124
4.4. ALGORITMUL DANTZIG..............................................................................126
4.5. ALGORITMUL DE CĂUTARE DUBLĂ.............................................................127
4.5.1. Expunerea algoritmului de căutare dublă.....................................129
4.6. PROBLEME..................................................................................................133
BIBLIOGRAFIE...................................................................................................138
4
INTRODUCERE
6
I. NOŢIUNI DE BAZĂ
( A) ( A) \ A .
Gradul maxim şi gradul minim al vârfurilor unui graf G se
notează prin G şi G . Astfel,
deg x 2m .
x X
8
În cazul grafurilor neorientate, mulţimea de muchii U este
definită ca o mulţime de perechi neordonate de vârfuri ale grafului.
Dacă cerem ca mulţimea U să fie formată din perechi ordonate de
vârfuri ale grafului, atunci acesta ne permite să vorbim despre un alt
obiect matematic – graful orientat.
9
Definiţia 1.2.3. Drumul D ( x0 , x1 , , x r ) în care toate
arcele ( x 0 , x1 ), ( x1 , x 2 ), , ( x r 1 , x r ) sunt distincte două câte două
şi x0 x r se numeşte circuit.
Circuitul se numeşte elementar dacă toate vârfurile sale sunt
distincte două câte două, cu excepţia primului şi ultimului vârf care
coincid.
Dacă xi este un vârf al grafului orientat G ( ;U ) , atunci
cardinalul mulţimii Г xi x j : ( xi , x j ) U se numeşte
semigrad exterior, iar cardinalul mulţimii
Г x i x j : ( x j , x i ) U – semigrad interior al vârfului xi .
Semigradul exterior se notează prin g ( xi ) , iar semigradul interior –
prin g ( xi ) . Observăm că g ( xi ) şi g ( xi ) reprezintă respectiv
numărul succesorilor şi al predecesorilor vârfului xi .
Gradul unui vârf xi al grafului orientat se formează din
gradul exterior şi gradul interior şi se defineşte astfel:
g ( xi ) g ( xi ) g ( xi ) .
10
Multigraf – graful în care există cel puţin o pereche de vârfuri
xi , x j , care reprezintă mai mult decât o muchie a grafului.
În acest caz, vârfurile xi , x j sunt unite cu ajutorul a k 2
muchii şi se spune că această pereche de vârfuri defineşte o
muchie multiplă de ordin k.
Pseudograf – multigraful care conţine cel puţin o muchie,
extremităţile căreia coincid. Astfel de muchie se numeşte
buclă.
Graf simplu – graful finit, ce nu conţine bucle şi muchii
multiple.
12
Lanţul, ce conţine fiecare muchie a grafului cel mult o
singură dată se numeşte lanţ simplu, iar lanţul, toate vârfurile căruia
sunt distincte două câte două, se numeşte lanţ elementar.
Ciclul ce conţine fiecare muchie a grafului cel mult o singură
dată se numeşte ciclu simplu, iar ciclul, toate vârfurile căruia sunt
distincte două câte două, se numeşte ciclu elementar.
Nu orice graf conţine cicluri elementare. Graful conex ce nu
conţine cicluri elementare se numeşte arbore. Subgraful parţial conex
ce nu conţine cicluri elementare se numeşte arbore parţial.
Dacă într-un graf orice două vârfuri sunt unite printr-un lanţ,
atunci acest graf se numeşte conex. Subgraful maximal conex al
grafului G se numeşte componentă conexă.
15
toate aceste cazuri să convenim că se studiază un obiect matematic
identic. Astfel de grafuri în viitor se vor numi izomorfe.
Două grafuri G1 X 1 ;U 1 şi G2 X 2 ;U 2 se numesc
izomorfe, dacă există o aplicaţie bijectivă : X 1 X 2 astfel încât
xi , x j U 1 , dacă şi numai dacă xi , x j U 2 .
În diverse aplicaţii ale teoriei grafurilor se mai întâlnesc şi
alte tipuri de matrici, printre care matricea distanţelor, matricea
Kirhgoff, matricea de accesibilitate etc.
1.7. Probleme
16
4. Fie A o submulţime de vârfuri ale grafului neorientat
G X ;U , iar k – numărul muchiilor care au exact o extremitate în
A. Să se demonstreze că numărul k este de aceeaşi paritate cu
numărul vârfurilor de grad impar din A.
b) g
x
( x ) g ( x) 2k , k N .
b) g
x
( x) g
x
( x) C n2 ;
g g
2 2
c) ( x) ( x) ;
x x
17
g n g
2 2
d) ( x) ( x) 1 .
x x
19
20. Să se verifice afiramţia: un graf G este conex, dacă şi numai
dacă pentru orice divizare a mulţimii de vârfuri X G în submulţimile
X 1 , X 2 , există o muchie din G cu o extremitate în X 1 şi altă
extremitate în X 2 .
20
27. Să se demonstreze că în orice graf planar
G X ;U , X 5 există cel puţin patru vârfuri de grad cel mult
cinci.
d
i 1
i
2
2(n 3) 2 62 .
1, dacă xi Z ,
ci
0, dacă xi Z .
Un astfel de vector se numeşte vector caracteristic al mulţimii Z.
A (x ) Ø, x A
sau
A ( A) Ø.
22
Definiţia 2.1.2. Mulţimea de vârfuri stabilă interior A se
numeşte maximală, dacă în graf nu există o altă mulţime stabilă
interior H astfel, încât A H .
0 (G ) max A .
AQ
S1 x4 ,
S 2 x1 , x3 ,
S3 x2 , x7 ,
S 4 x1 , x3 , x7 ,
S5 x1 , x3 , x5 , x6 , x8 ,
S6 x2 , x5 , x6 , x8 .
sunt stabile interior. Printre ele S3, S4, S5, S6 sunt maximale, şi numai
una – S5 este mulţime stabilă interior maximă. Prin urmare,
0 (G ) 5 . x x
1 5
x2 23 x8
x4 x7
x3
x
Fig. 1
a) 0 (G ) (1 deg x)
x
1
.
(2.1)
În cazul grafului din fig.1, după cum a fost calculat mai sus,
0 (G ) 5 . Suma din partea dreaptă a inegalităţii (2.1) este:
1 1 1 1 1 1 1 1 15
(1 deg x)
x
1
3 4 3 6 3 3 4 2 6
,
U U 1 U 2 , unde
24
U 1 ( x, y ) : x 1 , y 2 ,
U 2 ( s, t ) : s, t 2 şi s t .
În graful construit, gradul unui vârf z este k – 1, dacă z X 1
şi 2k – 2, dacă z X 2 . Prin urmare,
(1 deg x)
x
1
(1 deg x)
1
1
(1 deg x)
2
1
x x
(1 (k 1)) 1 k (1 ( 2k 2)) 1 ( k 1)
1 k 1
k (2k 1) 1 ( k 1) 1 2 pentru orice k 1.
k 2k 1
Fig. 2
X1→ ……
Pe de altă parte, precum se poate observa din fig.2, numărul de
stabilitate internă pentru acest graf este 0 (G ) k şi odată cu
creşterea valorii lui k poate fi făcut oricât de mare.
X2→ …
n
b) 0 (G ) , unde n este numărul de vârfuri din graf, iar
1 d
d este gradul mediu al vârfurilor care se calculează după formula
25
d deg x / n .
x
n
d) 0 (G ) (1 deg x) 1 .
(1 ) x
26
un singur vârf al grafului, mulţimile formate din două vârfuri
adiacente ş.a.
Dacă cunoaştem o clică oarecare a grafului, atunci totdeauna
putem cerceta posibilitatea extinderii ei din contul vârfurilor rămase.
Această situaţie conduce la noţiunea de clică maximală şi clică
maximă.
x5
x1 x8
x2
x4 x7
x3
x6
Fig. 3
27
C1 x1 ,
C 2 x 4 , x5 ,
C 3 x1 , x 2 , x 4 ,
C 4 x 4 , x5 , x 6 ,
C 5 x 4 , x5 , x 6 , x 7 .
29
II. Pentru efectuarea a n lucrări, o instituţie foloseşte o mulţime
oarecare de resurse disponibile R {r1 , r2 ,..., rP } . Se cunoaşte că
efectuarea unei lucrări xi , i 1, n necesită utilizarea unei
submulţimi de resurse Ri R . Orice resurs r j , j 1, n , nu poate fi
utilizat concomitent pentru două sau mai multe lucrări. Se cere de
determinat numărul maxim de lucrări, care pot fi realizate în paralel
(în acelaşi timp, concomitent).
În cazul acestei probleme, se construieşte modelul matematic în
forma unui graf neorientat G în care două vârfuri xi , x j se consideră
adiacente, dacă şi numai dacă Ri R j Ø. În aceste condiţii orice
mulţime de vârfuri stabilă interior din G reprezintă o totalitate de
lucrări care pot fi realizate în paralel. Prin urmare, numărul maxim de
lucrări ce pot fi realizate în acelaşi timp este egal cu numărul de
stabilitate internă 0 (G ) , iar vârfurile mulţimii stabile interior
maxime corespund acelor lucrări.
( x 2 x1 ) ( f ( x 2 ) f ( x1 )) .
Cortegiul x ( x1 , x 2 ,..., x n ) se numeşte unitate a funcţiei
booleene f, dacă f ( x) 1 şi unitate inferioară, dacă pentru oricare
alt cortegiu y x are loc egalitatea f ( y ) 0 . La rândul său, un
cortegiu x ( x1 , x2 ,..., xn ) se numeşte zerou al funcţiei booleene f,
30
dacă f ( x) 0 , şi zerou superior, dacă pentru oricare alt cortegiu y
cu proprietatea x y are loc egalitatea f ( y ) 1 .
Este evident că orice funcţie monotonă se determină în mod
univoc de mulţimea unităţilor sale inferioare (sau de mulţimea
zerourilor sale superioare).
În cazul unui cortegiu binar x ( x1 , x2 ,..., xn ) , numărul
n
x
i 1
i se numeşte normă a acestui cortegiu, iar funcţia monotonă,
31
2.1.1. Modelul matematic al problemei de determinare
a mulţimii de vârfuri stabile interior maxime
1, dacă xi , x j B ,
ij
0, în caz contrar .
În această matrice, evident, pentru orice vârf xi B , vom avea
ii 1 . Astfel cardinalul mulţimii B este egal cu numărul de unităţi
de pe diagonală principală din .
x2
x1 x3
x4 x5
Fig. 4
32
Exemplu. Mulţimea de vârfuri stabilă interior B x2 , x4 , x5
a grafului din fig.4 se descrie prin matricea
0 0 0 0 0
0 1 0 1 1
ξ 0 0 0 0 0
0 1 0 1 1
0 1 0 1 1 .
1) ij aij 0 , i, j 1, n ;
2) ii jj ij , i, j 1, n .
33
ii jj ij , i , j 1, n .
an1 n1 an 2 n 2 ... ann nn 0 , (2.4)
ii jj
ij , i, j 1, n ,
2
1 , i, j 1, n .
ii jj ij
ij 0,1 , i 1, n , j 1, n . (2.5)
34
B. Un alt model al problemei studiate, reprezentat de asemenea
ca problemă de programare liniară cu variabile booleene, se obţine
prin utilizarea matricei de incidenţă a grafului.
Pentru graful G ( X ;U ) cu n vârfuri şi m muchii, vom nota
prin B T matricea transpusă a matricei de incidenţă. Prin urmare,
B T este o matrice de dimensiune m n , elementele căreia sunt
35
n
Z x j max (2.6)
j 1
n
b x
j 1
ij j U i 1, i 1, m , (2.7)
x j {0,1} , (2.8)
U j {0,1} . (2.9)
36
x2, dacă x1 ~ x2 ,
Y2
x1, x2, dacă x1, x2 nu sunt adiacente .
Pasul 3. Construim familia de mulţimi
I k* S M Yk 1 : M este un element al familiei Lk .
x3
x1 x2 37 x4
x
Fig. 5
38
Rezultatele pentru fiecare iteraţie k a algoritmului Bednarek şi Taulbee sunt prezentate în tabelul 1.
Familia L5 conţine toate mulţimile maximale stabile interior ale grafului studiat. Observăm că pentru acest
graf numărul de stabilitate internă este 0 (G ) 3 .
Pentru graful din fig.5, există două mulţimi stabile interior maxime M 1 {x1 , x4 , x5 } şi
M 2 { x2 , x4 , x5 } . După cum se vede din tabelul 1, ambele mulţimi aparţin familiei L5 .
Tabelul 1
k Yk 1 I k* Ik L*k 1 Lk 1
1 Y2 x 2 I 1* Ø I 1 Ø L*2 x1 , x 2 L2 x1 , x 2
2 Y3 x1 , x3 I 2* Ø, x 1 I 2 Ø, x 1 L3 x 2 , x3 , x1 , x3 L3 x 2 , x1 , x3
*
38
3 Y4 x1 , x 2 , x 4 I x1 , x2
*
I 3 x1 , x 2 L4 {{x1, x3},{x1, x4},
L {{x1, x3,{x1, x4},
*
3
4 {x2 , x4}}
{x2 , x4}}
4 Y x , x , x , x I * x1 , x1 , x 4 , I 4* x1 , x 4 , x 2 , x 4 L*5 x1 , x3 , x1 , x4 , x5 L,5 x1 , x3 , x1 , x4 , x5 ,
5 1 2 4 5 4
x2 , x4 x2 , x4 , x5 x2 , x4 , x5
2.1.3. Algoritmul Malgrange
39
Exemplu. Fie dată matricea
1 0 1 0 0 1 l1
1 1 0 1 0 0 l2
M 1 0 1 0 0 0 l3
1 1 0 1 0 1 l4
0 0 1 0 1 0 l5
c1 c2 c3 c4 c5 c6
40
*
f 1 f 2 ( A1 A2 , B1 B 2 ) .
* *
* * * *
f1 f 2 f3
A1 , B1 A1 , B2 ( A3 , B3 )
A1 , B1 A2 A3 ,
*
B2 B3 A1 A2 A3 , B1 B2 B
( A1 A2 )( A1 A3 ), ( B1 B2 )( B1 B3 )
( A A ( A A
*
1 2 ), ( B1 B2 ) 1 3 ), ( B1 B3 )
* * *
( A1 , B1 )( A2 , B2 ) ( A1 , B1 )( A3 , B3 )
* * *
f1 f 2 f1 f 3 .
Deoarece M este o matrice finită, rezultă că şi laticea T este
finită, deci are un element nul şi un element universal.
Dacă f1 , f 2 M * şi f1 f 2 , atunci au loc proprietăţile:
* *
f1 f 2 f 2 şi f1 f 2 f 2 .
*
Într-adevăr, f 1 f 2 ( A1 A2 , B1 B 2 ) ( A1 , B 2 ) f 2
*
şi f 1 f 2 ( A1 A2 , B1 B2 ) ( A2 , B1 ) f 2 .
41
De aici rezultă, în particular, că dacă f 2 nu este o submatrice
* *
X p f i C p : f j C p , f j f i astfel, încât f i f j
42
Pasul 3. Construim familia (C p \ X p ) de submatrice, obţinute
*
*
prin aplicarea ambelor operaţii şi tuturor perechilor posibile de
C p1 (C p \ X p ) (C p \ X p ) .
Pasul 5. Dacă C p1 C p , atunci considerăm p p 1 şi
trecem la executarea pasului 2. În caz contrar C p conţine toate
submatricele principale ale matricei A .
e d
f 43
c
Fig. 6
0 1 1 0 1 0 a
1 0 0 1 1 0 b
1 0 0 1 1 1 c
A
0 1 1 0 1 0 d
1 1 1 1 0 1 e
0 0 1 0 1 0 f
a b c d e f
1 0 0 1 0 1 a
0 1 1 0 0 1 b
0 1 1 0 0 0 c
A
1 0 0 1 0 1 d
0 0 0 0 1 0 e
1 1 0 1 0 1 f
a b c d e f
44
Acoperirea iniţială C0 a matricei A este:
C0 (a, adf ), (b, bcf ), (c, bc), (d , adf ), (e, e), ( f , abdf ) .
C1 ( a, adf ), (b, bcf ), (c, bc), (d , adf ), (e, e), ( f , abdf ), (ab, f ),
( ad , adf ), (af , adf ), (bc, bc), (bd , f ), (bf , bf ), (cf , b), ( df , adf ).
Determinăm mulţimile:
X 1 ( a, adf ), (c, bc), (d , adf ) ,
Determinăm mulţimile:
45
C 2 X 2 (b, bcf ), (e, e), ( f , abdf ), (bc, bc), (bf , bf ),
(bcf , b), ( adf , adf ), ( abdf , f ) .
C3 (C 2 X 2 ) U (C 2 X 2 ) C 2 X 2 ,
S e , b, c , b, f , a, d , f .
S k 1 S k xik ,
Q Q \ ( x )
k1 k ik
,
47
Qk1 Qk \ (xik ) xik .
Q k Qk Ø.
În acelaşi timp, este absolut clar că dacă există un vârf x Q k ,
astfel încât ( x) Qk Ø, atunci indiferent de faptul care dintre
vârfurile mulţimii Q k este ales pentru extinderea mulţimii S k , la
orice pas următor p k nu vom obţine respectarea condiţiei Qk =Ø.
Aceasta înseamnă că condiţia
încât x ik ( z k ) Q k . În condiţiile efectuării acum a pasului de
întoarcere, valoarea mărimii
( z k ) ( z k ) Q k
( x*) ( x*) Q k .
Este important să cunoaştem ce condiţie trebuie să se respecte
pentru atingerea scopului indicat.
Vârful x i k
se va alege acum în mod arbitrar din mulţimea
( x*) Q . O astfel de alegere a vârfului x ik va grăbi îndeplinirea
k
49
Pasul 2. În conformitate cu cele descrise anterior, alegem un
vârf x ik Qk şi formăm mulţimile
S k 1 S k xik ,
Q Q \ ( x )
k 1 k ik
,
Qk1 Qk \ ( xik ) xik .
50
Qk Qk \ xik ,
Q k Qk x ik .
Dacă k 0 şi Q0 Ø, atunci aceasta înseamnă toate
mulţimile
stabile interior maximale ale grafului G ( X ; U ) au fost găsite în
procesul realizării algoritmului. STOP. În caz contrar, trecem în
continuare la realizarea pasului 3.
51
Cu alte cuvinte, mulţimea stabilă exterior este minimală, dacă
orice submulţime proprie a acesteia nu este la rândul său stabilă
exterior.
E1 x1 , x3 , x4 , x5 , x6 , x8 ,
E2 x1 , x3 , x5 , x6 , x8 ,
E3 x2 , x7 ,
E4 x4 , x7 ,
E5 x2 , x5 , x6 .
52
Definiţia 2.2.4. Submulţimea de vârfuri A X a unui graf G,
care este atât stabilă interior, cât şi stabilă exterior se numeşte
nucleu al acestui graf.
53
respectarea condiţiei d ij . Trebuie de determinat numărul minim
de centre medicale pentru deservirea populaţiei a celor N localităţi.
Pentru soluţionarea problemei, construim graful-model,
vârfurile căruia corespund localităţilor şi două vârfuri i şi j le
considerăm adiacente dacă d ij . În aceste condiţii, mulţimea
minimă de vârfuri stabilă exterior a acestui graf reprezintă localităţile
în care se vor construi centrele medicale.
Deseori, în legătură cu studierea mulţimilor de vârfuri stabile
ale unui graf, se mai vorbeşte şi despre aşa-numitele mulţimi de
vârfuri de acoperire, definite prin relaţia de incidenţă dintre
elementele grafului.
54
B1 x1 , x2 , x4 , x7 ,
B2 x1 , x2 , x3 , x5 , x6 , x8 ,
B3 x2 , x4 , x7 .
Printre aceste mulţimi B2 şi B3 sunt minimale şi numai B3 este
minimă. Deci pentru acest graf avem 0 (G ) 3 .
Analizând definiţiile respective, putem observa o mare
asemănare între acoperirea de vârfuri a unui graf şi mulţimea stabilă
exterior. Astfel orice acoperire de vârfuri a unui graf este şi mulţime
stabilă exterior. Afirmaţia inversă însă nu este adevărată.
Observăm, de asemenea, că dacă A formează o acoperire de
vârfuri în graf, atunci mulţimea X \ A nu conţine vârfuri adiacente,
adică este stabilă interior. În cazul unei mulţimi stabile exterior,
această proprietate nu numaidecât are loc. Mai mult decât atât, dacă
A formează o acoperire de vârfuri minimală (sau minimă), atunci
Să se minimizeze funcţia
n
Z j (2.10)
j 1
cu restricţiile
n
t
j 1
ij j 1 , pentru i 1, n , (2.11)
1, dacă x j Y *,
j (2.12)
0, dacă x j Y *.
1, dacă xi S j ,
tij (2.13)
0, dacă xi S j .
Exemplu. Să analizăm graful din fig.7 .
x2
x1 x3
x5
x4 x6
x7
56
Fig.7
Formăm următoarele mulţimi de vărfuri:
S1 {x1} ( x1 ) {x1 , x3 , x4 },
S 2 {x2 } ( x2 ) {x2 , x5 , x7 },
S3 { x3} ( x3 ) {x1 , x3 , x6 },
S 4 {x4 } ( x4 ) {x1 , x4 , x5 , x7 },
S5 {x5 } ( x5 ) {x2 , x4 , x5 , x6 },
S 6 {x6 } ( x6 ) {x3 , x5 , x6 , x7 },
S 7 {x7 } ( x7 ) {x2 , x4 , x6 , x6 }.
1 0 1 1 0 0 0
0 1 0 0 1 0 1
1 0 1 0 0 1 0
T 1 0 0 1 1 0 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1
0 1 0 1 0 1 1 .
(2.10) – (2.13) ar fi
1 2 3 1 ,
4 5 6 7 0 .
57
Printr-o verificare simplă ne convingem că se respectă
7
astfel încât
k
S ji R
i 1
58
Iniţial construim un tabel special liniile căruia corespund
elementelor mulţimii R, coloanele corespund mulţimilor S j S , iar
elementul din linia cu numărul p şi coloana cu numărul j este egal cu
1, dacă rp S j ( j 1, n) , şi este egal cu 0 – în caz contrar. Fiecărui
element rp i se pune în corespondenţă blocul de coloane ce
corespund acelor submulţimi din S, care conţin acest element şi nu
conţin elemente rk , k p . Coloanele ce corespund submulţimilor
din S şi care formează blocul p le vom aranja în acest bloc într-o
p p p
ordine arbitrară şi le vom nota prin S1 , S 2 ,..., S k , p 1, n (aici p
59
B – familia mulţimilor din S, care poate conduce la obţinerea
soluţiei optime;
Z – cardinalul familiei B;
Descrierea algoritmului:
60
TP S jp \ E .
Extindem mulţimile:
B B {S jp },
E E S jp
şi considerăm
Z Z 1.
Dacă E R , atunci considerăm B * B , Z* Z şi trecem la
pasul 6. În caz contrar, trecem la pasul 2.
B B \ {S ij },
E E \ Ti .
Considerăm Ti şi modificăm valoarea lui Z Z 1 .
Toate coloanele blocului p le declarăm libere (în viitor orice coloană
a acestui bloc poate fi folosită pentru extinderea mulţimii B). Trecem
la pasul 2.
B B \ {S jp},
E E \ Tp .
61
Considerăm T p şi modificăm valoarea lui Z Z 1 .
Trecem la executarea pasului 2.
S1 {x1 , x3 , x5 },
S 2 {x2 , x3 , x4 },
S3 {x1 , x2 , x3},
S 4 {x2 , x4 },
S5 {x1 , x5 },
S {S1 , S 2 , S3 , S 4 , S5 } .
x3 x4 x5
x1 x2
Fig. 8
Tabelul 3
Blocul nr. 1 Blocul nr. 2
S11 ( S1 ) S 21 ( S 3 ) S 31 ( S 5 ) S12 ( S 2 ) S 22 ( S 4 )
x1 1 1 1 0 0
x2 0 1 0 1 1
x3 1 1 0 1 0
x4 0 0 0 1 1
x5 1 0 1 0 0
j
Notaţia S i ( S k ) din tabel înseamnă că coloana cu numărul „i” a
blocului cu numărul „j” corespunde mulţimii S k a familiei S.
Iniţial considerăm B = Ø, E = Ø, Z = 0, Z* = +∞.
Pasul 4. T1 {x1 , x 3 , x 5 } ,
B B {S11} Ø {S11} {S11 {x1 , x3 , x5 }} ,
E {x1 , x3 , x5 } ,
Z = 1.
Deoarece E R , trecem la pasul 2 al algoritmului.
E {x1 , x2 , x3 , x4 , x5 } ,
Z =2.
Deoarece E =R, vom avea:
B * {S11 {x1 , x3 , x5 }, S12 {x2 , x3 , x4 }} şi Z* = 2.
E {x1 , x 3 , x 5 } ,
T2 ,
Z = Z – 1= 1.
Pasul 2. Alegem coloana S 22 .
Pasul 3. Z + 1 = 1 + 1 = Z*.
Pasul 3. Z 1 0 1 Z * (Z * 2) .
64
T1 {x1, x2 , x3 ) ,
E E S {x , x , x )
1
2 123
,
Z = 1.
Este clar că E X .
Pasul 3. Z 1 0 1 Z * (Z * 2) .
T1 {x1, x5 ) ,
B B {S 31 } {x1 , x5 } ,
65
E E S {x , x )
1
3 1 5
,
Z = 1.
Pasul 2. Calculăm p min{i : x i E} 2 . Alegem prima
coloană nefolosită din blocul 2 – coloana S 12 .
2.3. Cuplajuri
66
Definiţia 2.3.1. Submulţimea de muchii E U a grafului G se
numeşte cuplaj, dacă oricare două muchii din E nu sunt adiacente.
67
E1 u4 ,
E2 u 4 , u 7 ,
E3 u1 , u6 ,
E4 u 4 , u 5 , u 7 ,
E6 u1 , u2 , u3 .
Printre aceste mulţimi numai E3, E4, E5 sunt maximale, iar E4,
E5 sunt şi maxime. Deci 1 (G ) 3 .
Ca şi în cazul mulţimilor de vârfuri stabile interior, studierea
cuplajurilor poate fi făcută în coordonare cu acoperirile de muchii.
u4
u1 u6 u3
u2
u5
u7
Fig.9
1 (G ) 1 (G ) n , unde n X .
69
2.3.1. Lanţuri de majorare a cuplajurilor
M [( x2 , x3 ), ( x4 , x5 ), ( x6 , x8 ), ( x7 , x10 )] .
P1 [ x1 , x2 , x3 , x5 , x4 , x8 ]
şi P2 [ x1 , x4 , x5 , x6 , x8 , x7 , x10 , x9 ]
70
sunt alternante. Vârfurile x1 , x3 , x4 sunt exterioare, iar x2 , x5 , x8 –
interioare în cazul lanţului P1 . (În cazul lanţului P2 , vârfuri
exterioare vor fi x1 , x5 , x8 , x10 , iar interioare – x4 , x6 , x7 , x9 .)
Uşor ne convingem de faptul că în raport cu cuplajul
M {( x2 , x3 ), ( x4 , x5 ), ( x6 , x8 ), ( x7 , x10 )} graful din fig.10 conţine
numai două vârfuri libere.
x1 x4 x7
x5 x8
x2 x10
x3 x6 x9
Fig.10
mare decât M.
Lanţurile de majorare ar putea juca un rol decisiv în
soluţionarea problemei cuplajului maxim într-un graf neorientat. Să
71
notăm prin P mulţimea muchiilor unui lanţ de majorare p, în raport
cu cuplajul M. Este adevărată afirmaţia:
Pentru a elucida cele expuse mai sus, vom analiza graful din
fig.11, în care este fixat cuplajul.
M {( x11 , x42 ), ( x12 , x62 ), ( x31 , x22 ), ( x14 , x32 ), ( x51 , x62 ), ( x16 , x52 )} .
Fig.11
Dacă cel puţin unul dintre aceste vârfuri ar fi liber, atunci putem
considera că lanţul de majorare este construit. În conformitate cu
definiţia lanţului alternant (vezi definiţia 2.3.8), în continuare ne
mişcăm numai pe muchiile cuplajului. Astfel ajungem în vârfurile
73
x31 , x51 X 1 . Aceste vârfuri se determină în mod univoc ca vârfuri-
partenere pentru x22 şi x62 . Din vârfurile x31 şi x51 , în conformitate
2 2 2
cu metoda de parcurgere în lăţime ajungem la x3 , x4 , x5 .
Întreaga procedură de construire a lanţurilor alternante este
prezentată în fig.12.
x12
2 x62
x 2
1 x51
x3
x12
Fig.12
74
este incident unei singure muchii a cuplajului şi prin urmare vârful-
partener al său se determină în mod univoc).
1
x31
x5
x14
x16 x11
Fig. 13
Această situaţie
1
x31 ideea că trecerile de la nivelurile
ar sugera
x11 la cele xpare
impare 2
ar putea fi omise într-un
1 mod oarecare.
1
x5
x16
Vom
x4
simplifica procesul de căutare prin omiterea nivelurilor impare
efectuând nemijlocit trecerea din vârfuri exterioare în vârfuri noi, de
asemenea exterioare. O astfel de căutare ar putea fi interpretată
printr-un graf orientat (graful respectiv este prezentat în fig. 13).
Fig. 14
76
În graful orientat G * ( M ) , construirea lanţului de majorare se
va face conform metodei de căutare în lăţime, pornind de la un vârf
x i1 , care în graful bipartit G ( X 1 , X 2 ;U ) este vârf liber. Dacă în
procesul de căutare ajungem la un vârf x 1k pentru care linia cu
numărul k a matricei L conţine cel puţin o unitate, atunci aceasta
înseamnă că există lanţ de majorare în G. În caz contrar, procesul de
construire continuă.
Dacă în final nu reuşim să construim pentru G * ( M ) un drum,
căruia i-ar corespunde în G un lanţ de majorare, atunci cuplajul
curent M va fi cuplaj maxim. Aceasta s-ar întâmpla în cazul când
printre elementele mulţimii X 1 nu există vârfuri libere, sau în cazul
când în X 1 astfel de vârfuri există, însă toate elementele matricei L
sunt egale cu zero.
77
1
Pasul 5. Începând cu vârful x 0 , construim arborele de căutare
în lăţime.
(Dacă M , atunci vom obţine numai vârful x 10 .)
M (M \P) (P \ M) .
78
Ideea extinderii unui cuplaj într-un graf bipartit din contul unui
lanţ de majorare este valabilă şi în cazul unui graf arbitrar, numai că
în acest caz apar unele complicaţii care pot fi depăşite într-un mod
special. În cazul grafurilor bipartite, se construieşte graful orientat
G * ( M ) , în baza cuplajului curent M cu mulţimea de vârfuri X 1 a
grafului bipartit G ( X 1 , X 2 ;U ) . Această situaţie se datorează
faptului că vârfurile exterioare ale oricărui lanţ alternant ce porneşte
dintr-un vârf liber al mulţimii X 1 din G vor aparţine numaidecât
aceleiaşi mulţimi X 1 . Dacă însă vom analiza un graf arbitrar, atunci
aici situaţia este de altă natură: în calitate de vârf exterior ar putea
figura orice vârf al său.
x10 x9 x8 x7
x2 x6 x5
x1
x3 x4
Fig. 15
M {( x 2 , x3 ), ( x 4 , x5 ), ( x6 , x7 ), ( x8 , x9 )}
79
P1 [ x10 , x9 , x8 , x7 , x6 , x5 , x4 , x3 , x2 , x1 ]
şi
P2 [ x10 , x9 , x8 , x7 , x6 , x 2 , x3 , x 4 , x5 ] ,
P0 [ x10 , x9 , x8 , x 7 , x6 , x 4 , x5 , x 6 , x7 , x8 , x9 , x1 ] ,
80
M (M \ P0) (P0 \ M )
va conţine două muchii adiacente ( x 4 , x6 ) şi ( x5 , x6 ) , ceea ce nu
poate avea loc în virtutea definiţiei cuplajului. Mai mult ca atât – P0
nici nu este cel puţin lanţ simplu în G.
x7
x8
x10 x9
x1 x2 x6 x5
x3 x4
Fg.16
81
vârf nou xC (cu alte cuvinte, toate vârfurile ciclului C se înlocuiesc
printr-un vârf nou xC ).
Mulţimea de muchii U / C se obţine din U prin eliminarea
tuturor muchiilor incidente vârfurilor ciclului C şi înlocuirea
muchiilor de tipul (v, u ) , unde v nu este vârf al ciclului C, iar u este
vârf al acestui ciclu, printr-o singură muchie (v, xC ) . Căutarea
lanţului de majorare într-un graf G se face luând în consideraţie
următoarele două afirmaţii:
C [ x 0 , x1 , x 2 , x3 ,..., x 2 j 2 , x 2 j 1 , x 2 j , x 2 j 1 ,..., x 2 k 2 , x 2 k 1 , x 2 k , x 0 ]
.
P2 [ y1 , y2 , xC , y6 , y7 , y8 ] ,
şi
P3 [ y1 , y 2 , xC , y9 , y10 , y11 ] .
P2* [ y1 , y 2 , x 0 , x1 , x 2 , ..., x 2 j 2 , y 6 , y 7 , y8 ] ,
y3 y4 y5
G: x2k x2k–2
x2j
x2k–1 x2j+1
x0
y1 y7
x2j–2 x2j–1
x10 x2 x3
y11 y10 y9 y6 y7 y8
y3 y4 y5
G/C:
xC
y1 y7
y6 y7 y8
y11 y10 y9
Fig.17
Descrierea algoritmului
84
M (M \P) (P \ M) .
2.4. Probleme
Fig. 18
2) Să se demonstreze că pentru orice arbore T are loc
inegalitatea 0 (T ) n , unde n este numărul de vârfuri ale
2
arborelui. Să se aducă exemple de arbori cu n vârfuri, pentru care
86
12) Să se formuleze condiţia necesară şi suficientă pentru
egalitatea
1 (G ) 1 (G ) .
13) Să se verifice inegalitatea
1 (G ) (G ) .
În cazul unui răspuns afirmativ, inegalitatea să se demonstreze.
În caz contrar, răspunsul să se argumenteze printr-un exemplu
concret.
M N .
M ' M 1 ,
N ' N 1,
M 'N ' M N .
x X 2
: y X 1 astfel încât x y S .
88
a) numărul maxim de vârfuri din G, care formează o mulţime
stabilă interior;
b) numărul minim de vârfuri din G, care formează o mulţime
stabilă exterior;
c) numărul maxim de muchii din G, care formează un cuplaj.
89
29) Să se determine numărul minim de dame (sau alte figuri –
cai, nebuni, turnuri) care pot fi plasate pe tabla de şah astfel, încât
fiecare pătrat al tablei să fie atacat de cel puţin una dintre piesele
plasate. Argumentaţi răspunsul în termenii mulţimilor stabile
exterior.
n n
1 (G ) , 1, ...
2 2
U T M 1 M 2 ... M k ,
M i M j , pentru i, j 1, k , i j,
m m
k M i k , unde m U T .
91
III. COLORAREA GRAFURILOR
f ( x) f ( y ) .
X X 1 U X 2 U ... X l , l k ,
X i I X j , pentru i j , i 1, l , j 1, l .
Fiecare clasă X i , i 1,2,..., l este o mulţime stabilă interior,
numită clasa culorii i.
92
Definiţia 3.1.2. Numărul minim k pentru care graful G este k-
colorabil se numeşte număr cromatic al grafului şi se notează prin
(G ) .
Fig.19
93
lecţie durează o oră academică şi unele lecţii nu pot fi ţinute simultan
(de exemplu, dacă sunt ţinute de acelaşi profesor).
Vom examina graful G vârfurile căruia corespund bijectiv
lecţiilor şi orice două vârfuri sunt adiacente, dacă şi numai dacă
lecţiile corespunzătoare nu pot fi ţinute în acelaşi timp. Uşor se
observă că orice colorare corectă a acestui graf determină un orar
posibil (lecţiile ce corespund vârfurilor din clasa cu aceeaşi culoare
pot fi predate concomitent) şi invers, orice orar posibil determină o
colorare corectă a grafului G . Orarele optimale corespund
colorărilor corecte minimale, iar numărul (G ) indică timpul minim
în care pot fi ţinute toate lecţiile.
descrisă astfel:
r (G ) H i | H i şi H i H j pentru orice H j , i j . (2)
96
Pasul 1. Considerăm r=1. Determinăm mulţimile de vârfuri
S , j 1,2, , q r , ale r-subgrafurilor maximale ale grafului G. (Se
r
j
Pasul 5.
(i) Dacă există o mulţime S ' Q cu proprietatea S S ' ,
atunci trecem la pasul 2.
(ii) Dacă există o mulţime S ' Q pentru care S S ' , atunci
efectuăm transformarea:
Q Q S ' .
Procedăm în aşa mod cu toate mulţimile S ' Q ce posedă
proprietatea indicată.
Considerăm Q Q S şi trecem la pasul 2.
(iii) În caz câ nici una dintre condiţiile (i) şi (ii) nu se
îndeplineşte, considerăm Q Q S şi trecem la pasul 2.
97
Pasul 6. Dacă j q r , atunci considerăm j=j+1 şi trecem la
pasul 2. Dacă j q r , atunci fixăm j 1 , r r 1 , q r | Q | şi
trecem la pasul 2.
2 4
1 5
7 6
Fig.20
Pentru S12 :
Pasul 2. Pentru graful G 2 generat de mulţimea de vârfuri
1,4,6,7 mulţimea stabilă interior este S1 1,4,6 .
Pasul 3. S 2,3,5 1,4,6 este exclusă conform pasului 5 (i).
Pasul 2. S1 7 .
Pasul 3. S 2,3,5 7 .
*Pasul 5. Q 1,4,6, 2,3,5 ,1,4,6 2,5,7 ,2,3,5 7 .
Pentru S13 :
Pasul 2. Mulţimea stabilă interior a grafului G 3 generat de
mulţimea de vârfuri 1,3,4,6 este S1 1,4,6 .
Pasul 3. S 2,5,7 1,4,6 este exclusă conform pasului 5 (i).
Pasul 2. S1 3 .
Pasul 3. S 2,5,7 3 este exclusă conform pasului 5 (i).
Pentru S14 :
Pasul 2. Pentru graful G 4 generat de mulţimea de vârfuri
1,3,4,5,7 mulţimea stabilă interior este S1 1,4 .
Pasul 3. S 2,6 1,4 este exclusă conform pasului 5 (i).
Pasul 2. S1 3,5 .
Pasul 3. S 2,6 3,5 este exclusă conform pasului 5 (i).
Pasul 2. S1 5,7 .
Pasul 3. S 2,6 5,7 este exclusă conform pasului 5 (i).
99
Astfel, la finele primei iteraţii, care aplică paşii 2-5 ai
algoritmului, se obţine familia Q (pasul marcat cu asterisc) de
j
mulţimi S 2 ce corespund 2-subgrafurilor maximale. Acţionând în
mod analogic, pot fi construite 3-subgrafurile maximale etc.
În cazul grafului G din fig. 20, continuând realizarea pas cu pas
a algoritmului, printre mulţimile ce corespund 3-subgrafurilor
maximale se va obţine şi mulţimea S 31 1,4,6 2,5,3 7 care
1
satisface condiţia pasului 4: S 3 X . Deci numărul cromatic al
grafului G este egal cu 3, iar colorarea optimală este definită de
partiţia (a mulţimii X): 1,4,6 , 2,5,3 , 7 . Dacă vom continua
aplicarea algoritmului, atunci vom obţine încă o colorare a vârfurilor
grafului: 1,4,6 2,5,7 3 .
100
Pasul 3. Primului vârf necolorat x i i se atribuie „cea mai mică”
culoare, care nu a fost folosită la colorarea vârfurilor adiacente cu xi
. Trecem la pasul 2.
102
x1
y1
x6
x2
y2 y3
x4 x5 x6
y5 y6
y4
x7
y7
Fig.21
104
a) Deoarece în orice colorare corectă a muchiilor grafului G
muchiile incidente unui vârf au culori distincte, este adevărată
relaţia: ' (G ) (G ) , unde (G ) este gradul maximal al
vârfurilor grafului G.
b) Pentru orice graf G, este adevărată următoarea estimare dublă
a indicelui cromatic
(G ) ' (G ) (G ) 1 .
3.6. Probleme
105
3. Să se demonstreze că vârfurile unui graf plan pot fi colorate cu 6
culori.
4. Să se demonstreze prin inducţie că pentru orice graf plan G se
verifică inegalitatea (G ) 5 .
5. Să se construiască un graf G1 cu numărul cromatic (G1 ) 3
şi un graf G2 cu numărul cromatic (G2 ) 4 , care nu conţin
triunghiuri.
6. Vârfurile grafului G sunt numerotate în ordinea crescătoare a
gradelor. Să se demonstreze că dacă q este cel mai mare număr
pentru care este adevărată inegalitatea q d (v k ) 1 , atunci
(G ) q .
7. Să se demonstreze că (G ) l 1 , unde l este lungimea celui
mai lung lanţ elementar în graful G.
8. Să se determine indicii cromatici pentru grafurile:
106
11. Fie G complementarul grafului G cu n vârfuri. Să se
demonstreze următoarele inegalităţi pe care le verifică numărul
cromatic:
2 n (G ) (G ) n 1 ,
n (G ) (G ) ( n 1) 2 / 4 .
108
27. Să se dea un exemplu de două grafuri care au aceeaşi
succesiune a gradelor vârfurilor, iar numerele cromatice ale
acestora sunt diferite.
28. Să se propună un algoritm de colorare a muchiilor garfului K n
cu ( K n ) culori.
29. La un turneu de şah participă n şahişti. Ştiind că fiecare şahist
trebuie să joace câte o partidă cu fiecare din ceilalţi n-1
participanţi la turneu şi nu poate juca mai mult de o partidă pe
zi, să se afle numărul minim de zile în care se poate termina
turneul.
30. Să se dea un exemplu de graf, colorarea succesivă a vârfurilor
căruia nu este minimală.
31. Fie G un graf neorientat cu mulţimea de vârfuri X de cardinal n
şi mulţimea muchiilor U. Orice -colorare a acestui graf este
o funcţie f : X 1,2, , cu proprietatea că dacă ( x , y ) U ,
atunci f ( x) f (y) .
Să se demonstreze că numărul -colorărilor grafului G se
exprimă sub forma unui polinom de gradul n, numit polinomul
cromatic al grafului G şi notat PG ( ) în modul următor:
PG ( ) ( 1)|V| c (V ) , unde c (V ) este numărul
V U
componentelor conexe ale grafului parţial G ' X ;V al
grafului G.
32. Să notăm prin G-e graful obţinut din graful neorientat G prin
suprimarea muchiei sale e ( x, y ) , iar prin G | e graful obţinut
prin substituirea vârfurilor x, y cu un vârf nou z, adiacent cu
toate vârfurile grafului G care la rândul său erau adiacente fie
cu x, fie cu y. Să se demonstreze că:
PG ( ) PG e ( ) PG |e ( ) .
109
33. Dacă notăm prin K n graful complet cu n vârfuri, prin Tn – un
arbore cu n vârfuri şi prin C n – ciclul elementar cu n vârfuri,
atunci să se demonstreze că au loc relaţiile:
1. PK n ( ) ( 1) ( n 1) ;
n 1
2. PT ( ) ( 1) ;
n
n n
3. PC ( ) ( 1) (1) ( 1) .
n
110
IV. DRUMURI MINIME
111
Vom analiza un algoritm ce determină drumul minim dintre
două vârfuri fixate s şi t ale grafului orientat G cu ponderi
nenegative ale arcelor. Algoritmul respectiv a fost propus în 1959 de
către E.W. Dijkstra şi este considerat cel mai efectiv pentru
soluţionarea problemei formulate.
În acest algoritm, fiecărui vârf x al grafului G i se atribuie
două etichete. Prima etichetă d (x ) poate fi sau permanentă, sau
temporară. Dacă d (x ) este permanentă, atunci ea reprezintă
ponderea drumului minim ce uneşte vârfurile s şi x. În caz contrar,
d (x ) este lungimea drumului minim cu extremităţile s şi x care
trece numai prin vârfurile cu etichete permanente. A doua etichetă
(x ) este asociată oricărui vârf x al grafului G cu excepţia vârfului
s. La fiecare iteraţie eticheta (x ) indică vârful precedent vârfului x
în drumul minim ce uneşte extremitatea iniţială s cu cea finală x, şi
care trece prin vârfurile cu etichete permanente. Când eticheta d (t )
devine permanentă, atunci drumul minim cu extremităţile s şi t se
restabileşte uşor folosind etichetele (x ) .
Iniţial considerăm că vârful s are eticheta permanentă d ( s ) 0
iar toate celelalte vârfuri au etichete temporare egale cu .
Iteraţia generală a algoritmului constă în următoarele:
112
4.1. Algoritmul Dijkstra
3
4
a b 2
s 7
3
2 t
2
3
c d
113
Fig.22
Pasul 2. (y=s).
d (a) min d (a), d ( s) a( s ,a) , 0 4 4 , (a ) s ,
d (b) min d (b), d ( s ) a( s ,b) , 0 7 7 , (b) s ,
d (c) min d (c), d ( s ) a( s ,c) , 0 3 3 , (c) s ,
d (d ) min d (d ), d ( s ) a( s ,d ) , 0 , (d ) s ,
d (t ) min d (t ), d ( s ) a( s ,t ) , 0 , (t ) s .
Pasul 3. Deoarece
d ( x* ) min d ( a ), d (b), d (c), d ( d ), d (t ) d (c ) 3 ,
Pasul 2. ( y c ) .
d ( a) min d (a), d (c) a(c ,a) 4, 3 4 , (a ) s ,
d (b) min d (b), d (c) a (c ,b) 7 , 3 7 , (b) s ,
d (d ) min d (d ), d (c) a(c ,d ) , 3 3 6 , (d ) c ,
d (t ) min d (t ), d (c) a(c ,t ) , 3 , (t ) s .
Pasul 2. ( y a ) .
d (b) min d (b), d (a) a(a ,b) 7, 4 3 7 , (b) s ,
114
d (d ) min d (d ), d (a) a(a ,d ) 6, 3 3 6 , ( d ) c ,
d (t ) min d (t ), d (a) a(a ,t ) , 4 , (t ) s .
Pasul 2. ( y d ) .
d (b) min d (b), d (d ) a(d ,b) 7, 6 7 , (b) s ,
d (t ) min d (t ), d (d ) a ( d ,t ) , 6 2 8 , (t ) d .
Pasul 2. ( y b ) .
d (t ) min d (t ), d (b) a (b ,t ) 8, 7 2 8 , (t ) d .
Fig.23
Să ilustrăm aceasta printr-un exemplu. Fie graful G
reprezentat în fig. 23. În acest graf, drumul minim din s în t este
P * ( s, a, t ) . Lungimea acestui drum este egală cu 2-2=0. Aplicând
algoritmul lui Dijkstra, vom obţine însă un alt rezultat, şi anume
drumul P * ( s, t ) de lungimea 1.
116
k 1 arce. Spre deosebire de algoritmul Dijkstra, în această metodă
nici una dintre etichetele vârfurilor nu este permanentă.
Vom prezenta o expunere formală a acestui algoritm.
k 1 , | X | n .
Pasul 1. Considerăm:
S ( s ), k 1, d 1 ( s ) 0,
d 1 ( xi ) a ( s, xi ),
1 ( xi ) s , pentru orice xi (s )
şi d 1 ( xi ) , 1 ( xi ) 0 , pentru toate celelalte vârfuri.
Pasul 2. Pentru fiecare vârf xi (S ) ( xi s ) modificăm
eticheta d k 1 :
k1
d (xi ) min[d (xi ),min{d (xj ) a(x j,xi )}]
k k
,
xjTi
unde Ti ( xi ) S .
Dacă d k 1 ( xi ) d k ( xi ) , atunci ( xi ) x j . (La acest
k 1
117
Pasul 3.
k 1
a) Dacă k n 1 şi d ( xi ) d ( xi ) pentru toate vârfurile
k
-3 15 8 -10 16
6 x4 4 22
x1 x7
12
9
2 -7 18
11
x5 20 x6 -13 x9
118
Fig.24
Prima iteraţie
Pasul 2. ( S ) x 2 , x3 , x 4 , x5 , x 6 . Pentru vârful x 2 avem :
T2 x1 , x5 x 2 , x5 x5
şi
d 2 ( x 2 ) min - 3, d 1 ( x 5 ) a ( x5 , x 2 ) min 3, 2 12 3;
144444444244444443
x j x5
pentru x3 : T3 x 2 , x 4 , x7 , x x 2 , x5 x5 şi
d 2 ( x3 ) min , 5 8 ,
3 2 ( x3 ) x 2 ;
x j x2
pentru x 4 : T4 x 2 , x3 , x5 , x7 , x9 x 2 , x5 x 2 , x5 ,
d 2 ( x 4 ) min ,min 7 5 ,
315, 2 2 ( x 4 ) x5 ;
x j x2 x j x5
pentru x5 : T5 x1 , x2 , x6 x 2 , x5 x2 şi
d 2 ( x5 ) min 2, 312 2 ;
x j x2
119
pentru x 6 : T6 x 4 , x5 , x7 , x9 x 2 , x5 x5 ,
d 2 ( x6 ) min ,2
20 22 , 2 ( x 6 ) x5 .
x j x5
0, - 3, 8, - 5, 2, 22, , , .
A doua iteraţie
Pasul 2. ( S ) x 1 , x3 , x 4 , x5 , x 6 , x 7 , x8 , x9 .
Atunci obţinem
pentru x3 : T3 x 2 , x 4 , x7 , x8 x3 , x 4 , x5 x 4 şi
d 3 ( x3 ) min - 8, (-5 8) 8 ;
x x4
j
pentru x 4 : T4 x 2 , x3 , x5 , x7 , x9 x3 , x 4 , x6 x3 ,
d 3 ( x 4 ) min 5,
8 8 5 ;
x j x3
pentru x5 : T5 x1 , x2 , x6 x3 , x4 , x6 x6 şi
d 3 ( x5 ) min 2,22
20 2 ;
x j x6
pentru x 6 : T6 x4 , x5 , x7 , x9 x3 , x4 , x6 x4 ,
d 3 ( x6 ) min 22,
518 13 , 3 ( x6 ) x4 ;
x j x4
pentru x7 : T7 x4 , x6 , x8 x3 , x4 , x6 x4 , x6 ,
120
d 3 ( x7 ) min ,min 4,22
5 9 1 , 3 ( x7 ) x4 ;
x j x 4 x j x6
pentru x8 : T8 x3 , x7 x3 , x4 , x6 x3 ,
d 3 ( x8 ) min ,
824 16 , 3 ( x8 ) x3 ;
x j x3
pentru x9 : T9 x4 , x8 x3 , x4 , x6 x4 ,
d 3 ( x9 ) min ,
5 11 6 , 3 ( x9 ) x4 .
x j x4
121
A patra iteraţie
Pasul 2. ( S ) x3 , x4 , x5 , x6 , x7 , x8 , x9 .
T3 x8 , d 5 ( x3 ) 11 ;
T4 x3 şi d 5 ( x4 ) 5 ;
T5 x6 şi d 5 ( x5 ) 2 ;
T7 x6 , x8 şi d 5 ( x7 ) 1 ;
T8 x3 , d 5 ( x8 ) 13 şi 5 ( x8 ) x3
T9 x8 şi d 5 ( x9 ) 6 .
Vectorul etichetelor d ( xi ) este 0, - 3, 11, - 5, 2, - 7, - 1, 13,6 .
5
Pasul 4. S x8 .
A cincea iteraţie
Pasul 2. ( S ) x3 , x7 , x9 .
T3 x8 , d 6 ( x3 ) 11 ;
T7 x8 şi d 6 ( x7 ) 1 ;
T9 x9 şi d 6 ( x9 ) 6 .
6 5
Vectorul etichetelor d ( xi ) coincide cu d ( xi ) şi determină
ponderile drumurilor minime căutate. Drumurile minime respective
se restabililesc conform etichetelor i j vârfurilor grafului.
122
Dar această metodă devine inutilă în cazul grafurilor de dimensiuni
mari.
Vom analiza o metodă de rezolvare a problemei formulate
pentru un graf arbitrar (ponderile arcelor grafului pot fi atât pozitive,
cât şi negative), propusă de R.W. Floyd şi perfecţionată mai târziu de
J.D. Murchland. Metoda constă în transformarea de n ori a matricei
iniţiale D a ponderilor arcelor grafului. La iteraţia k elementul d ij al
matricei respective este egal cu ponderea drumului minim ce
porneşte din vârful xi spre vârful x j , cu condiţia că vârfurile
intermediare ale acestui drum aparţin mulţimii x1 , x 2 , , x k .
Pentru a restabili drumurile minime aflate, se defineşte matricea
[ ij ] cu dimensiunea n n . Elementul ij al matricei indică
predecesorul vârfului x j în drumul minim de la xi la x j .
Construim matricea ponderilor grafului G considerând:
a) d ii 0 pentru orice i 1,2 , , n ;
b) d ij (i j) egal cu lungimea arcului minim care uneşte vârful
xi cu vârful x j ;
c) d ij (i j) dacă în graf arcul ( xi , x j ) lipseşte.
Fie ij xi valorile iniţiale ale matricei pentru orice xi şi
xj .
Pasul 1. Considerăm k 0 .
123
kj , dacă (d ik d kj ) d ij ,
ij
ij , dacă d ij (d ik d kj ).
Pasul 4. a) Dacă pe diagonala principală a matricei D există cel
puţin un element d ii 0 , atunci graful G conţine un circuit cu
pondere negativă ce trece prin vârful x i . Prin urmare, problema nu
are soluţii. STOP.
b) Dacă d ii 0 pentru orice i 1,2,..., n şi k n , atunci
matricea D conţine ponderile tuturor drumurilor minime. STOP.
c) Dacă d ii 0 , pentru orice i 1,2,..., n şi k n , atunci
trecem la pasul 2.
124
lungimea drumului minim din vârful xi în vârful x j . Vom menţiona
că matricea D1 se obţine din matricea D 0 , matricea D 2 – din D1
, ş. a. m. d.
Deosebirea esenţială a algoritmului Dantzig de algoritmul
Floyd constă în faptul că la fiecare iteraţie matricea nou-construită
D m are dimensiunea m m , şi nu n n .
ij xi , i , j 1,2, , n .
m
d mj 0
min d mi
i 1,2 ,,m 1
d ijm1 , j 1,2, ,m 1 ,
(4.1)
m
d im
j 1,2 ,,m 1
min d ijm1 d 0jm , i 1,2, ,m 1 ,
(4.2)
m 1
d ijm mind im m 1
d mj
,d ijm1 , i , j 1,2, ,m 1 , (4.3)
Modificăm matricea :
125
mj , dacă (d imm d mjm ) d ijm1 ,
ij m1
ij , dacă d ij (d im d mj ).
m m
126
A B min k ai b j : i, j 1,2, K , k .
De exemplu, dacă A=(1, 3, 4, 8) şi B=(3, 5, 7, 17), atunci
A B min 4 (1, 3, 4, 8, 3, 5, 7, 17) (1, 3, 4, 5) , iar
A B min 4 (1 3, 1 5, 1 7, 1 17, 3 3, 3 5, K ) (4, 6, 7, 8)
.
0
cortegiul d ii toate componentele, cu excepţia primului ( d ii1 0 ),
0
127
cortegiul ale cărui componente reprezintă ponderile primelor k
drumuri minime din xi în x j . Fie D matricea cu elementele d ij .
Dacă este necesar de determinat ponderile a k drumuri
minime ce duc dintr-un vârf fixat p (p=1,2,...,n) în celelalte vârfuri
ale grafului, este suficient de aflat doar elementele liniei p a matricei
D .
Menţionăm că algoritmul de căutare dublă poate fi aplicat
numai în grafuri ce nu conţin circuite cu ponderi negative.
a) Căutarea inversă:
d pj2 r 1 l1 j d p21r 1 l 2 j d 2p r21 l nj d pn
2 r 1
d pj2 r ,
pentru j n,n 1, ,2,1 .
b) Căutarea directă:
2r 2
d pj
u1 j d p21r 2 u 2 j d 2p r2 2 u nj d pn
2r 2
d pj2 r 1 ,
pentru j 1,2, ,n .
128
După aplicarea algoritmului de căutare dublă, drumul care
corespunde cortegiului d ij (d ij , , d ij ) M poate fi restabilit în
k
1 k
felul următor:
Fie că este necesar să determinăm al m-lea drum minim din
vârful i în x j ( drumul minim cu numărul de ordine m care duce
x
din xi în x j ) ce corespunde elementului d ij . Acest drum conţine
m
d m d m 1 C ;
mm mm
dimm dimm 1dmm
m
, pentru orice i m ;
m m m 1
dmi d mm d mi , pentru orice i m ;
d m d m d m d m 1, pentru orice i, j m .
ij im mj ij
Algoritmul generalizat Dantzig la fel se obţine din algoritmul
iniţial expus în paragraful 4.4, dar relaţiile (4.1), (4.2), (4.3) şi (4.4)
se substituie cu următoarele:
C
0 m 1 m 1
d m
mm d mm d 0
mi d m 1
ij d 0
jm
;
i 1 j 1
m 1
m
d mi d mm
m 0
d mj d mji 1 , i 1, 2, K , m 1 ;
j 1
130
m 1
m
d im d ijm 1 d 0jm d mm
m
, i 1, 2, K , m 1 ;
j 1
d ijm d im
m m
d mj d ijm 1 , i, j 1, 2, K , m 1 .
4.6. Probleme
Fig.25
132
Tabelul I
Rezervorul A B C D
A 0,00 0,13 0,14 0,15
B 0,08 0,00 0,13 0,08
C 0,17 0,12 0,00 0,18
D 0,01 0,06 0,13 0,00
Tabelul II
Aprobarea de către guvern
Etapa
Realizarea pe piaţă
Evaluări teoretice
Experimente în laboratoare
Tempoul
Rapid 2 ; 10 1 ; 12 2;3 3 ; 15
5 19 5 9 3 2
1 14 3 8 7 14 10
10 6 6 10 8 3
4 11 5 7 9
Fig. 26
134
2 3
7 10 19
6
8 4 8 5 -7
1 6
13 12
6 4
7 10 8
Fig. 27
135
(1, 2)
1 2
(1, 2)
(1 0
, 3)
,9)
(6, 9
(20
)
, 9)
( 4, 9
(15
)
)
(3, 2
(8, 6)
5 3
(8
,8 )
,4)
(15 ( 14
,8)
Fig. 28
BIBLIOGRAFIE
137
17. Jensen T.R., Toft B. Graph Coloring Problems. – New York,
1995.
18. Jungnickel D. Graphs, Networks and Algorithms. – Berlin:
Springer, 1999.
139
Sergiu CATARANCIUC
Angela NICULIŢĂ
Aspecte algoritmice
ale teoriei grafurilor
Partea I
140