You are on page 1of 458

ALGORITMICA

GRAFURILOR
C. Croitoru
2012-2013
0. Probleme,Algoritmi,Complexitate
Vom considera o problema (computat ionala)
ca ind o aplicat ie
1 : I O,
(I mult imea intrarilor problemei, mult imea instant elor
problemei; O mult imea iesirilor, raspunsurilor, solut iilor)
care pentru ecare intrare i I ofera o iesire
1(i) O.
Daca O = da, nu atunci 1 se va numi prob-
lema de decizie, 1(i) da, nu va raspunsul
(la ntrebarea pusa de 1), iar forma uzuala de
prezentare a problemei va :
1 Intrare: i I.
Intrebare: descriere ... ?
Exemplu:
Compus Intrare: n N n 2.
Intrebare: Exista p, q N p, q 2 si n = pq?
1
Un alt tip de probleme care apar frecvent sunt
cele de cautare : mult imea O cont ine pentru
ecare i I macar o solut ie acceptabila n ra-
port cu un anumit criteriu precizat, iar pro-
blema cere gasirea unei astfel de solut ii.
O clasa speciala de astfel de probleme este
cea a problemelor de optimizare, care sunt de
maximizare sau minimizare.
Exemple:
Drum Intrare: G un graf, a, b doua varfuri ale lui G.
Iesire: P un drumn G de la a la b (daca ).
DrMin Intrare: G graf, a, b varfuri n G,
o funct ie de lungime a muchiilor lui G.
Iesire: P

un drumn G de la a la b cu suma
lungimilor muchiilor minima, printre
toate drumurile de la a la b n G.
MaxCut Intrare: G graf,
o funct ie de lungime a muchiilor lui G.
Iesire: O bipartit ie (S, T) a mult imii varfurilor
grafului G cu suma lungimilor muchiilor
dintre cele doua clase maxima.
2
Oricarei probleme de optimizare i se poate aso-
cia o problema de decizie (care ne va da informat ii
asupra dicultat ii ei computat ionale). Pentru cele
doua probleme de optimizare de mai sus, avem:
DrMin-D Intrare: G graf, a, b varfuri n G, k N,
o funct ie de lungime a muchiilor lui G.

Intrebare: Exista P drumn G de la a la b


cu suma lungimilor muchiilor k ?
MaxCut-D Intrare: G graf, k N,
o funct ie de lungime a muchiilor lui G.

Intrebare: Exista (S, T) bipartit ie a mult imii


varfurilor lui G cu suma lungimilor
muchiilor dintre cele doua clase k ?
Vom considera n continuare doar probleme de
decizie.
Pentru a rezolvate cu ajutorul calculatorului
problemele sunt codicate.
Vom considera o mult ime nita xata nu-
mita alfabet,

mult imea tuturor cuvintelor


peste .
3
Obiectele care apar n descrierea unei prob-
leme (numere rat ionale, grafuri, funct ii, ma-
trici etc.) vor reprezentate cu ajutorul unor
cuvinte w

. Lungimea cuvantului w se va
nota cu [w[. Orice mult ime de cuvinte peste ,
deci o submult ime a lui

se numeste limbaj
(peste ).
Problemele de decizie au forma Dat un anu-
mit obiect, are el o anumita proprietate? Cum
obiectele le reprezentam cu ajutorul cuvintelor,
nseamna ca problema se reduce la ntrebarea:
Dat un cuvant, are el o anumita proprietate?
Vom considera problema de decizie o funct ie
P :

da, nu.
Limbajul asociat problemei P este
P
1
(da) = w[w

si P(w) = da.
4
Vom considera ca un algoritm este o funct ie

A :

da, nu, nedecidabil.


Limbajul L

este acceptat de algoritmul A


daca L = w[w

si A(w) = da.
Limbajul L

este decis de algoritmul A


daca w L : A(w) = da si w , L : A(w) = nu.
Limbajul L

este acceptat de algoritmul


A n timp polinomial daca L este acceptat de
A si k N astfel ncat pentru orice w L
algoritmul A evalueaza A(w) = da n timpul
C([w[
k
).
Limbajul L

este decis de algoritmul A


n timp polinomial daca k N astfel ncat
pentru orice w

algoritmul A evalueaza
A(w) = da, daca w L si A(w) = nu, daca
w , L, n timpul C([w[
k
).

Preferam un mod informal de prezentare a not iunilor


de algoritm si timp de execut ie
5
Clasa de complexitate P:
P =L

[A alg. a.. L e decis de A


n timp polinomial.
Daca P e o problema de decizie, atunci ea
este rezolvabila n timp polinomial daca lim-
bajul L = P
1
(da) satisface L P. Se noteaza
aceasta (cam abuziv) P P.
De exemplu, problema DrMIN-D este rezolv-
abilan timp polinomial daca funct ia de lungime
(specicatan intrarea ei) este cu valori neneg-
ative. Daca se permit si valori negative, atunci
nu se cunoaste nici o demonstrat ie a aparte-
nent ei DrMin-D P (si nici nu se crede c-ar
exista una). Apartenent a
Compus P s-a demonstrat abia n anul 2002.
Observat ii. 1. Daca notam
P

= L

[A alg. a.. L e acceptat de A


n timp polinomial,
se observa imediat ca P P

si nu e dicil sa
se arate si incluziunea inversa, deci P = P

.
2. Se verica usor ca daca P P atunci si

\ P P.
6
Vericare n timp polinomial.
Un algoritm de vericare este o funct ie
A :

da, nu, nedecidabil.


Pentru A(x, y), x este intrarea iar y este certi-
catul.
Limbajul L

este vericat de algoritmul de


vericare A daca
L = w[w

si y

a. . A(w, y) = da.
Clasa de complexitate NP:
NP =L

[ A algoritm de vericare
cu timp de lucru polinomial a..
L =x

[ y

, k N a. .
[y[ = C([x[
k
) si A(x, y) = da
.
Daca P e o problema de decizie, atunci ea este
problema (din) NP daca limbajul L = P
1
(da)
satisface L NP.
7
Observat ie. NP este mnemonic pentru Nede-
terminist Polinomial si nu pentru NePolinomial.
Un argument ca nu e bine sa asimilam NP cu
nepolinomial este si faptul ca P NP.
Justicarea este imediata: Daca L P, atunci exista A :

da, nu, nedecidabil algoritm care decide Ln timp


polinomial. Consideram A

da, nu, nedecidabil,


satisfacand A

(x, x) = A(x) pentru orice x

. Se vede
usor ca L este vericat de A

n timp polinomial.
Din denit iile de mai sus ar fost mai normal sa notam
VP (vericabil polinomial). Sintagma Nedeterminist
Polinomial se justica daca am considera algoritmi nede-
terministi n care controlul execut iei este astfel ncat
dupa ecare pas este posibil sa se execute unul oare-
care dintre pasii specicat i ntr-o mult ime nita de pasi
succesori. Un astfel de algoritm accepta un cuvant de
intrare daca este posibila o execut ie care sa conduca
la rezultatul da. Se poate arata ca aceasta denit ie
a acceptarii nedeterministe este echivalenta cu cea de
vericare data mai sus, n care certicatul este utilizat
pentru efectuarea alegerilor corecte ale pasilor urmatori
ai unei execut ii a algoritmului nedeterminist.
8
NP noteaza clasa problemelor de decizie pen-
tru care raspunsurile armative au certicate
care pot folosite pentru a demonstra succint
(n timp polinomial) corectitudinea lor.
Intuitiv, NP este clasa tuturor problemelor de
decizie pentru care se poate verica un raspuns
pozitiv (da) rapid daca ni se da o solut ie.
De exemplu, pentru problema MaxCut-D un raspuns
armativ are drept certicat o partit ie (S

, T

) a mult imii
varfurilor grafului (iar proprietatea ca suma lungimilor
muchiilor cu o extremitate n S

si cealalta n T

nu
depaseste pragul k se face n timp polinomial). Deci,
MaxCut-D NP.
Daca am considera urmatoarea problema de
decizie:
UnDrumIntrare: G un graf, a, b doua varfuri ale lui G.

Intrebare: un unic drum de la a la b n G?


9
Cum s-ar putea justica un raspuns da la o
problema UnDrum? Daca prezentam un drum
anume drept certicat, el nu ne asigura ca nu
mai exista si altele. O demonstrat ie succinta
(graful e mare) pare a nu exista. Deci nu stim
daca UnDrum NP.
Clasa de complexitate co-NP:
co-NP = L

\ L NP.
O problema de decizie P co-NP daca
L = P
1
(da) co-NP (echivalent, L = P
1
(nu) NP).
Exemplu de problema din co-NP:
NeHam Intrare: G un graf.

Intrebare: Este adevarat ca n G nu exista


un circuit care sa treaca exact o data
prin ecare varf al sau?
Observat ie. P NP co-NP.
10
Reduceri polinomiale.
Fie L
1
, L
2

. Spunem ca L
1
se reduce poli-
nomial la L
2
, si notam aceasta prin L
1
L
2
,
daca exista f :

o funct ie polinomial
calculabila astfel ncat w

: w L
1
daca
si numai daca f(w) L
2
.
f se numeste funct ie de reducere si algoritmul polinomial
F care calculeaza f, algoritm de reducere polinomiala.
Observat ii. 1. Daca L P si L

L, atunci L

P.
Fie A un algoritm polinomial care decide L si F un al-
goritm de reducere polinomiala a lui L

la L. Atunci,
A

= A F este un algoritm polinomial care decide L

.
(x , A

(x) = da A(F(x)) = da F(x) L


x L

; A

e polinomial deoarece mult imea polinoamelor


e nchisa la operat ia de compunere).
2.Relat ia este tranzitiva: L
1
L
2
, L
2
L
3
L
1
L
3
.
Limbajul L

este NP-dicil (engl. NP-hard)


daca L

NP are loc L

L.
Limbajul L

este NP-complet daca


L NP si L este NP-dicil.
11
Terminologia se transfera pentru probleme de decizie:
Spunem ca problema de decizie P
1
se reduce
polinomial la problema de decizie P
2
, si notam
P
1
P
2
, daca L
1
= P
1
1
(da) L
2
= P
1
2
(da).
Problema de decizie P este NP-dicila daca
P

NP are loc P

P.
Problema de decizie P este NP-completa daca
P NP si P este NP-dicila.
Folosind observat ia 1 si faptul ca P NP rezulta urmatoarea
Teorema Daca P o problema oarecare NP-
completa satisface P P atunci P = NP.
Rezulta ca problemele NP-complete formeaza submult imea lui NP
care cont ine cele mai dicile probleme. Daca gasim un algoritm
polinomial pentru una dintre ele, putem construi un algoritm poli-
nomial pentru oricare alta problema din NP. Din pacate, desi nu
exista o demonstrat ie, oamenii cred ca, de fapt, aceste probleme
nu admit algoritmi polinomiali de rezolvare. Diagrama urmatoare
sugereaza relat iile care se crede ca existantre aceste clase de com-
plexitate:
12
P
NP
NP-hard
NP-complete
Se obisnuieste sa se spuna ca o problema de optimizare
este NP-dicila, daca problema de decizie asociata este
asa.
Pentru ca sa ne aliniem la denit iile precedente, vom
spune ca o problema oarecare P (nu neaparat de decizie)
este NP-dicila daca existent a unui algoritm polinomial
pentru P implica P = NP.
Comentariu metaforic: Saying that a problem is NP-hard is
like saying If I own a dog, then it can speak uent English. You
probably dont know whether or not I own a dog, but youre prob-
ably pretty sure that I dont own a talking dog. Nobody has a
mathematical proof that dogs cant speak English. Nevertheless,
no sane person would believe me if I said I owned a dog that spoke
uent English. So the statement If I own a dog, then it can speak
uent English has a natural corollary: No one in their right mind
should believe that I own a dog! Likewise, if a problem is NP-
hard, no one in their right mind should believe it can be solved in
polynomial time. [Je Erickson, Univ. of. Illinois]
13
Singura clasa de complexitate pentru care nu am sugerat
un exemplu este cea a problemelor NPcomplete. Primul
om care a demonstrat existent a unei astfel de probleme
este Cook, care n 1971 a aratat ca SAT NP, unde
SAT
Instant a: U = u
1
, . . . , u
n
o mult ime nita de variabile
booleene.
C = C
1
C
2
. . . C
m
o formula n forma
conjunctiva peste U:
C
i
= v
i
1
v
i
2
. . . v
i
k
i
i = 1, m, unde
i
j
1, . . . , n astfel ncat
v
i
j
= u

sau v
i
j
= u

.
Intrebare: Exista o atribuire t : U A, F a. .
t(C) = A ?
Evaluarea lui t(C) se bazeaza pe formulele uzuale din
calculul boolean:
A A = A, F A = F F = A F = F,
F F = F, F A = A F = A A = A,
F = A, A = F, (F) = F,(A) = A,
si e clar ca se poate face n timp polinomial.
14
Apartenent a lui SAT la NP e clara, un certi-
cat pentru raspunsul da este o atribuire t
0
care
poate vericata n timp polinomial.
O demonstrat ie ca orice limbaj din NP se reduce poli-
nomial la SAT necesita o abordare formala not iunilor de
algoritm si timp de execut ie (pe care le-am considerat
aici la nivel intuitiv) si o omitem.
3SAT este restrict ia lui SAT n care ecare
clauza C
i
are exact trei literali (k
i
= 3), un
literal v
i
j
ind, asa cum este descris mai sus, o
variabila sau negat ia ei.
Se poate arata usor ca SAT 3SAT si deci se
obt ine ca 3SAT este NP-completa (apartenent a
la NP e clara ind o restrict ie a lui SAT care e
din NP, iar tranzitivitatea relat iei mpreuna
cu teorema lui Cook termina demonstrat ia).
15
Schit a de demonstrat ie de mai sus este uzuala
n demonstrat iile de NP-completitudine si o ex-
plicitam:
Pentru a arata ca o problema de decizie P este
NP-completa se procedeaza astfel:
1. Se arata ca L = P

1(da) satisface L NP.


2. Se selecteaza un limbaj L

despre care stim


ca este NP-complet.
3. Se ncearca construirea unui algoritm de
reducere F de la L

la L.
4. Se demonstreaza ca F e algoritm de reducere.
5. Se arata ca F este algoritm polinomial.
Pentru pasul 2 se poate consulta
http://www.nada.kth.se/~viggo/problemlist/
16
I. Vocabular al Teoriei grafurilor
1. Denit ia unui graf
Un graf este o pereche G = (V (G), E(G)),
unde
- V (G) este o mult ime nita nevida, iar
- E(G) este o submult ime a mult imii 1
2
(V (G))
a part ilor cu doua elemente ale lui V (G).
V (G) se numeste mult imea vrfurilor grafului
G si numarul elementelor sale

V (G)

, este ordinul grafului G;


E(G) este mult imea muchiilor grafului G si
numarul sau de elemente,

E(G)

, este dimen-
siunea grafului G.
Atunci cnd nu exista posibilitatea confuziilor,
vom nota simplu, G = (V, E).
17
Daca e = u, v E(G) este o muchie a gra-
fului G vom nota e = uv (pentru simplicarea
scrierii) si vom spune ca:
muchia e uneste vrfurile u si v;
vrfurile u si v sunt adiacente n G;
muchia e este incidenta cu vrfurile u si v;
vrfurile u si v sunt vecine n G;
vrf. u si v sunt extremitat ile muchiei e.
Daca v V (G), atunci mult imea
N
G
(v) = w[w V (G), vw E(G)
se numeste vecinatatea vrfului v n G.
Se mai noteaza N
G
(v) =
G
(v).
18
Remarcam faptul ca graful G poate denit
(n mod echivalent) ca o pereche
_
V (G),
G
_
unde,

G
: V (G) 1
_
V (G)
_
asociaza ecarui vrf vecinatatea sa, si sat-
isfacand condit iile: v V (G) : v ,
G
(v) si
u, v V (G) u
G
(v) v
G
(u).
Doua muchii e si e

care au o extremitate co-


muna se numesc adiacente.
Intuitiv, un graf G = (V (G), E(G)) poate
reprezentat (dupa cum sugereaza si numele
sau) cu ajutorul unei guri plane formata dintr-
o mult ime de mici forme geometrice aata
n corespondent a cu mult imea de vrfuri V (G),
doua forme ind unite printr-o curba simpla
daca si numai daca, perechea de vrfuri core-
spunzatoare lor este o muchie a grafului G.
Corespondent a dintre varfurile grafului si g-
urile geometrice considerate este vizualizata
19
uneori cu etichete atasate varfurilor. De aseme-
nea, muchiile pot etichetate.

In plus, sunt
utilizate diferite atribute grace pentru expre-
sivitatea desenului, diagramei.
De exemplu,
gura si
reprezinta acelasi graf, desi lipsa etichetelor
face dicila realizarea acestui fapt.
Urmatoarele trei reprezentari ale grafului
G = (1, 2, 3, 4, 12, 13, 14, 23, 24, 34) sunt mult
mai clare:
1 2
3 4
1
4
3
2
1
2
4
3
20
O mult ime independenta de vrfuri (sau
mult ime stabila) n G este o mult ime S
V (G) de vrfuri cu proprietatea ca
1
2
(S) E(G) =
(adica o mult ime de vrfuri neadiacente doua
cte doua).
Cardinalul maxim al unei mult imi stabile se
numeste numarul de stabilitate sau numarul
de independent a al grafului G si se noteaza
cu (G).
De exemplu, n graful G de mai jos mult imea
a este mult ime stabila (maximala n raport
cu incluziunea), dar numarul de stabilitate este
n, mult imea 1, . . . , n ind stabila de cardinal
maxim (n 1).

In graful H s-au evident iat
doua mult imi stabile care partit ioneaza mult imea
varfurilor, iar (H) = 6.
1
a
n
2
G
a
1
2
3
b
c
d
4
5
6
e
H
21
Problema urmatoare este naturala, usor de for-
mulat si apare deseori n diferite aplicat ii:
P1 Intrare: G un graf.
Iesire: (G) si un martor:
S m.stabila n G, cu [S[ = (G).
Desi foarte simpla (de formulat, la o prima
vedere), problema este NP-dicila. Problema
de decizie corespunzatoare,
SM Intrare: G un graf, k N.
Intrebare: Exista S m.stabila n G,
cu [S[ k?
este NP-completa (Karp, 1972). Probabil ca o
cauza a dicultat ii acestei probleme este faptul
ca doua mult imi stabile maximale (n raport
cu incluziunea) pot avea raportul cardinalelor
oricat de mare (vezi graful G din gura de la
pagina precedenta).
22
O mult ime independenta de muchii sau cu-
plaj n graful G este o mult ime de muchii nea-
diacente doua cte doua . Cardinalul maxim al
unei mult imi independente de muchii n G se
numeste numarul de muchie-independent a
al grafului G si se noteaza (G).
Exemplu, pentru graful G:
numarul de muchie independent a, (G) este 6,
un cuplaj cu acest numar de muchii ind pus
n evident a. Problema
P2 Intrare: G un graf.
Iesire: (G) si un martor:
M cuplaj n G, cu [M[ = (G).
23
este foarte asemanatoare cu P1 (este de fapt,
o restrict ie a lui P1 pentru intrari care sunt
line-grafuri) si totusi s-a aratat ca este n P(
Edmons, 1965).
Diferent a de complexitate provine, probabil,
din faptul ca raportul dintre cardinalele a doua
cuplaje maximale n raport cu incluziunea nu
poate depasi 2.
Daca G = (V (G), E(G))este un graf si p
N

, se numeste pcolorare a (vrfurilor) lui


G o aplicat ie c : V (G) 1, . . . , p cu pro-
prietatea ca c
1
(i) este o mult ime stabila n
G, i 1, . . . , p (remarcam ca, din denit ia
mult imilor stabile, este o mult ime stabila ).
Numarul cromatic al grafului G, notat (G),
este cea mai mica valoare a lui p N

pentru
care G admite o p-colorare.
24
Exemplu:

In graful G desenat mai jos, sunt
evident iate 2 colorari una cu 5 culori si una cu
4 culori. Se poate argumenta ca (G) = 4.
5-colorare
rosu= culoarea 1
galben= culoarea 2
verde=culoarea 3
albastru=culoarea 4
negru=culoarea 5
4-colorare
Problema urmatoare apare n diverse situat ii
practice (de exemplu n problemele de orar,
saun problemele de acoperire din wireless net-
works):
P3 Intrare: G un graf.
Iesire: (G) si un martor:
o (G)-colorare a lui G.
25
Din problema P1 stim ca mult imile stabile ale
grafului sunt greu de stapanit, si cum prob-
lema P3 cere de fapt sa partit ionam mult imea
de varfuri a grafului ntr-un numar cat mai mic
de mult imi stabile, este normal ca si aceasta
problema sa e NP-dicila. Problema de de-
cizie
COL Intrare: G un graf, k N.
Intrebare: Admite G o k-colorare?
este NP-completa chiar daca o restrict ionam
la cazul particular k = 3. Exista nsa restrict ii
ale problemei pentru care avem apartenent a la
P (de exemplu, daca G este un graf perfect).
O pcolorare a muchiilor lui G este o aplicat ie
c : E(G) 1, . . . , p cu proprietatea ca c
1
(i)
este un cuplaj al lui G, i 1, . . . , p.
Indicele cromatic al grafului G, notat

(G),
este cea mai mica valoare a lui p N

pentru
care G admite o p-colorare a muchiilor.
26
Exemplu: In graful de mai jos
este evident iata o 3-colorare a muchiilor; este
clar ca este si optima, ntrucat muchiile inci-
dente n acelasi varf trebuie sa aiba culori dis-
tincte. Problema
P4 Intrare: G un graf.
Iesire:

(G) si un martor:
o

(G)-colorare a muchiilor lui G.


27
s-a dovedit a NP-dicila, desi era de asteptat
ca (lucrand cu cuplaje, iar problema P2 ind
din P) ca ea sa e rezolvabila polinomial.
Diferent a fat a de P3 (P4 este de fapt o restrict ie
a lui P3 pe clasa line-grafurilor) este can timp
ce P3 s-a demonstrat ca nu poate usor aprox-
imabila (n timp polinomial), problema P4 poate
rezolvata aproximativ cu o eroare de o uni-
tate (deci daca se greseste, atunci colorarea
obt inuta are cel mult o culoare n plus fat a de
cea optima).
Doua grafuri, G = (V (G), E(G)) si H =
(V (H), E(H)) se numesc izomorfe, si notam
aceasta prin G

= H, daca exista o biject ie
: V (G) V (H)
cu proprietatea ca aplicat ia
: E(G) E(H),
denita pentru orice uv E(G) prin (uv) =
(u)(v) este o biject ie.
28
(deci, doua grafuri snt izomorfe daca exista o
biject ientre mult imile lor de vrfuri care induce
o biject ie ntre mult imile lor de muchii).
Grafurile urmatoare sunt izomorfe, asa cum se
sugereaza n gura
a
b d
c e
1
2 4
3 5
G H
Problema urmatoare este utila n multe prob-
leme de modelare discreta (de exemplun chimie)
ISO Intrare: G, H grafuri.
Intrebare: G

= H?
29
Nu s-a demonstrat daca aceasta problema este
sau nu NP-completa (apartenet a la NP este
clara). Se pare ca face parte dintr-o clasa
de probleme aata ntre P si NP). Exemplul
urmator arata dicultatea problemei (cele doua
grafuri au acelasi ordin, aceeasi dimensiune,
varfurile au acelasi numar de muchii incidente,
si totusi ele nu-s izomorfe: in primul apar cir-
cuite de lungime 4, iar n al doilea nu !)
G H
Daca G = (V (G), E(G))este un graf, un auto-
morsm al lui G este o permutare a lui V (G)
30
( : V (G) V (G), bijectiva) cu proprietatea
ca induce o permutare a lui E(G)
( : E(G) E(G), (uv) = (u)(v), uv
E(G), este bijectiva ).
Mult imea automorsmelor grafului G formeaza,
n raport cu operat ia de compunere a aplicat iilor,
un grup numit grupul automorsmelor gra-
fului G, notat Aut(G).
Aut(G) este tranzitiv daca
v V (G), w [ Aut(G) : (v) = w = V (G)
Exemplu:
0
1
2
3
4
5
6
31
2. Variat ii n denit ia unui graf
a) Daca n denit ia unui graf, se considera
E(G) o multimult ime pe 1
2
_
V (G)
_
, adica este
data o funct ie m: 1
2
_
V (G)
_
N, se obt ine
not iunea de multigraf.
Un element e 1
2
_
V (G)
_
cu m(e) > 0 este muchie a
multigrafului, simpla daca m(e) = 1, multipla daca
m(e) > 1.
Oricarui multigraf M i se poate asocia un graf G(M),
numit graful suport al lui M, obt inut prin nlocuirea
ecarei muchii multiple cu o singura muchie cu ace-
leasi extremitat i. Pictural, modicarile de reprezentare
sunt evidente; graful suport al multigrafului desenat mai
jos, este graful desenat pe pagina precedenta la care se
adauga muchiile 61, 62 si 63.
0 1
2
3
4
5
6
32
b) Dacan denit ia unui graf se considera E(G)
ca o multimult ime pe mult imea part ilor nevide
cu cel mult doua elemente ale lui V (G), atunci
G se numeste graf general sau pseudograf.
O muchie e E(G), e = v se numeste bucla
n vrful v.
Exemplul urmator arata un graf general M si
graful sau suport.
0 1
4
5
3 2
3
0 1
3 2
M
G(M)
Pentru evitarea confuziilor, uneori grafurile
asa cum le-am denit se mai numesc si grafuri
simple .
33
c) Un digraf este o pereche D = (V (D), A(D))
unde V (D) este o mult ime nita nevida (mult imea
vrfurilor digrafului D), iar
A(D) V (D) V (D) este mult imea arcelor
digrafului D.
Daca a = (u, v) este arc n D, notam a = uv si
spunem ca
u si v snt adiacente;
a este incident din u ;
a este incident spre v;
u domina pe v;
a este incident cu u spre exterior;
a este incident cu v spre interior;
u este extremitatea init iala a lui a si v este
extremitatea nala a lui a.
Pictural, digrafurile se reprezinta la fel ca si
grafurile, adaugnd curbei ce uneste doua g-
uri asociate varfurilor o sageata pentru a pre-
ciza perechea de vrfuri corespunzatoare arcu-
lui desenat.
34
Exemplu:
0
1
2
3
4
5
6
7
8
99
O pereche de arce de forma vw si wv se numeste
pereche simetrica de arce.
Daca D este un digraf, inversul sau D

este
digraful obt inut din D prin nlocuirea ecarui
arc vw cu opusul sau wv.
Daca D este un digraf, atunci nlocuind ecare
arc cu mult imea de vrfuri care l formeaza,
obt inem, n general, un graf general M(D).
Graful suport al acestuia se numeste graful
suport al digrafului D.
35
Daca M(D) este graf atunci D se numeste graf
orientat (poate gndit ca obt inut prin ori-
entarea ecarei muchii a grafului M(D)).
Un digraf complet simetric este un digraf n
care ecare pereche de vrfuri este unita prin
exact o pereche de arce simetrice.
Un turneu este un digraf n care orice doua
vrfuri snt unite prin exact un arc.
0
1
2
3
4
Dinamo
Rapid
Petrolul
Stiinta
Steaua
36
d) Grafurile innite se obt in prin nlaturarea
condit iei de nitudine a mult imii de vrfuri si
(sau) muchii. Acestea se considera a numarabile,
iar tratarea lor utilizeaza instrumente care nu
sunt neaparat combinatorii ( de exemplu, mecan-
isme generative). Un graf G local nit este
un graf innit n care N
G
(v) este nita pentru
orice vrf v.
e) Hipergrafurile se obt in renunt and la condit ia
ca muchiile pot avea cel mult doua varfuri,
( se obt in astfel hipermuchiile). Ele se mai
numesc sisteme nite de mult imi si vom arata
ca pot studiate via grafurile bipartite, desi
exista rezultate combinatorii importante si cu
aplicat ii directe (de exemplun bazele de date)
n formalismul care urmeaza extinderea tratarii
grafurilor (din punct de vedere combinatoriu
sau algebric).
37
3. Grade
Daca G = (V, E)este un graf si v V un vrf
al sau, atunci valent a sau gradul lui v n G,
notat d
G
(v) sau
G
(v) este
[e [ e E, e incidenta cu v[.
Un vrf de grad 0 se numeste izolat; un vrf
de grad 1 se numeste pendant. Daca toate
vrfurile lui G au aceeasi valent a atunci G
se numeste graf valent sau regulat. Un
graf 0valent se numeste graf nul. Un graf
3valent se numeste graf trivalent sau cu-
bic. Un exemplu de graf trivalent este graful
lui Petersen:
Gradul maxim al unui varf al grafului G se
noteaza cu (G), iar gradul minim (G) .
38
Concepte analoage se pot deni si pentru di-
grafuri. Daca v este un vrf al digrafului D
atunci valent a interioara sau gradul interior
notat
in
(v) sau

D
(v) sau d

D
(v), este numarul
arcelor incidente cu v spre interior; valent a
exterioara sau gradul exterior notat
out
(v)
sau
+
D
(v) sau d
+
D
(v), este numarul arcelor in-
cidente cu v spre exterior.
De exemplu, n digraful D desenat mai jos avem
d

D
(v) = 1, d
+
D
(v) = 2;
d

D
(u) = 3, d
+
D
(u) = 0;
d

D
(w) = 1, d
+
D
(w) = 3;
v
u
w
39
4. Subgrafuri
Un subgraf al grafului G = (V (G), E(G))este
un graf H = (V (H), E(H)) care satisface:
V (H) V (G) si E(H) E(G).
Dacan plus, V (H) = V (G) atunci H se numeste
graf part ial al lui G (n limba engleza, span-
ning subgraph).
Daca A V (G) atunci [A]
G
= (A, 1
2
(A)
E(G)) se numeste subgraf indusn G de mult imea
de vrfuri A (se mai noteaza si G[A]).

In gura urmatoare, H este subgraf al lui G iar


subgraful indus de mult imea de varfuri 3, 4, 6, 8, 10
este G[3, 4, 6, 8, 10]:
2
1 3
6 5 4
7 8
9
10
G
1 2 3
4
6
7
10
8
H
8
4
10
6
3
G[{4,8,6,3,10}]
40
Subgraful [V (G) \ A]
G
se noteaza GA si este
subgraful lui G obt inut prin ndepartarea
vrfurilor din A; n particular, daca A = v,
atunci Gv se noteaza Gv.
Daca E

E(G) atunci E

)
G
= (V (G), E

) este
graful part ial sect ionat de E

n G. G E

este prin denit ie E(G) \ E

)
G
, iar G e =
Ge (e E(G)). Pentru G graful din gura
precedenta si E

= 12, 14, 23, 25, 36, 59, 710, 810, 910,


obt inem ca E

)
G
este graful G

:
2
1 3
6 5 4
7 8
9
10
G
Concepte similare se pot deni n mod analog
pentru multigrafuri, grafuri generale sau digra-
furi.
41
5. Operat ii cu grafuri
Daca G = (V (G), E(G))este un graf, atunci :
-complementarul sau este graful G cu
V (G) = V (G) si E(G) = 1
2
_
V (G)
_
\ E(G).
Graful initial Complementarul
Graful complet
-graful reprezentativ al muchiilor lui G este
graful L(G) cu V (L(G)) = E(G) si
E(L(G)) =ee

[ e, e

E(G), e si e

adiacente n G.
a
e
f
g
h
b
c
d
Graful initial Line-graful sau
a
b
c
h
g
f
d
e
42
-graful total al grafului G este graful T(G)
cu V (T(G)) = V (G) E(G) si
E(T(G)) = xy[x, y V (G) E(G), x si y
adiacente sau incidente n G.
a
b
c
d
1
2
3
4
Graful initial
d
a
2
b
3
c
4
1
Graful total
-graful obt inut din G prin insert ia unui vrf
(z) pe o muchie (e = vw) este graful G

= (V (G)
z, E(G) \ vw vz, zw) (z / V (G), e E(G)).
v
w
v
z
w
Doua grafuri obt inute prin insert ii succesive de vrfuri
pe muchiile aceluiasi graf se numesc homeomorfe.
43
-graful obt inut din G prin contract ia muchiei
e = vw E(G) este graful G[e =
(V (G) \ v, w z, E([V (G) \ v, w]
G
)
yz [ yv sau yw E(G)).
v w
z
G|e
G
Daca H se poate obt ine prin contract ii suc-
cesive de muchii din graful G, se spune ca
G este contractibil la H.
Fie G = (V (G), E(G))si G

= (V (G

), E(G

))
doua grafuri.
- Daca V (G) = V (G

) atunci reuniunea celor


doua grafuri si intersect ia lor se denesc
G G

= (V (G), E(G) E(G

)),
G G

= (V (G), E(G) E(G

)).
44
1
5
2
3 4
1
5
4
2
3
G
G
Intersectia Reuniunea
-Daca V (G)V (G

) = atunci G G

= (V (G)
V (G

), E(G)E(G

)) se numeste reuniunea
disjuncta a grafurilor G si G

. Reuniunea
disjuncta a k grafuri izomorfe cu G se noteaza kG.
1
5
2
3 4
a
e
d
b
c
G
G
Reuniunea disjuncta
-Suma a doua grafuri G si G

este graful
G+G

= G G

.
45
G
G
G+G
-Produsul cartezian al grafurilor G si G

este
graful GG

cu V (GG

) = V (G)V (G

)
si
E(GG

) = (v, w)(v

, w

)[v, v

V (G), w, w

V (G

)
v = v

si ww

E(G

)sau
w = w

si vv

E(G)
G:
G
G x G
46
6. Clase de grafuri
Graful complet de ordin n : K
n
cu

V (K
n
)

= n si E(K
n
) = 1
2
_
V (K
n
)
_
.
K1 K2 K3 K4 K5
Graful nul de ordin n : N
n
= K
n
.
N2 N3 N4 N5 N1
47
Circuitul de ordin n (n 3) : C
n
cu V (C
n
) = 1, . . . , n si
E(C
n
) = 12, 23, . . . , n 1n, n1.
C4 C5 C6 C7 C3
Drumul de ordin n : P
n
P
1
= K
1
, P
2
= K
2
;
n 3 : P
n
= C
n
e (e E(C
n
)).
P2 P3 P4 P5 P1
48
Un subgraf complet (de ordin q) al unui graf G
se numeste clica ( q-clica) a lui G.
Cardinalul maxim al unei clici a lui G se numeste
numarul de clica sau numarul de densitate
al lui G si se noteaza (G). Cum, evident
(G) = (G), rezulta ca determinarea numarului
de clica al unui graf si a unei clici de cardinal
maxim este problema P1 cu intrarea G.
Exemple:
omega
2
omega
4
omega
2
omega
5
omega
3
Un graf bipartit este un graf G cu propri-
etatea ca V (G) se poate partit iona n doua
mult imi independente n G.
Daca S si T satisfac S T = V (G), S T =
si S, T snt independente si nevide n G, atunci
graful bipartit G se noteaza G = (S, T; E(G)).
49
Deci, daca G = (S, T; E(G)) este un graf bi-
partit, atunci e E(G) are o extremitate n S
si cealalta n T.
Daca v S si w T vw E(G), atunci
graful bipartit G = (S, T; E(G)) se numeste
graf bipartit complet si se noteaza K
s,t
unde
s = [S[ si t = [T[.
K2,2 K1,3 K2,3 K3,3 K1,1
Pentru orice hipergraf H = (V, c), se poate
asocia un graf bipartit G
H
= (V, c; E(G
H
)),
unde v V , F c vF E(G
H
) v F.
F3
G
2
3
4
5
7 6
1
F1
F2
Hipergraful H
1
2
3
4
5
6
7
F1
G
F2
F3
Graful bipartit
asociat lui H
50
O construct ie inversa evidenta, ne arata ca si
pentru orice graf bipartit se poate asocia un
hipergraf.
Un graf G = (V (G), E(G))se numeste planar
daca poate reprezentat n plan astfel nct
ecarui vrf sa-i corespunda un punct al planu-
lui, iar muchiilor le corespund curbe simple ce
unesc punctele corespunzatoare extremitat ilor
lor si n plus aceste curbe se interesecteaza
(eventual) numai n vrfuri. Un graf care nu-i
planar se numste neplanar. Exemple minimale
de grafuri neplanare snt grafurile K
5
si K
3,3
.
Planar Planar
K5 neplanar Planar
51
Desi problema
PLAN Intrare: G un graf.
Intrebare: Este G planar ?
pare mult mai dicila decat problema stabilei
maxime (P1 din cursul trecut), ea subsumand
not iuni de topologie, s-a dovedit ca este din P
( Hopcroft & Tarjan , 1972, O(n +m)).
O modalitate uzuala de a deni clase de gra-
furi este de a interzice aparit ia unor subgrafuri
induse, pentru grafurile acelei clase.
Daca T este o mult ime de grafuri, atunci un
graf G se numeste T-liber (sau T-free) daca
G nu are ca subgraf indus pe niciunul din-
tre grafurile lui T. De exemplu, clasa grafu-
rilor nule poate denita ca ind clasa gra-
furilor K
2
-free; clasa grafurilor ale caror com-
ponente conexe sunt subgrafuri complete este
clasa grafurilor P
3
-free;
clasa grafurilor triangulate (sau cordale) este
clasa grafurilor (C
k
)
k4
-free.
52
7. Drumuri si circuite
Fie G = (V (G), E(G))un graf.
Se numeste mers (walk) de lungime r de la
v la w n G un sir de vrfuri si muchii
(v =)v
0
, v
0
v
1
, v
1
, . . . , v
r1
, v
r1
v
r
, v
r
(= w);
v si w se numesc extremitat ile mersului.
Daca muchiile mersului snt distincte atunci
mersul se numeste parcurs (trail) n G de la v
la w.
Daca vrfurile snt distincte atunci mersul se
numeste drum (path) de la v la w.
2
1
6
8
9
4
3
5
1
2 8 2 3 6 5
8
9
8 2 1 9 8 4
5
M:
T:
6
3 2 8 9
4
P:
mers
parcurs
drum
53
Daca v = w atunci mersul (parcursul) se numeste
nchis.
Daca ntr-un mers toate vrfurile snt distincte,
cu except ia extremitat ilor, atunci mersul se numeste
circuit (sau drumnchis).
Un circuit este par sau impar dupa cum lungimea
sa (numarul muchiilor) este para sau impara.
2
1
6
8
9
4
3
5
2
1
9
4
8
9
4
8
circuite
impare :
1 9
8 2
circuit par :
Lungimea celui mai scurt circuit al grafului G
(daca G are circuite) se numeste grat ia (girth)
grafului G si se noteaza cu g(G); lungimea celui
mai lung circuit al lui G se numeste
circumferint a lui G si se noteaza c(G).
54
Daca v si w snt vrfuri ale lui G, lungimea
celui mai scurt drum de la v la w n G se
numeste distant an G de la v la w si se noteaza
d
G
(v, w).
Diametrul grafului G, notat d(G) este d(G) =
maxd
G
(v, w)[v, w V (G).
d(G)=3
d(G)=4

In proiectarea ret elelor de interconectare a procesoarelor


este important ca graful G reprezentand ret eaua sa aiba
gradul maxim (G) mic ( restrict ie tehnologica) si di-
ametrul d(G) micn raport cu numarul varfurilor (restrict ie
de calitate a interconectarii).
Denit iile de mai sus se extind, n mod evi-
dent,pentru digrafuri singura modicare -
ind aceea ca se nlocuiesc muchiile cu arce.
55
Un graf este conex daca exista (macar) un
drum ntre orice doua vrfuri ale sale; un graf
care nu este conex se numeste neconex.
Orice graf G poate unic exprimat ca o reuni-
une disjuncta de subgrafuri induse, conexe si
maximale cu aceasta proprietate; aceste sub-
grafuri se numesc componentele conexe ale
grafului G (mai precis, se pot deni componen-
tele conexe ca subgrafurile induse de clasele de
echivalent a determinate pe V (G) de relat ia de
echivalent a V (G) V (G) denita prin :
v w exista n G un drum de la v la w ).
Graful din gura de mai sus are 4 componente conexe:
una cu 1 varf, una cu 2 varfuri si doua cu 5 varfuri.
56
Concepte analoage se pot deni si pentru di-
grafuri; daca D este un digraf atunci :
D este tare conex daca (v, w) V (D)
V (D) exista un drumn D de la v la w;
D este unilateral conex daca (v, w)
V (D) V (D) exista n D un drum de la
v la w sau un drum de la w la v;
D este conex daca G(D), graful suport al
lui D, este conex.
Unilateral
conex
Tare conex Conex
57
Un graf conex care nu are circuite se numeste
arbore. Un graf ale carui componente conexe
snt arbori se numeste padure.
Time to leave the trees !!!
Daca G este un graf conex, un vrf v V (G) cu
proprietatea ca Gv este neconex se numeste
vrf (punct) de articulat ie; mai general, o
mult ime A de vrfuri ale unui graf G se numeste
mult ime separatoare de vrfuri (mult ime de
articulat ie) daca GA este neconex.
Pct. de
articulatie
Fara pcte.
de articulatie
Multime de
articulatie
Fara multimi
de articulatie
58
Fie p un numar ntreg pozitiv;
un graf G cu macar p vrfuri este pconex daca
G = K
p
sau are cel put in p +1 vrfuri si nu are
mult imi separatoare de vrfuri de cardinal mai
mic dect p.
Evident, G este 1-conex daca si numai daca
este conex. Un graf 2-conex se mai numeste
si bloc.
Numarul de conexiune al lui G, notat k(G),
este cel mai mare numar natural p pentru care
G este pconex.
k(G)=3
k(G)=4
59
Daca G este un graf conex, o muchie e
E(G) cu proprietatea ca G e este neconex
se numeste punte n graful G; mai general,
o mult ime A de muchii ale unui graf G se
numeste mult ime separatoare de muchii daca
GA este neconex.
Un graf G cu cel put in p vrfuri este
pmuchie-conex daca nu admite mult imi sep-
aratoare de muchii de cardinal mai mic dect p.
Numarul de muchie-conexiune al lui G, no-
tat (G), este cel mai mare numar natural p
pentru care G este pmuchie-conex .
Punte
Multime separatoare
de muchii
lambda(G)=3
60
Un graf (sau digraf) se numeste eulerian daca
admite un parcurs nchis care foloseste ecare
muchie a grafului (respectiv, ecare arc al di-
grafului).
Un (di)graf G se numeste hamiltonian daca
are un circuit care trece prin ecare vrf.
10
7
8
9
6
4
5
3
11
2
1
Graf Eulerian
Graf care nu-i
hamiltonian
1
8
5
4
7
2
3
6
Graf hamiltonian

In timp ce problema testarii daca un graf este


elerian este foarte simpla (Euler 1736 : conex
si cu toate varfurile de grad par), problema
HAM Intrare: G un graf.
Intrebare: Este G hamiltonian ?
61
este NP-completa. Apartenent a la NP este
evidenta: un circuit hamiltonian, se poate in-
dica printr-o permutare a varfurilor care poate
testatan timp liniar.

In schimb pentru prob-
lema
NH Intrare: G un graf.
Intrebare: Este adevarat ca G nu-i hamiltonian?
nu se cunoaste o demonstrat ie a apartenent ei
la NP ( se observa ca este din co-NP). Nu se
poate da o demonstrat ie succinta ca graful de
mai jos nu e hamiltonian:
3-conex, planar, si nehamiltonian
(Tutte)
62
8. Matrici asociate.
Daca G = (v
1
, . . . , v
n
, e
1
, . . . , e
m
) este un
graf, atunci
Matricea de adiacent a a grafului G este ma-
tricea A = (a
ij
)
nn
, unde
a
ij
=
_
_
_
1 daca v
i
si v
j
snt adiacente
0 altminteri.
Matricea de incident a a grafului G este ma-
tricea B = (b
ij
)
nm
, unde
b
ij
=
_
_
_
1 daca v
i
si e
j
snt incidente
0 altminteri.

In cazul digrafurilor, se pot asocia similar astfel


de matrici, n care, evident se poate indica si
orientarea arcelor, folosind elementele 0, 1 si
-1.
63
Pentru graful din gura de mai jos,
2
4
5
3 7
6
1
1 2
4
5
3
matricea de adiacent a este:
A =
_
_
_
_
_
_
_
_
0 1 1 0 0
1 0 0 1 1
1 0 0 1 1
0 1 1 0 1
0 1 1 1 0
_
_
_
_
_
_
_
_
,
iar matricea de incident a:
B =
_
_
_
_
_
_
_
_
0 0 0 0 0 1 1
1 0 1 0 0 0 1
0 1 0 1 0 1 0
0 0 1 1 1 0 0
1 1 0 0 1 0 0
_
_
_
_
_
_
_
_
.
Valorile proprii si polinomul caracteristic ale matricii de
adiacent a se numesc valorile proprii ale grafului, re-
spectiv, polinomul caracteristic al grafului.
64
9 Structuri de date utilizaten reprezentarea
(di)grafurilor.
Fie G = (V, E) un (di)graf cu V = 1, 2, . . . , n
si [E[ = e.
Cele mai uzuale structuri de date utilizate pen-
tru reprezentarea (di)grafului G sunt:
a) matricea de adiacent a
Daca A = (a
ij
)
nn
este matricea de adiacent a
a lui G atunci, reprezentarea acesteia cu aju-
torul unui tablou bidimensional va necesita
O(n
2
) operat ii pentru orice init ializare, deci orice
algoritm, care foloseste o astfel de reprezentare,
are complexitatea (n
2
).
Cu aceasta structura de date testarea daca
doua varfuri sunt sau nu adiacente se face n
O(1), dar parcurgerea lui N
G
(v) (sau N
+
G
(v)),
pentru un varf oarecare v V , necesita (n)
operat ii.
65
b) listele de adiacent a
Pentru ecare vrf v V se considera o lista
A(v) a vecinilor sai n G.
Daca G este graf, atunci A(v) cont ine
N
G
(v) = v[w V si vw E iar daca G este
digraf atunci A(v) cont ine
N
+
G
(v) = v[w V si vw E.
Pentru cazul n care G este graf, ecare muchie
vw E va genera doua elemente n listele
de adiacent a, unul n A(v) si celalalt n A(w).
Spat iul total de memorie utilizat va de O(n+
2e). Pentru cazul n care G este digraf, spat iul
de memorie utilizat este de O(n +e).
Listele de adiacent a pot reprezentate cu aju-
torul tablourilor sau ca structuri dinamice de
date (liste nlant uite).
Testarea daca un varf xat v este adiacent cu
un varf oarecare wn G se facen (d
G
(v)), dar
se poate parcurge N
G
(v) n timpul O(d
G
(v)) si
nu O(n) ca n cazul matricii de adiacent a.
66
Pentru digraful desenat mai jos, sunt reprezen-
tate listele de adiacent a:
1
2 3
5
6
A(1)
3 2
A(2)
5
3
A(3)
6
A(5)
A(6)
Cu not iunile si terminologia minimala descrisa
n sect iunile 1-9 ale acestui prim capitol, se
poate trece la probleme algoritmice specice.
67
II Probleme de drumn (di)grafuri
1. Parcurgeri sistematice ale (di)grafurilor.
Graph search- paradigma algoritmica utilizata
pentru a desemna o metoda sistematica de
parcurgere a mult imii varfurilor la care se poate
ajunge prin drumuri ntr-un (di)graf de la un
varf xat.
Dat G = (V, E) un (di)graf cu mult imea vrfurilor
V = 1, . . . , n si s V , se cere sa se genereze
ecient mult imea
S = v V [D drumn G de la s la v.
68
(Di)graful G e reprezentat cu listele de adiacent a (e
nevoie de aarea ecienta a mult imii vecinilor nodului
curent, n procesul sistematic de vizitare).
Prezentam succint cele doua tehnici principale de par-
curgere.
bfs - breadth rst search
Init ial, v V are eticheta label(v) < 0.
label(s) 0 parent(s) 0;
creeaza coada Q cont inand s;
while Q ,= do
vvarful din capul cozii Q;
sterge varful din capul cozii Q;
for w A(v) do
if label(w) < 0 then
label(w) label(v) +1;
parent(w) v;
introdu w n coada Q

69
Evident:
- S = v V [label(v) 0;
- v V label(v) = d
G
(s, v);
- variabila parent deneste arborele bfs aso-
ciat cautarii din s: daca G e graf atunci acesta
este arbore part ial al componentei conexe a
lui G la care apart ine s; daca G este digraf
atunci acesta este o arborescent a (arbore ori-
entat cu toate varfurile accesibile prin drumuri
din radacina);
- deoarece ecare lista de adiacent a a unui varf
din mult imea S este traversata exact o data,
complexitatea timp a lui bfs(s) este O(n
S
+
m
S
), unde n
S
= [S[ iar m
S
= [E([S]
G
)[;

In gura urmatoare sunt desenat i arborii core-


spunzatori lui bfs(1) si bfs(2).
1
2 3
5
6
A(1)
3 2
A(2)
5
3
A(3)
6
A(5)
A(6)
1
3 2
6 5
0
1
1
2 2
2
5 3
6
0
1
1
2
70
dfs - depth rst search
Init ial, v V are eticheta label(v) < 0
si tot i pointerii de parcurgere a listelor de adiacent a sunt la nceput.
label(s) 0 parent(s) 0;
creeaza stiva S cont inand s;
n
S
1
while S ,= do
vvarful din capul stivei S;
w next[A(v)]
if w then
if label(w) < 0 then
label(w) n
S
; n
S
++;
parent(w) v;
introdu w n stiva S

else NOP (aici; dar se poate utiliza !!)


else sterge varful din capul stivei S
// s-a terminat cautarea din v;

Iarasi, rezulta imediat ca


S = v V [label(v) 0 si complexitatea timp
a lui dfs(s) este O(n
S
+m
S
).
71
Pentru exemplul nostru de lucru, arborii dfs(1)
si dfs(2) sunt ilustrat i mai jos.
1
2 3
5
6
A(1)
3 2
A(2)
5
3
A(3)
6
A(5)
A(6)
1
3 2
6 5
0
1
3
2 4
2
5 3
6
0
1
2
3
Parcurgerile sistematice sunt importante pentru obt inerea
unor algoritmi ecient i pentru determinarea componen-
telor conexe n grafuri, pentru determinarea componen-
telor tari conexen digrafuri, componentelor 2-conexen
grafuri etc., (care sunt preprocesari uzuale pentru prob-
leme mai complicate).
Ele sunt esent iale n problemele din Inteligent a Arti-
ciala, unde spat iul starilor de cautare poate vazut ca
un graf . De data aceasta graful este dat implicit; n
ecare nod (stare) se dispune de un predicat precondit ie
care este utilizat de o funct ie neighbours care intoarce
lista nodurilor accesibilen contextul curent din acel nod.
Graful explicit care se poate construi n principiu, este
folosit pentru descrierea algoritmului si analizele de com-
plexitate.
72
2. Probleme de drum minim.
Fie G = (V, E) un digraf cu mult imea vrfurilor
V = 1, . . . , n. Consideram data o funct ie
a : E R cu interpretarea:
ij E a(ij) =costul arcului ij (ponderea,
lungimea, etc).
Daca digraful G este reprezentat cu ajutorul
listelor de adiacent a, atunci costul arcului ij
este un cmp n nodul din lista de adiacent a a
lui i ce reprezinta acest arc.
Pentru usurint a notat iilor vom folosi reprezentarea
digrafului G cu ajutorul matricii de cost-adiacent a
A = (a
ij
)
nn
cu
a
ij
=
_
_
_
a(ij) daca ij E
altfel
Aici desemneaza un numar real mare n ra-
port cu celelalte costuri (de exemplu > n
max
ijE
a(ij)) si vom presupune n plus ca
73
a = , + = .
(Este posibil, de asemenea, ca sa semnice
acces terminat cu insucces n structura de date
n care se reprezinta matricea A).
Daca i, j V , vom nota cu
T
ij
= D
ij
[ D
ij
drumn G de la i la j.
Pentru D
ij
T
ij
D
ij
: (i =)v
0
, v
0
v
1
, v
1
, . . . , v
r1
, v
r1
v
r
, v
r
(= j)
mult imea vrfurilor este V (D
ij
) = v
0
, v
1
, . . . , v
r

si mult imea arcelor


E(D
ij
) = v
0
v
1
, v
1
v
2
, . . . , v
r1
v
r
.
Orice vrf k ,= i, j al lui D
ij
, determina pe D
ij
doua drumuri D
ik
T
ik
si D
kj
T
kj
. Vom
nota D
ij
= D
ik
D
kj
.
Costul unui drum D
ij
T
ij
se deneste
a(D
ij
) = 0 +

ijE(D
ij
)
a
ij
.

In particular, a(D
ii
) = 0.
74
Principalele probleme de drum (de cost) minim
care apar n aplicat ii practice (sau snt utile n
rezolvarea altor probleme de optimizare com-
binatorie) snt:
P1 Date G digraf;a : E(G) R; s, t V (G),s ,= t.
Sa se determine D

st
T
st
, astfel nct
a(D

st
) = mina(D
st
) [ D
st
T
st
.
P2 Date G digraf; a : E(G) R; s V (G).
Sa se determine D

si
T
si
i V (G), a..
a(D

si
) = mina(D
si
) [ D
si
T
si
.
P3 Date G digraf; a : E(G) R.
Sa se determine D

ij
T
ij
i, j V (G), a..
a(D

ij
) = mina(D
ij
) [ D
ij
T
ij
.
Observat ii:
1. Cu convent ia folosita n reprezentarea ma-
tricilor de cost adiacent a, se poate considera
ca T
ij
,= i, j V .
75
Daca a(D
ij
) < atunci D
ij
este drum (adevarat)
n G de la i la j, iar daca a(D
ij
) = , atunci D
ij
este drumn digraful complet simetric obt inut
din G prin adaugarea arcelor lipsa, cu costul
.
Rezulta ca toate mult imile pe care se con-
sidera minimelen problemele precedente, snt
nevide si, cum digrafurile considerate snt -
nite, rezulta ca aceste mult imi snt nite (n
ecare drum vrfurile snt distincte), deci min-
imele considerate exista.
2. Algoritmii de rezolvare a problemei (P1)
se obt in din algoritmii de rezolvare a proble-
mei (P2) adaugndu-li-se un test suplimentar
(evident) de oprire.
3. Problema (P3) se poate rezolva iternd un
algoritm de rezolvare a problemei (P2). Snt
posibile nsa solut ii mai eciente.
76
Aplicat ii. Vom schit an continuare trei aplicat ii
practice posibile ale acestor probleme.
a) G = (V, E) reprezinta o ret ea de comunicat ie
cu nodurile V si rutele directe ntre noduri
formnd mult imea E.
Daca a(e) reprezinta lungimea arcului e, atunci
cele trei probleme de mai sus reprezinta prob-
leme naturale, care se pun n astfel de ret ele:
determinarea drumurilor celor mai scurte.
Daca p
ij
(0, 1] este probabilitatea de funct ionare
a arcului ij E atunci, presupunnd ca arcele
funct ioneaza independent unele de altele, prob-
abilitatea de funct ionare a drumului D este
p(D) =

ijE(D)
p
ij
.
Considernd a
ij
= logp
ij
, problema drumului
de cost minim de la s la t semnica deter-
minarea drumului cel mai sigur de la s la t.
77
b) Ret ele PERT (Project Evaluation and Re-
view Technique).
Fie P = A
1
, . . . , A
n
mult imea activitat ilor atom-
ice ale unui proiect de anvergura (n este mare).
P este o mult ime part ial ordonata cu relat ia de
ordine
A
i
< A
j
activitatea A
j
nu poate ncepe
dect dupa terminarea activitat ii A
i
.
Se cunoaste, pentru ecare activitate A
i
tim-
pul de execut ie t
i
.
Se cere sa se determine un plan de orga-
nizare a proiectului astfel nct timpul to-
tal de execut ie sa e minim. (Notam ca
problemele practice snt mai complexe datorita
restrict iilor de utilizare concurenta a resurselor
- oameni, utilaje, etc. - de catre diversele ac-
tivitat i).
Ideea generala pe care se bazeaza pachetele
soft care rezolva astfel de probleme este de
a asocia proiectului un digraf aciclic (ret eaua
PERT) astfel:
78
Fiecarei activitat i A
l
i se asociaza arcul i
l
j
l
de
cost a(i
l
j
l
) = t
l
.
Nodul i
l
reprezinta evenimentul de nceput al
activitat ii A
l
, iar nodul j
l
reprezinta evenimen-
tul de sfrsit al activitat ii A
l
.
Daca activitatea A
k
poatencepe imediat dupa
terminarea activitat ii A
l
, se introduce n digraf
arcul j
l
i
k
( activitate ctiva) de cost 0.
Se asociaza un eveniment s (START) unit prin
arce de cost 0 cu elementele minimale ale lui
(P, <) si un eveniment t (END) de care vor
unite prin cte un arc ecare element maximal
al lui P.

In digraful obt inut (care este evident aciclic)


costul maxim al unui drum de la s la t reprezinta
cel mai scurt timp posibil de execut ie a proiec-
tului.
Un drum de cost maxim se numeste drum
critic, ntructntrzierea oricarei activitat i core-
spunzatoare unui arc de pe drumul critic con-
duce la ntrzierea ntregului proiect.
79
Figura de mai jos ilustreaza tipul de digraf
(aciclic) care se formeaza si se evident iaza un
posibil drum critic. Dicultatea majora este
n construct ia digrafului (modelarea problemei
reale) si problema devine extrem de interesanta
daca (dar si NP-dicila) daca se introduc si
alte tipuri de restrict ii ntre activitat i (nu nu-
mai temporale).
0
A1: t1
0
A2: t2
0
A3: t3
A4: t4
A5: t5
A6: t6
A7: t7
A8: t8
A9: t9
A10:t10
0
0
0
0
0 0
0
0
0
0
0
Start
End
0
0
c) Problema rucsacului. Dispunem de n obiecte
de volume a
1
, . . . , a
n
si de un rucsac de volum
b (a
i
Z
+
, i = 1, n, b Z
+
, a
i
b i = 1, n).
80
Cunoscnd protul p
i
R
+
adus de intro-
ducerea obiectului i n rucsac, se cere sa se
determine oncarcare a rucsacului de prot
total maxim:
max
_
n

i=1
p
i
x
i
[
n

i=1
a
i
x
i
b, x
i
0, 1i = 1, n
_
.
Problema, desi interesanta n unele aplicat ii
(de exemplu la ncarcarea vapoarelor ntr-un
port) a fost aleasa pentru a pune n evident a
legatura dintre metoda programrii dinamice (dis-
crete) si problemele de drum minimntr-un di-
graf.
Consideram G = (V, E) un digraf cu
V = s V
1
V
2
. . . V
n
t, unde
V
i
= i
0
, i
1
, . . . , i
b
este asociat obiectului i, i =
1, n.
Arcele lui G snt:
81
s1
0
si s1
a
1
cu a(s1
0
) = 0 si a(s1
a
1
) = p
1
.
( se pune obiectul 1 n rucsac si se obt ine protul
p
1
, ajungandu-se la nivelul a
1
de umplere, sau nu se
pune obiectul 1 n rucsac, protul ind 0 si nivelul
de umplere ramanand 0).
i = 2, n j = 0, b:
(i 1)
j
i
j
cu a((i 1)
j
i
j
) = 0;
(daca decidem sa nu introducem obiectul i n ruc-
sac, atunci de la ncarcarea rucsacului cu primele
i 1 obiecte se trece la o ncarcare cu primele i
obiecte n care nu este selectat obiectul i, deci se
ramane pe acelasi nivel de ncarcare j, iar protul
ce se va adauga este 0).
Daca j a
i
0 atunci avem si arcul
(i 1)
ja
i
i
j
cu a
_
(i 1)
ja
i
i
j
_
= p
i
.
(se poate ajunge la o ncarcare j prin introducerea
obiectului i de volum a
i
la o ncarcare a primelor
i 1 obiecte de nivel j a
i
).
j = 0, b: n
j
t cu a(n
j
t) = 0.
82
Figura urmatoare ilustreaza construct ia aces-
tui digraf.
0
0
0
0
0
0
0
0
p1
0
p2
p2
1:b 2:b n:b
t
2:a2 n:2
1:1 2:1 n:1
s 1:0 2:0 n:0
1:a1 2:a1
2:a1+a2
83
Se observa din construct ie, ca orice drum de
la s la t n G corespunde unei submult imi de
obiecte cu suma volumelor mai mica sau egala
cu b si de prot egal cu costul acestui drum.
Reciproc, oricarei mult imi de obiecte cu suma
volumelor nedepasind b i corespunde un drum
de la s la t n G.
Rezulta ca daca n digraful G se determina un
drum de cost maxim de la s la t se rezolva
problema rucsacului.
Notam ca descrierea (statica) a digrafului G
poate usor transformata n una procedurala
astfel nct digraful sa reprezinte doar ilustrarea
unei metode de programare dinaminca (prospec-
tiva) pentru rezolvarea problemei rucsacului.
Atent ie ! Problema rucsacului este referita uzual
ca una din problemele NP-dicile. Solut ia polinomiala
descrisa mai sus conduce la un digraf aciclic cu O(nb)
varfuri, care nu-i dimensiunea intrarii !!!
84
Rezolvarea problemei P2
Teorema. 1. Fie G = (V, E) digraf, V =
1, . . . , n, s V si a : E R, astfel nct
(I) C circuit n G, a(C) > 0.
Atunci (u
1
, . . . , u
n
) este o solut ie a sistemului
()
_

_
u
s
= 0
u
i
= min
j,=i
(u
j
+a
ji
) i ,= s.
daca si numai daca i V , D

si
T
si
astfel
nct a(D

si
) = u
i
si a(D

si
) = mina(D) [ D
T
s
i.
Demonstrat ie: Fie D

si
( i V ) solut ii
ale problemei (P2) cu a(D

si
) = mina(D) [ D
T
si
. Notam cu u
i
= a(D

si
) (i V ).
85
Ipoteza (I) asigura faptul ca u
s
= 0, adica
prima ecuat ie a sistemului (*) este vericata.
Pentru i ,= s drumul D

si
are un penultim vrf
j. Daca D
sj
este drumul de la s la j determi-
nat pe D

si
de vrful j, avem: u
i
= a(D

si
) =
a(D
sj
) +a
ji
a(D

sj
) +a
ji
= u
j
+a
ji
.
Aratam ca u
i
= u
j
+a
ji
.
Presupunem ca u
i
> u
j
+ a
ji
, adica a(D
sj
) >
a(D

sj
). Avem doua cazuri posibile:
1. i , V (D

sj
). Atunci D
1
= D

sj
(j, ji, i) T
si
si a(D
1
) = a(D

sj
)+a
ji
< a(D
sj
)+a
ji
= a(D

si
),
ceea ce contrazice alegerea drumului D

si
(vezi
gura urmatoare).
s
j
i
D
sj
D
sj
*
86
2. i V (D

sj
). Fie D

sj
= D
si
D
ij
cele doua
drumuri determinate pe D

sj
de vrful i. Atunci
circuitul C = D
ij
(j, ji, i) are costul a(C) =
a(D
ij
) +a
ji
= a(D

sj
) a(D
si
) +a
ji
= u
j
+a
ji

a(D
si
) u
j
+a
ji
a(D

si
) = u
j
+a
ji
u
i
< 0, con-
trazicnd ipoteza (I) (vezi gura urmatoare).
s
j
i
D
sj
D
sj
*
C
D
ij
Deci am demonstrat ca i ,= s u
i
= u
j
+a
ji
.
Daca u
i
nu satisface (*), atunci ar exista j
1
astfel ncat u
i
> u
j
1
+a
j
1
i
. Atunci, ca mai sus,
se poate construi un drum de cost mai mic
decat u
i
de la s la i.
87
Rezulta ca sucient a teoremei este demonstrata.
Notam ca de fapt am dovedit mai sus ca a(D
sj
) =
a(D

sj
) adica, daca j este vrful dinaintea lui i
pe un drum de cost minim de la s la i atunci
si port iunea de drum de la s la j este drum de
cost minim de la s la j. Inductiv, rezulta :
(Principiul optimalitat ii al lui Bellman) daca
D

si
este drum de cost minim de la s la i atunci
j V (D

si
), daca D

si
= D
sj
D
ji
atunci D
sj
(respectiv D
ji
) snt drumuri de cost minim de
la s la j (respectiv de la j la i).
. Dovedim ca daca (u
1
, . . . , u
n
) este o
solut ie a lui (*) atunci
(a) D
si
T
si
: u
i
= a(D
si
), i V.
(b) i V u
i
= mina(D) [ D T
si
(= a(D

si
)).
88
(a) Daca i = s, atunci u
s
= 0 si drumul D
ss
satisface a(D
ss
) = 0 = u
s
.
Daca i ,= s, consideram urmatorul algoritm:
v i; k 0;
while v ,= s do
determina w astfel nct u
v
= u
w
+a
wv
;
// w pentru ca u
v
satisface (*)
i
k
v; k ++; v w

i
k+1
s
Sa observam ca algoritmul determina drumul
D : (s =)i
k+1
, i
k+1
i
k
, . . . , i
1
, i
1
i
0
, i
0
(= i)
cu D T
si
satisfacnd a(D) = a(i
k+1
i
k
)+ +
a(i
1
i
0
) = (u
i
k
u
i
k+1
) + (u
i
k1
u
i
k
) + +
(u
i
0
u
i
1
) = u
i
0
u
i
k+1
= u
i
u
s
= u
i
.
Nu este posibil ca ntr-o iterat ie oarecare w
i
0
, . . . , i
k1
, caci atunci s-ar obt ine un circuit
C de cost total 0, contrazicnd ipoteza (I).
89
Din construct ie, se observa ca u
i
= u
i
1
+a
i
1
i
.
(b) Fie u
i
= a(D

si
) i V . Conform primei
part i a demonstrat iei u
i
, i = 1, n, satisfac sis-
temul (). Presupunem ca u = (u
1
, . . . , u
n
) ,=
u = (u
1
, . . . , u
n
). Cum u
s
= u
s
= 0, rezulta ca
exista i ,= s astfel nct u
i
,= u
i
si j V (D
si
),
j ,= i, u
j
= u
j
, unde D
si
este drumul construit
la (a) pentru u
i
. Atunci avem:
u
i
> u
i
= u
i
1
+a
i
1
i
= u
i
1
+a
i
1
i
(din alegerea lui i)
u
i
pentru ca u
i
satisface (*).
Contradict ia gasita arata ca u = u, deci ca u
i
reprezinta costuri de drumuri minime.
90
Observat ii 1. Din demonstrat ie rezulta ca pen-
tru rezolvarea problemei P2 este sucient sa
obt inem o solut ie a sistemului (). Drumurile
corespunzatoare se obt in ca la (a).
Algoritmii pe carei vom prezenta se vor ocupa
de rezolvarea sistemului (). Totusi, daca avem
u
i
= u
k
+a
ki
atunci asa cum am vazut, k este
vrful dinaintea lui i de pe drumul minim de la
s la i de cost u
i
.
Rezulta ca dacan algoritmul de rezolvare a lui
() construim un tablou nainte[1..n] cu com-
ponente din V 0, cu interpretarea nala
nainte[i]=vrful dinaintea lui i de pe drumul
minim de la s la i, atunci vrfurile acestui drum
pot determinate n O(n) construind sirul i,
nainte[i], nainte[nainte[i]],. . . pna se depis-
teaza vrful s.
2. Daca algoritmii de rezolvare a lui () vor
evita (prin modul de actualizare a vectorului
nainte) aparit ia circuitelor de cost total 0, atunci
se observa ca,
91
desi nu mai are loc unicitatea solut iei sistemu-
lui (), problema (P2) este rezolvata. Rezulta
ca acesti algoritmi vor rezolva problema (P2)
n condit ia
(I

) C circuit n G, a(C) 0.
3.

In cazul grafurilor, rezolvarea problemelor
(P1)-(P3) corespunzatoare se poate face uti-
liznd algoritmii pentru digrafuri, prinnlocuirea
ecarei muchii cu o pereche de arce simet-
rice de acelasi cost ca si muchia pe care o
nlocuiesc.
Dicultatea unei astfel de abordari rezulta din
introducerea pentru muchii de cost negativ a
unor circuite de lungime 2 de cost negativ.
Deci, n cazul grafurilor, algoritmii pentru
digrafuri snt valabili doar daca toate cos-
turile snt nenegative.
92
4. Avnd n vedere ca mult imile T
ij
snt nite,
se pot considera probleme analoge problemelor
(P1)-(P3) nlocuind min cu max.
Utilizarea ideii uzuale,
max
xA
x = (min
xA
(x))
prin nlocuirea costurilor a
ij
cu a
ij
este posi-
bila doar n cazul digrafurilor n care pentru
orice circuit C avem a(C) 0.

In particular, aceasta abordare este posibila n


cazul digrafurilor fara circuite (ca n aplicat iile
b) si c) prezentate).
Daca digraful init ial are circuite, problemele
de drum de cost maxim se pot dovedi usor
(prin reducerea polinomiala la probleme hamil-
toniene) a NP-dicile.
93
Rezolvarea problemei (P2) n cazul digra-
furilor fara circuite
O numerotare aciclica a (vrfurilor) digrafu-
lui G = (V, E) este un vector ord[v] v V ,
(cu interpretarea ord[v] = numarul de ordine
al vrfului v) astfel nct
vw E ord[v] < ord[w].
Are loc urmatoarea
Lema. G este un digraf fara circuite daca si
numai daca admite o numerotare aciclica .
Demonstrat ie. Este evident ca daca G ad-
mite o numerotare aciclica atunci G nu are cir-
cuite (daca v
1
, v
2
, . . . , v
k
, v
1
snt vrfurile unui
circuit atunci, cum G are o numerotare aci-
clica, obt inem ord[v
1
] < ord[v
2
] < . . . < ord[v
k
] <
ord[v
1
], contradict ie ).
94
Reciproc, daca G nu are circuite atunci ex-
ista un vrf v
0
V astfel nct d

G
(v
0
) = 0
(altfel, datorita nitudinii digrafului, se poate
construi un circuit); punem ord[v
0
] 1, con-
sideram G G-v
0
si repetam rat ionamentul
(proprietatea de a nu avea circuite se trans-
mite la subdigrafuri induse).
Aarea unei numerotari aciclice a unui digraf
se numeste si sortare topologica ntrucat se
sorteaza mult imea V ntr-un mod compatibil
cu topologia digrafului.
Vom presupune ca digraful este reprezentat
cu ajutorul listelor de adiacent a. Dimensiunea
problemei este O(n +e).
Vom construi un algoritm care sa rezolve prob-
lema n timp O(n +e).
Acest lucru este posibil datorita unei utilizari
judicioase a structurilor de date.
Linia algoritmului:
95
- determinam gradele interioare ale vrfurilor,
parcurgand toate listele de adiacent a (lantalnirea
lui w n lista de adiacent a a unui varf oarecare
v se executa d

G
(w)++ ;
- Parcurgem vectorul d

G
si vrfurile de grad in-
terior 0 le memoramntr-o stiva S
0
;
(a)- scoatem vrful din topul stivei S
0
si-l nu-
merotam;
(b)- scadem 1 din gradele interioare ale vrfurilor
din lista de adiacent a a vrfului tocmai numero-
tat(l scoatem din digraf) ;
(c)-n modicarea anterioara, crearea unui vrf
de grad interior 0 va implica memorarea lui n
stiva S
0
;
(d)- reluam secvent a (a) (c) pna cnd stiva
devine vida.
Daca nu s-au numerotat toate vrfurile rezulta
ca digraful cont ine circuite; n cazul epuizarii
vrfurilor, s-a obt inut numerotarea aciclica dorita
(sortarea topologica).
96
Revenim la rezolvarea problemei P2.

In acest caz, dupa sortarea topologica a digrafului, vom


ca considera varfurile sunt ordonate conform numerotarii
aciclice(varful 1 numerotat cu 1, varful 2 numerotat cu
2 etc.) si n plus varful s din enunt ul problemei P2 este
varful 1(pentru ca nu vor exista drumuri de la varful s la
varfuri cu numar de ordine mai mic decat el).

In aceste
ipoteze sistemul () se poate rezolva prin substitut ie:
1. Sorteaza topologic G; O(n +e) operat ii
2. u
1
0; nainte[1] 0;
for i := 2 to n do
u
i
; nainte[i] 0;
for j := 1 to i 1 do
if u
i
> u
j
+a
ji
then
u
i
u
j
+a
ji
;
nainte[i] j

Complexitatea pasului 2 este, evident


O(1 +2 + +n 1) = O(n
2
).
97
Rezolvarea problemei (P2) n cazul cos-
turilor nenegative.
Algoritmul lui Dijkstra
Daca a
ij
0 ij E, atunci condit ia (I) este
ndeplinita si o solut ie a sistemului () se poate
obt ine cu ajutorul urmatorului algoritm (Dijk-
stra, 1961).
Se considera S V astfel nct pe parcursul
algoritmului are loc
(D) :
_
i S u
i
= mina(D
si
) [ D
si
T
si

i V \ S u
i
= mina(D
si
) [ D
si
T
si
, V (D
si
) \ S = i
Daca se reuseste construirea lui S astfel nct
S = V , atunci problema e rezolvata.
Init ial, se va considera S = s si n n 1 pasi
se adauga la S cte un nou vrf din V .
98
Algoritmul lui Dijkstra
1. S s; u
s
0; nainte[s] 0;
for i V \ s do
u
i
a
si
; nainte[i] s
// dupa aceste init ializari (D) are loc
2. while S ,= V do

determina j

V \ S : u
j

= minu
j
[ j V \ S;
S : S j

;
for j V \ S do
if u
j
> u
j
+a
j

j
then
u
j
u
j
+a
j

j
; nainte[j] j

Corectitudinea algoritmului va rezulta daca vom


arata ca, daca naintea unei iterat ii din pa-
sul 2 are loc (D), atunci, dupa execut ia acelei
iterat ii, (D) are loc de asemenea.
Aratam mai nti ca n ipoteza ca (D) are loc,
atunci adaugarea lui j

la S nu contrazice (D).
Deci trebuie dovedit ca daca u
j
= minu
j
[ j
V \ S atunci u
j
= mina(D
sj
) [ D
sj
T
sj
.
99
Presupunem ca exista D
1
sj

T
sj
astfel nct
a(D
1
sj

) < u
j
.
Cum S satisface (D), avem
u
j
= mina(D
sj
) [ D
sj
T
sj
, V (D
sj
) \ S =
j

. Rezulta ca V (D
1
sj

) \ S ,= j

.
Fie k primul vrf al drumului D
1
sj

(n parcurg-
erea sa din s) astfel nct k / S.
Atunci a(D
1
sj

) = a(D
1
sk
) +a(D
1
kj

).
Din alegerea lui k, avem V (D
1
sk
) \ S = k si
cum (D) are loc, avem a(D
1
sk
) = u
k
. Obt inem
u
j
> a(D
1
sj

) = u
k
+a(D

kj
) u
k
(costurile snt
nenegative), ceea ce contrazice alegerea lui j

.
Contradict ia obt inuta arata ca, dupa atribuirea
S := S j

, prima parte a condit iei (D) are


loc.
Pentru ca si cea de-a doua parte a condit iei (D)
sa aiba loc dupa aceasta atribuire, sa observam
ca j V \ (S j

) avem
mina(D
sj
) [ D
sj
T
sj
, V (D
sj
) \ (S j

) =
j = min
_
mina(D
sj
) [ D
sj
T
sj
, V (D
sj
) \
S = j, mina(D
sj
) [ D
sj
T
sj
, V (D
sj
) \ S =
j, j

_
.
100
Cum (D) are loc, primul din cele doua minime
de mai sus este u
j
. Fie
j
valoarea celui de-
al doilea minim si e D
1
sj
drumul pentru care
se realizeaza. Cum j

V (D
1
sj
), avem
j
=
a(D
1
sj

) +a(D
1
j

j
).

Intruct S j

satisfce prima parte a lui (D),


avem a(D
1
sj
) = u
j
(altfel s-ar contrazice alegerea
lui D
1
sj
nlocuind n D
1
sj
, port iunea D
1
sj
cu un
drum de cost mai mic). Deci
j
= u
j
+
a(D
1
j

j
).
Daca drumul D
1
j

j
este de lungime 1 atunci
avem
j
= u
j
+a
j

j
.
Altfel, considernd k vrful dinaintea lui j de
pe drumul D
1
sj
avem k ,= j

, k S si
j
=
a(D
1
sk
) + a
kj
. Cum S j

satisface prima
parte a lui (D), obt inem
j
= u
k
+a
kj
.

Intruct S satisface (D), u


k
este costul unui
drum minim de la s la k cu vrfurile cont inute
n S deci
j
este costul unui drum de la s la j
cu vrfurile cont inute n S. Rezulta ca
j
u
j
,
caci S satisface (D).
101
Am obt inut ca singurul caz n care
j
< u
j
este
atunci cnd
j
= u
j
+a
j

j
< u
j
, situat ie testata
n ciclul for al pasului 2.
Rezulta ca (D) are loc pe tot parcursul algo-
ritmului si deci valorile nale ale variabilelor
u
i
reprezinta solut ia sistemului (). Evident,
tabloul nainte este actualizat pentru memo-
rarea implicita a drumurilor de cost minim.
Complexitatea timp a algoritmului, n de-
scrierea data este O(n
2
) datorita selectarii min-
imelor din pasul 2.
Este posibila organizarea unor cozi cu priori-
tate (de exemplu heap-urile) pentru a memora
valorile u
i
, i U = V \S, astfel nct extragerea
minimului sa se faca n O(1), iar actualizarile
necesare n pasul 2 sa se faca n timpul to-
tal de O(mlogn) unde m = [E[ (executandu-
se O(m) descresteri de valori u
i
, ecare nece-
sitand O(logn) operat ii; Johnson ,1977).
102
Cea mai buna implementare se obt ine utilazand
heap-uri Fibonacci, ceea ce conduce la o com-
plexitate timp de O(m + nlogn) (Fredman si
Tarjan, 1984).
Opadure cu radacini ( rooted forest) este un
digraf aciclic D = (V, A) cu proprietatea ca
ecare varf are gradul interior cel mult 1.
Varfurile de grad interior 0 sunt radacinile lui
D, iar cele cu grad exterior 0 sunt frunzele lui
D.
Daca uv A atunci u este parintele lui v iar v
este copilul lui u.
Daca padurea are o singura radacina, atunci
ea este un arbore cu radacina.
O padure Fibonacci este o padure cu radacini
F = (V, A) n care copiii ecarui varf v pot
ordonat i astfel ncat copilul numarul i are la
randul sau cel put in i 2 copii.
103
Teorema.

Intr-o padure Fibonacci F = (V, A)
ecare varf are cel mult 1 +2log[V [ copii.
Dem. Notam cu (v) numarul varfurilor acce-
sibile din vn F (ordinul subarborelui cu radacina
v).
Aratam ca (v) 2
(d
+
(v)1)/2
, care va implica
prin logaritmare armat ia din enunt ul teore-
mei.
Se observa ca inegalitatea precedenta are loc
pentru v frunza, asa ca utilizam un rat ionament
inductiv.
Fie k = d
+
(v) si e v
i
copilul numarul i al lui
v (i = 1, . . . , k).
Avem, (v
i
) 2
(d
+
(v
i
)1)/2
2
(i1)/2
, ntrucat
d
+
(v
i
) i 2.
Deci (v) = 1+

k
i=1
(v
i
) 1+

k
i=1
2
(i3)/2

2
(k1)/2
, si teorema e demonstrata.
104
Un heap Fibonacci cont inand valorile reale
(u
j
; j U) este o padure Fibonacci F = (U, A)
(ecare varf j are ordonat i copii astfel ncat
copilul numarul i are cel put in i2 copii)n care
este precizata o mult ime T U astfel ncat:
( i) daca jk A atunci u
j
u
k
;
(ii) daca h este copilul numarul i al lui j si h , T
atunci h are cel put in i 1 copii;
(iii) daca j
1
si j
2
sunt doua radacini distincte
atunci d
+
(j
1
) ,= d
+
(j
2
).
Teorema anterioara ne asigura ca numarul
radacinilor nu va depasi 2 +2log[U[.
Heapul Fibonacci va reprezentat cu ajutorul
urmatoarei structuri de date:
- cate o lista dublu nlant uita C
j
a copiilor
ecarui j U;
-funct ia p : U U, unde p(j) = parintele lui j
(daca j e radacina p(j) = j);
105
-funct ia d
+
: U N;
-funct ia b : 0, . . . , t U (cu t = 1+2log[U[)
cu proprietatea ca b(d
+
(j)) = j pentru ecare
radacina j;
-funct ia l : U 0, 1 cu l(j) = 1 daca si nu-
mai daca j T.
Teorema. Pentru gasirea si stergerea de n ori
a unui j care minimizeaza u
j
si descresterea de
m ori a unei valori u
j
, structura de date poate
actualizatan timpul O(m+p+nlogp), unde
p este numarul de varfuri din padurea init iala.
Dem. Pentru gasirea unui j care minimizeaza
u
j
este sucient sa parcurgem u
b(i)
pentru i =
0, . . . , t, deci n O(logp). Un astfel de element
j (cu u
j
minim) se poate sterge astfel:
-e v
1
, . . . , v
k
copii lui j;
-stergem j si arcele ce ies din j din padure;
-acum v
1
, . . . , v
k
au devenit radacini, iar condit iile
(i) si (ii) nu-s afectate;
106
-pentru repararea condit iilor (iii) se executa
pentru ecare r = v
1
, . . . , v
k
:
repara(r): daca s radacina cu d
+
(r) = d
+
(s)
atunci: daca u
r
u
s
, adauga s ca ultim copil
al lui r si repara(r), altfel ( u
r
> u
s
), adaua r
ca ultim copil al lui s si repara(s).

In acest fel condit iile (i) si (iii) sunt ment inute,


iar existent a radacinii s de mai sus, se face cu
ajutorul funt iilor b, d si p (n timpul procesului,
se actualizeaza structura de date).
Descresterea unei valori u
j
pentru un j U se
face astfel:
declara radacina(j):
daca j are un parinte, e acesta v, atunci
se sterge arcul vj si se aplica repara(r);
daca v / T se adauga v la T, altfel se scoate v
din T si se aplica declara radacina(v):
107
Notam cu incr(..) si decr(..) numarul cresterilor,
respectiv descresterilor lui .. n timpul operat iilor
din enunt ul teoremei. Avem:
numarul de apeluri ale lui declara radacina=
decr(u
j
)+decr(T)
decr(u
j
)+incr(T)+p 2decr(u
j
)+p=2m+p,
deoarece crestem T cel mult o data dupa ce a
descrescut un u
j
.
Daca R este mult imea radacinilor, avem:
numarul de apeluri ale lui repara=
decr(A)+decr(T)
decr(A)+incr(R)+p =2decr(A)+p
2(nlogp+ numarul de apeluri ale lui declara radacina)+p
2(nlogp +2m+p) +p.
Cum decizia daca sa se apeleze una sau alta
dintre cele doua funct ii se facen O(1), rezulta
ca algoritmul are complexitatea O(m+p+nlogp)
si teorema e demonstrata.
108
Corolar. Algoritmul lui Dijkstra pentru rezolva
rea problemei P2 se poate imlementa cu aju-
torul heap-urilor Fibonacci n complexitatea timp
O(m+nlogn).
Demonstrat ia rezulta din teorema precedenta
si din urmatoarea gura care indica un mod de
construct ie a heap-ului init ial (binomial):
B3 B2 B1 B0
B4
109
Daca se doreste rezolvarea problemei (P1) cu
ajutorul algoritmului lui Dijkstra, atunci, la in-
troducerea lui t n S, se poate opri algoritmul.
Complexitatea, n cazul cel mai nefavorabil,
ramne aceeasi. Totusi, n situat ii practice con-
crete exista posibilitatea de a grabi introduc-
erea lui t n S utiliznd o funct ie de dirijare a
procesului de construct ie a lui S.
O funct ie g : V R
+
se numeste estimator
consistent daca
(i) i V u
i
+ g(i) mina(D
st
) [ D
st

T
st
si i V (D
st
);
(ii) ij E g(i) a
ij
+g(j).
Sa observam ca g(i) = 0 i este un estimator
consistent (trivial).
Daca nsa V (G) este o mult ime de puncte din
plan, atunci g(i)=distant a (euclidiana) de la
i la t este un estimator consistent, daca snt
satisfacute condit iile (ii).
110
Daca g este un estimator consistent atunci se
poate modica alegerea lui j

n algoritm ast-
fel: u
j
+g(j

) = minu
j
+g(j) [ j V \ S.
Algoritmul ramne valabil (demonstrat ia este
identica situat iei g(i) = 0 i si se foloseste (ii)
repetat).
Avantajul este acela ca se vor introduce n S
vrfuri care sa ne apropie de t.

In implementarea care rezulta din descrierea


algoritmului lui Dijkstra, s-a presupus ca se
dispune de matricea de cost-adiacent a a di-
grafului.

In cazul digrafurilor cu multe vrfuri
(n care, de exemplu, listele de adiacent a snt
memorate n memoria secundara), saun cazul
digrafurilor date funct ional (se dispune de o
procedura care construieste pentru un vrf dat,
lista sa de adiacent a) aceasta implementare
este neecienta, respectiv neaplicabila. O im-
plementare care nu are aceste decient e este
urmatoarea datorata lui Glover, Klingman si
Philips (1985)
111
Partition Shortest Path ( PSP) algorithm:
1. u
s
0; nainte(s) 0;
S ; NOW s; NEXT ;
2. while NOW NEXT ,= do
while NOW ,= do
Extrage i din NOW;
S S i;
L N
+
G
(i);// se genereaza n L, lista de
adiacent a si costurile corespunzatoare
for j L do
if j / NOW NEXT then
u
j
u
i
+a
ij
; nainte(j) i;
introdu j n NEXT

else if u
j
> u
i
+a
ij
then
u
j
u
i
+a
ij
nainte(j) i

if NEXT ,= then
determina d = minu
i
[ i NEXT;
transfera i NEXT cu u
i
= d n NOW

112
Rezolvarea problemei (P2) n cazul gen-
eral.
Daca exista ij E astfel nct a
ij
< 0, algorit-
mul lui Dijkstra nu mai este valabil n general
(introducerea lui j

n S poate conduce la vio-


larea condit iei (D)).
Considernd ndeplinita condit ia (I) vom re-
zolva sistemul () prin aproximat ii succesive.
Consideram i V si m = 1, n 1
(BM)
u
m
i
= mina(D) [ D T
si
, nr arcelor lui D este m.
Cum orice drum n G are cel mult n 1 arce
rezulta ca daca reusim construct ia lui
u
1
= (u
1
1
, . . . , u
1
n
), u
2
= (u
2
1
, . . . , u
2
n
), . . .,
u
n1
= (u
n1
1
, u
n1
2
, . . . , u
n1
n
), atunci u
n1
este
solut ia sistemului ().
Algoritmul care rezulta este urmatorul:
113
Algoritmul lui Bellman, Ford, Moore ( 1960)
1. u
1
s
0; for i V \ s do u
1
i
a
si
;
// evident (BM) are loc
2. for m := 1 to n 2 do
for i := 1 to n do
u
m+1
i
min
_
u
m
i
, min
j,=i
(u
m
j
+a
ji
)
_
Pentru a demonstra corectitudinea algoritmu-
lui, aratam ca daca u
m
(m 1) satisface (BM)
atunci si u
m+1
o satisface. Fie i V si con-
sideram mult imile de drumuri:
A = D [ D T
si
, numarul arcelor lui D m+1.
B = D [ D T
si
, numarul arcelor lui D m.
C = D [ D T
si
, numarul arcelor lui D = m+1.
Atunci A = B C si
mina(D) [ D A = min(mina(D) [ D
B, mina(D) [ D C)
114
Cum u
m
satisfac (BM), rezulta ca
mina(D) [ D A = min(u
m
i
, mina(D) [ D
C).
Fie mina(D) [ D C = a(D
0
), D
0
C.
Daca j este vrful ce-l precede pe i n D
0
(ex-
ista, ntruct D
0
are macar 2 arce) atunci
a(D
0
) = a(D
0
sj
) +a
ji
u
m
j
+a
ji
,
ntruct D
0
sj
are m arce si u
m
satisface (BM).
Rezulta ca
mina(D) [ D A = minu
m
i
, min
j,=i
(u
m
j
+
a
ji
) valoare care n algoritm se atribuie lui
u
m+1
i
.
Observam ca algoritmul are complexitatea de
O(n
3
) daca determinarea minimului din pasul
2 necesita O(n) operat ii.
Determinarea drumurilor minime se face ment innd
vectorul nainte, init ializat n mod evident n
pasul 1 si actualizat corespunzator, la stabilirea
minimului din pasul 2.
115
Observat ii:
1. Daca la algoritm se adauga si pasul 3:
3. if (i V a.. u
n1
i
> min
j,=i
(u
n1
j
+a
ji
))
thenexista circuit de cost negativ .
se obt ine posibilitatea testarii n O(n
3
) a
existent ei unui circuit C de cost negativ n di-
graful G (altfel, din demonstrat ia corectitudinii
algoritmului ar trebui sa nu se poata micsora
u
n1
i
).
Depistarea circuitului C se face simplu (O(n))
utiliznd vectorul nainte.
2. Daca exista k < n1 astfel nct u
k
= u
k+1
atunci algoritmul se poate opri. Mai mult, se
poate obt ine o implementare a acestui algo-
ritm, care sa aiba complexitatea O(nm), folosind
o coada UQ n care se vor pastra vrfurile i
carora li se modica u
i
curent (se va renunt a,
evident, la memorarea tuturor aproximat iilor
succesive).
116
Rezolvarea problemei (P3).
Consideram
u
ij
= mina(D
ij
) [ Dij T
ij
i, j V.
Problema se reduce la determinarea matricii
U = (u
ij
)
nn
, atunci cnd se cunoaste A ma-
tricea de cost-adiacenta.
Drumurile de cost minim vor obt inuten O(n)
daca odata cu determinarea matricii U se va
construi matricea

Inainte=(nainte(i,j))
nn
cu elementele avnd
semnicat ia
nainte(i,j)=vrful dinaintea lui j de pe drumul
de cost minim de la i la j n G.
Sa observam ca daca a
ij
0 ij, atunci, iternd
algoritmul lui Dijkstra pentru s 1, . . . , n, se
obt ine un algoritm de complexitate O(n
3
).
117
Daca G nu cont ine circuite de cost negativ, dar
exista si arce de cost negativ, iternd algoritmul
lui Bellman Ford pentru s = 1, n se obt ine un
algoritm de complexitate O(n
4
).
Aratam n continuare ca se poate proceda si
mai ecient.
Solut ia I
a
.
Fie : V R a. . ij E (i) +a
ij
(j).
Consideram a : E R
+
data de
a
ij
= a
ij
+(i) (j), ij E.
Avem a
ij
0 si, n plus, oricare ar D
ij
T
ij
,
(2) a(D
ij
) = a(D) +(i) (j).
Rezulta ca se poate itera algoritmul lui Dijkstra
pentru obt inerea drumurilor de cost a minim si
din relat ia (2) se observa ca un drum este de
cost a minim daca si numai daca este drum de
cost a minim. Rezulta urmatorul algoritm:
118
1. Determina si construieste A.
2. Rezolva (P3) pt. A construind U si

Inainte.
3. Determina U (u
ij
:= u
ij
(i) +(j) ij).
Pasul 2 al algoritmului necesita O(n)
3
) operat ii
prin iterarea algoritmului lui Dijkstra.
Pasul 1 se poate realizan timpul O(n
3
), xnd
s V si rezolvnd (P2) cu alg. Bellman-Ford.

In adevar, daca (u
i
, i V ) este solut ie a lui
(P2), atunci (u
j
, j V ) este solut ie a sistemu-
lui () u
j
= min
i, =j
u
i
+ a
ij
, adica ij E
u
j
u
i
+a
ij
, sau, a
ij
+u
i
u
j
0.
Deci, se poate considera (i) = u
i
i V .
Solut ia a II
a
.
Fie
u
m
ij
= mina(D
ij
) [ D
ij
T
ij
, V (D
ij
) \ i, j
1, 2, . . . , m1 i, j 1, 2, . . . , n, m = 1, n +1.
119
Atunci, evident u
1
ij
= a
ij
i, j V (presupunem
matricea A avnd elementele diagonale egale
cu 0).

In plus,
u
m+1
ij
= minu
m
ij
, u
m
im
+u
m
mj
i, j V, m = 1, . . . , n.
Aceasta ultima relat ie se poate justica induc-
tiv: un drum de cost minim de la i la j care nu
are vrfuri interioare m poate sa nu cont ina
vrful m, si atunci are costul u
m
ij
, sau poate
cont ine vrful m, si atunci, din principiul op-
timalitat ii al lui Bellman si ipoteza inductiva,
este u
m
im
+u
m
mj
.
Evident, daca se obt ine u
m
ii
< 0 atunci digraful
cont ine un circuit de cost negativ C care trece
prin vrful i, cu V (C) \ i 1, . . . , m1.
Aceasta solut ie a problemei (P3) este cunos-
cuta ca algoritmul lui Floyd-Warshal si poate
descris astfel:
120
1: for i := 1 to n do
for j := 1 to n do
nainte(i, j) i;
if i = j then a
ii
0;nainte(i, i) 0

2: for m := 1 to n do
for i := 1 to n do
for j := 1 to n do
if a
ij
> a
im
+a
mj
then
a
ij
a
im
+a
mj
;
nainte(i, j) nainte(m, j)
if (i = j a
ij
< 0) then
return circuit negativ

Evident, complexitatea algoritmului este de O(n


3
).
Observat ie. Daca digraful nu cont ine circuite
de cost negativ, atunci init ializnd a
ii
, val-
orile nale ale elementelor diagonale dau costul
minim al unui circuit ce trece prin vrful core-
spunzator.
121
Solut ia a III
a
. Consideram a
ii
= 0 i V (G
nu cont ine circuite de cost < 0).
Iterarea algoritmului lui Bellman Ford corespunde
urmatoarei abordari. Fie
u
m
ij
= mina(D
ij
) [ D
ij
T
ij
, D
ij
are cel mult m arce
i, j V , m = 1, 2, . . . , n 1.
Daca notam U
m
= (u
m
ij
) cu m 0, 1, 2. . . , n
1, unde U
0
are toate elementele cu except ia
celor de pe diagonala care-s egale cu 0 atunci,
iterarea algoritmului lui Bellman Ford revine la:
1. for i, j V do u
0
ij
if i ,= j else 0;
2. for m := 0 to n 2 do
for i, j V do u
m+1
ij
= min
k
(u
m
ik
+a
kj
);
(n minimul anterior, comparat ia cu u
m
ij
din
algoritmul Bellman Ford, se realizeaza pen-
tru k = j, si utiliznd ipoteza ca a
jj
= 0).

Intregul proces de calcul se poate rescrie ma-


tricial daca se considera urmatorul produs pe
mult imea matricilor patrate cu elemente reale:
122
B, C /
nn
B C = P = (p
ij
)
unde, p
ij
= min
k=1,n
(a
ik
+b
kj
).
Se observa ca, daca se foloseste determinarea
uzuala a minimului, atunci calculul matricii P
este similar nmult irii uzuale a matricilor.

In
plus operat ia este asociativa.
Cu aceste notat ii avem
U
m+1
= U
m
A si inductiv rezulta ca
U
1
= A, U
2
= A
(2)
, . . . , U
n1
= A
(n1)
unde A
(k)
= A
(k1)
A si A
(1)
= A.

In ipoteza ca graful nu are circuite de cost neg-


ativ, atunci A
(2
k
)
= A
(n1)
k : 2
k
n 1.
Rezulta ca determinarea succesiva a matricilor
A, A
(2)
, A
(4)
= A
(2)
A
(2)
, . . . conduce la un al-
goritm de complexitate O(n
3
logn) pentru re-
zolvarea problemei (P3)
123
(desigur, matricea

Inainte se va obt inen O(n


3
)
operat ii ca n demonstrat ia teoremei 1, dupa
determinarea lui U
n1
.)
Daca produsul matricial considerat se face
cu algoritmi mai performant i atunci se obt ine
o rezolvare ecienta a problemei (n
3
din eval-
uarea precedenta se poate nlocui cu n
log
2
7
=
n
2,81
(Strassen 1969); sau chiar cu n
2,38
(Cooppersmith, Winograd 1987)).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
124
3. Probleme de conexiune.
Teorema lui Menger si aplicat ii.
Denit ie. Fie G = (V, E) (di)graf si X, Y V .
Numim XY-drum n G orice drum D n G de
la un vrf x X la un vrf y Y , astfel nct
V (D) X = x si V (D) Y = y.

In gura alaturata, D
1
: a, v, u, t, c si D
2
: a, d
sunt singurele XY -drumuri ce pornesc din a :
a
b
c
d
v
u
t
X
Y
Vom nota cu T(X, Y ; G) mult imea tuturor XY -
drumurilor n G.
Sa observam ca daca x X Y atunci drumul
de lungime 0 D = x este XY -drum.
125
Vom spune ca drumurile D
1
si D
2
snt disjuncte
daca V (D
1
) V (D
2
) = .
Probleme practice evidente, din ret elele de co
municat ie, dar si unele probleme legate de conex-
iunea grafurilor si digrafurilor, necesita deter-
minarea unor mult imi de XY -drumuri disjuncte
si cu numar maxim de elemente.
Vom nota cu p(X, Y ; G) numarul maxim de
XY -drumuri disjuncte n (di)graful G.
Teorema care precizeaza acest numar a fost
stabilita de Menger n 1927 si constituie unul
din rezultatele fundamentale din teoria grafu-
rilor.
Denit ie. Fie G = (V, E) un digraf si X, Y
V . Numim mult ime XY-separatoare n G o
mult ime Z V astfel nct D T(X, Y ; G)
V (D) Z ,= .
126
Notam cu
S(X, Y; G) = Z [ Z XY -separatoare n G
si cu
k(X, Y; G) = min[Z[; Z S(X, Y ; G).
Din denit ie, rezulta urmatoarele proprietat i
imediate ale mult imilor XY -separatoare:
(a) Daca Z S(X, Y ; G) atunci D T(X, Y ; G)
D nu este drumn GZ.
(b) X, Y S(X, Y ; G).
(c) Daca Z S(X, Y ; G) atunci A astfel nct
Z A V avem A S(X, Y ; G).
(d) Daca Z S(X, Y ; G) si T S(X, Z; G) sau
T S(Z, Y ; G) atunci T T(X, Y ; G).
127
Proprietatea (d) este esent iala pentru obt inerea
teoremei urmatoare si este evident iata mai jos
X
Y
T
Z
Teorema. 1. Fie G = (V, E) (di)graf si X, Y
V . Atunci
p(X, Y ; G) = k(X, Y ; G).
Demonstrat ie: 1
0
. Daca p = p(X, Y ; G) si
D
1
, D
2
, . . . , D
p
snt XY -drumuri disjuncte n G,
atunci Z S(X, Y ; G) avem Z V (D
i
) ,= si
cum D
i
snt disjuncte (i = 1, p):
[Z[ [Z
p
i=1
V (D
i
)[ =

i=1,p
[Z V (D
i
)[

i=1,p
1 = p.
Deci Z S(X, Y ; G) [Z[ p; n particular
k(X, Y ; G) p(X, Y, G).
128
2
0
. Aratam prin induct ie dupa a(G) = [V [ +[E[
ca G = (V, E) X, Y V
() k(X, Y ; G) XY -drumuri disjuncte n G.
(Evident, din () rezulta ca
p(X, Y ; G) k(X, Y ; G) si deci, mpreuna cu
1
0
, teorema e demonstrata).
Cum () se verica pentru (di)grafuri G cu
a(G) = 1, 2, consideram n pasul inductiv ca
() are loc pentru orice (di)graf G

si orice
X

, Y

V (G

), cu a(G

) < a(G). Pentru a


exclude cazurile banale, vom presupune ca
X , Y , Y , X si k = k(X, Y ; G) > 0.
Cazul 1. Exista Z S(X, Y ; G) astfel nct
[Z[ = k, Z ,= X, Y .
Consideram V
XZ
= v [ D T(X, Z; G) : v
V (D) si V
ZY
= v [ D T(Z, Y ; G) : v
V (D).
129
Sa observam ca V
XZ
V
ZY
= Z
(daca exista v V
XZ
V
ZY
Z, atunci se
obt ine ca Z nu este XY-separatoare; daca ex-
ista z Z astfel nct z / V
XZ
V
ZY
atunci
Zz este XY-separatoare, contrazicnd [Z[ =
k(X, Y ; G)).
X
Y Z
Vxz
Vzy
Pe de alta parte, exista x XZ (daca X Z,
atunci cum X S(X, Y ; G) si [Z[ = k(X, Y ; G)
rezulta X = Z, contrazicnd ipoteza cazului
1) si evident x / V
ZY
(altfel, Z nu ar XY -
separatoare). Rezulta [V
ZY
[ < [V [.

In mod
similar [V
XZ
[ < [V [.
130
Fie G
XZ
= [V
XZ
]
G
si G
ZY
= [V
ZY
]
G
. Din
observat iile precedente: a(G
XZ
), a(G
ZY
) < a(G).
Avem k(X, Z; G
XZ
) = k si k(Z, Y ; G
ZY
) = k
(Z este XZ- separatoaren G
XZ
, respectiv ZY -separatoare
n G
ZY
si are cardinalul k; dacan unul din cele doua gra-
furi, ar exista o mult ime T separatoare de cardinal < k,
atunci, utiliznd observat ia (d), se contrazice denit ia
lui k pentru G, X si Y ).
Din ipoteza inductiva, rezulta ca exista k XZ-
drumuri disjuncte n G
XZ
si k ZY -drumuri dis-
juncte n G
ZY
. Cum V
XZ
V
ZY
= Z si [Z[ = k,
rezulta ca aceste 2k drumuri se pot concatena
doua cte doua n G (vezi gura de mai jos) si
deci () are loc.
X
Y
Z
131
Cazul 2. Oricare ar Z XY -separatoare
astfel nct [Z[ = k avem Z = X sau Z = Y .
Presupunem, pentru precizarea notat iilor, Z =
X. Cum X , Y , exista x X Y . X x
nu este XY -separatoare (are mai put in de k
elemente). Exista deci un XY-drum n G. Fie
e = xy prima muchie (arc) a acestui drum (ex-
ista!). Sa observam ca y / X. Consideram
G

= G e. Avem a(G

) < a(G), deci () are


loc pentru G

, X si Y .
Daca k(X, Y ; G

) = k, atunci cele k XY -drumuri


disjuncte din G

snt XY -drumuri disjuncte si n


G deci () are loc pentru G, X si Y .
Daca k(X, Y ; G

) < k, atunci n G

exista Z

XY -separatoare cu [Z

[ = k1 (se aplica, even-


tual, proprietatea (c)).
132
Deci Z

nu este XY -separatoaten G ([Z

[ < k).
Singurele XY -drumuri pe care Z nu le inter-
secteaza snt cele care au drept prima muchie
(arc) pe e.
Din denit ia lui k, rezulta ca x / Z

, y / Z

si
[Z

x[ = [Z

y[ = k.
Din alegerea lui x si y avem Z

x ,= Y si
Z

y ,= X.
Din ipoteza cazului 2, rezulta atunci ca
Z

x = X si Z

y = Y .
Cele k drumuri din () snt n acest caz
z
zZ
si (x, xy, y).
x y
Z
e
X
Y
Cu acestea, teorema este demonstrata.
133
Observat ii: 1
0
. Egalitatea min-max din enunt ul
teoremei este interesanta si conduce, asa cum
vom vedea, la rezultate importante, n cazuri
particulare.
2
0
Teorema se poate demonstra si algoritmic
ca o consecint a a teoremei uxului maxim-
sect iunii minime, asa cum vom arata n capi-
tolul relativ la probleme de ux.
Forma echivalenta n care a fost enunt ata si
demonstrata init ial de Menger (1927) teorema
1 este:
Teorema. 1. Fie G = (V, E) un (di)graf si
s, t V , astfel nct s ,= t, st / E. Exista k
drumuri intern disjuncte de la s la t n graful G
daca si numai daca ndepartnd mai put in de k
vrfuri diferite de s si t, n graful ramas exista
un drum de la s la t.
134
Notam ca doua drumuri snt intern disjuncte
daca nu au vrfuri comune cu except ia extremitat ilor.
Se observa ca daca se considera X = N
G
(s) si
Y = N
G
(t) (respectiv, N
+
G
(s) si N

G
(t) n cazul
digrafurilor) teorema 1 se obt ine imediat din
teorema 1.
s t
X
Y
Reciproc, o construct ie inversa celei de mai sus
asupra tripletului G, X, Y din teorema 1, arata
ca teorema 1 se obt ine din teorema 1.
135
Am denit un graf G p-conex (p N

) daca
G = K
p
sau daca [G[ > p si G nu poate
deconectat prin ndepartarea a mai put in de p
vrfuri. Utiliznd teorema 2 obt inem
Corolar. Un graf G este p-conex daca G = K
p
sau st E(G) exista p drumuri intern dis-
juncte de la s la t n G.
Determinarea numarului k(G) de conexiune a
grafului G (cea mai mare valoare a lui p pentru
care G este p-conex) se reduce deci la deter-
minarea lui
min
stE(G)
p(s, t; G)
problema care vom dovedi ca se poate rezolva
n timp polinomial.
Un caz particular interesant al teoremei 1, se
obt ine atunci cnd G este un graf bipartit iar X
si Y snt cele doua clase ale bipartit iei:
136
Teorema. 2. (Konig, 1931) Daca G =
(S, R; E) este un graf bipartit, atunci cardinalul
maxim al unui cuplaj este egal cu cardinalul
minim al unei mult imi de vrfuri incidente cu
toate muchiile grafului.
Demonstrat ie: Evident, cardinalul maxim al
unui cuplaj n G este
p(S, R; G), care este egal, conform teoremei 1,
cu k(S, R; G).
Teorema rezulta imediat daca observam ca o
mult ime de vrfuri este SR-separatoare daca si
numai daca este incidenta cu orice muchie a
grafului.
O aplicat ie, fundamentala n numeroase rat ionamente
combinatorii, a acestei teoreme este teorema lui Hall
(1935).
Denit ie: Fie I si S mult imi nite nevide. Nu-
mim familie de submult imi ale lui S (indexata
dupa I) orice aplicat ie , : I 2
S
. Vom nota
familia , = (A
i
; i I) si vom folosi notat ia
funct ionala uzuala
,(J) =
jJ
A
j
(pentru J I).
137
Daca , = (A
i
; i I) este o familie de submult imi
ale lui S, o funct ie r
,
: I S cu proprietatea
ca r
,
(i) A
i
, i I se numeste funct ie de
reprezentare pentru familia ,.

In acest caz, (r
,
(i); i I) formeaza un sistem
de reprezentant i ai familiei A.
Daca funct ia de reprezentare r
,
este injec-
tiva atunci r
,
(I) S se numeste sistem de
reprezentant i distinct i ai familiei ,, sau transver-
sala.
Problema centralan teoria transversalelor este
aceea de a caracteriza familiile , care admit
transversale (eventual cu anumite proprietat i).
Prima teorema de acest tip a fost stabilita de
Hall n 1935:
138
Teorema. 3. Familia , = (A
i
; i I) de submult imi
ale lui S admite o transversala daca si numai
daca
(H) [,(J)[ [J[ J I.
Demonstrat ie: Necesitatea este evidenta: daca
, admite o funct ie r
,
de reprezentare injectiva
atunci J I r
,
(J) ,(J) si deci [,(J)[
[r
,
(J)[ [J[ (ntruct r
,
este injectiva).
Sucient a. Consideram graful bipartit G
,
=
(I, S; E) unde am presupus I S = (altfel,
se considera copii izomorfe disjuncte) iar E =
is [ i I, s S s A
i
. Se observa ca
N
G
,
(i) = A
i
si ca , are o transversala daca
si numai daca G
,
are un cuplaj de cardinal
[I[.

In ipoteza ca (H) are loc, aratam ca orice
mult ime de vrfuri incidenta cu toate muchiile
lui G
,
are macar [I[ elemente,
139
ceea ce dovedeste existent a cuplajului de car-
dinal [I[ (utiliznd teorema 2).
Fie X = I

I S o mult ime de vrfuri in-


cidenta cu toate muchiile. Rezulta ca N
G
,
(I
I

) S

, adica ,(I I

) S

. Atunci, [X[ =
[I

[ +[S

[ [I

[ +[,(I I

)[. Folosind condit ia


(H) obt inem n continuare: [X[ [I

[ +[,(I
I

)[ [I

[ +[I I

[ = [I[.
I
S
I
S
140
O alta teorema celebra care poate obt inuta
ca o consecint a imediata a teoremei 2 este teo-
rema lui Dilworth, 1950.
Preferam totusi, o demonstrat ie directa, pen-
tru a evident ia asemanarea cu cea a teoremei
1. Fie (P, ) o mult ime nita part ial ordonata
( este o relat ie de ordine pe P ).
Daca x, y P, spunem ca x si y snt compara-
bile daca x y sau y x.
Un lant n (P, ) este o submult ime L a lui P
cu proprietatea ca orice doua elemente ale sale
snt comparabile.
Un antilant n (P, ) este o submult ime A a lui
P cu proprietatea ca x, y A x y x = y.
Teorema. 4. (Dilworth, 1950) Daca (P, )
este o mult ime part ial ordonata nita, atunci
numarul minim de lant uri a caror reuniune (dis-
juncta) este P este egal cu cardinalul maxim
al unui antilant .
141
Demonstrat ie. Fie a(P, ) cardinalul maxim al
unui antilant al lui (P, ).
Aratam prin induct ie dupa [P[, ca exista a(P, )
lant uri a caror reuniune este P (inegalitatea
inversa este imediata).
Dcaa [P[ = 1, armat ia este triviala, deci pre-
supunem, n pasul inductiv, ca teorema are loc
pentru orice mult ime part ial ordonata cu mai
put in de [P[ 2 elemente.
Fie L un lant maximal (n raport cu incluzi-
unea) al lui P.
Daca a(P L, ) = a(P, )1, atunci teorema
are loc din ipoteza inductiva.
Deci, presupunem can P L exista un antilant
A = a
1
, a
2
, . . . , a
m
cu m = a(P, ). Fie
P

= x [ x P, a
i
A : x a
i

P
+
= x [ x P, a
j
A : a
j
x.
Se observa ca P = P

P
+
, P

P
+
= A si ca
[P

[, [P
+
[ < [P[ [ elementul maximal (minimal
) al lui L nu apart ine lui P

(respectiv, P
+
)].
142
L
a
a
a
1
2
m
A
P
-
P
+
Se poate, deci, aplica ipoteza inductiva pentru
a scrie
P

=
i=1,m
L

i
L

i
lant a
i
L

i
i = 1, m
P
+
=
i=1,m
L
+
i
L
+
i
lant a
i
L
+
i
i = 1, m.

In plus, a
i
este element maximal n L

i
si ele-
ment minimal n L
+
i
.
Rezulta ca (L

i
L
+
i
)
i=1,m
snt cele a(P, )
lant uri a caror reuniune este P.
143
Structura grafurilor p-conexe.
Lema. 1. Fie G = (V, E) p-conex, [V [ p+1,
U V [U[ = p si x V U. Exista n G p xU-
drumuri cu singurul vrf comun x.
Demonstrat ie: Consideram graful G

= (V
z, E

), unde E

= E zy [ y U.
x
z
U
G
G

este p-conex.

In adevar, A cu [A[ p 1
G

A este conex (daca z A, acest lucru


este evident din p-conexiunea lui G; daca A
V , atunci G

A este conex ntruct G A


este conex si y U cu zy E(G

A) ).
Lema rezulta, aplicnd teorema 1 grafului G

si perechii x, z.
144
Lema. 2. Daca G = (V, E) este un graf p-
conex p 2, atunci oricare ar doua muchii
e
1
si e
2
si p 2 vrfuri x
1
, x
2
, . . . , x
p2
exista un
circuit n G care le cont ine.
Demonstrt ie: Induct ie dupa p.
Daca p = 2, trebuie sa dovedim can orice graf
2-conex, prin orice doua muchii trece un cir-
cuit. Consideram G

obt inut din G prin insert ia


cte unui vrf pe muchiile e
1
( a ) si e
2
( b ).
e1
e2
G
a
b
G
Noul graf este tot 2-conex, deoarece orice vrf
am scoate, nu se pierde conexiunea . Exista
deci n G

doua ab-drumuri disjuncte, care n G


ofera un circuit ce cont ine e
1
si e
2
.
145
Fie p > 2 si presupunem armat ia adevarata
pentru orice graf k-conex k < p. Fie G p-conex.
Putem presupune ca extremitatile muchiilor e
1
si e
2
nu snt printre x
1
, x
2
, . . . , x
p2
, deoarece
altfel, armat ia ar rezulta prin induct ie.
Graful G x
p2
este (p 1)-conex. Conform
ipotezei inductive exista un circuit ce cont ine
x
1
, x
2
, . . . , x
p3
si e
1
, e
2
. Fie Y mut imea vrfurilor
lui , [Y [ p.
Folosind lema 1, existan G p x
p2
y drumuri cu
y Y , disjuncte. Putem presupune ca pentru
orice x
p2
y astfel de drum, y este primul vrf
din Y ntlnit, asa ca aceste drumuri au cte un
singur vrf comun cu Y . Dam o orientare cir-
cuitului si numerotam vrfurile sale conform
acestei orientari.Avem deci drumurile
D
x
p2
y
1
, D
x
p2
y
2
, . . . , D
x
p2
y
p
.
146
x
p-2
y1
y2
yp
yi
Vrfurile y
1
, y
2
, . . . , y
p
descompun circuitul n dru-
murile D
y
1
y
2
, D
y
2
y
3
, . . . , D
y
p1
y
p
, D
y
p
y
1
.
Exista un drum dintre acestea, n care nu e
cont inut nici unul din elementele
x
1
, . . . , x
p3
, e
1
, e
2
.
Fie acest drum D
y
1
y
2
; atunci
D
x
p2
y
2
, D
y
2
y
3
, . . . , D
y
p
y
1
, D
y
1
x
p2
este un circuit
ce cont ine x
1
, x
2
. . . , x
p2
, e
1
si e
2
,
si lema este demonstrata.
147
Teorema. 5. (Dirac 1953) Daca G = (V, E)
este un graf p-conex p 2, atunci prin orice p
vrfuri ale sale trece un circuit.
Demonstrat ie. Fie x
1
, x
2
, . . . , x
p2
, x
p1
, x
p
p
vrfuri oarecare ale lui G. Deoarece graful G
este conex, exista e
1
= xx
p1
si e
2
= yx
p
si
aplicam lema 2.
Aplicam aceasta teorema, precum si ideea uti-
lizatan demonstrat ia lemei 2, pentru a demon-
stra o condit ie sucienta de hamiltonietate in-
teresanta, datorata lui Erd os si Chvatal (1972).
Teorema. 6. Fie G p-conex. Daca (G) p
atunci G este hamiltonian.
Demonstrat ie: Presupunem ca G nu e hamilto-
nian. Vom obt ine o contradict ie. Cum G este
p-conex , exista un circuit de lungime cel put in
p (conform teoremei lui Dirac de mai sus).
148
Fie C un circuit de lungime maxima n G. Daca G nu
e hamiltonian, exista v / C.

Intruct [C[ p, conform
lemei 2, exista p vC-drumuri disjuncte (cu except ia lui v)
e ele D
vv
1
, D
vv
2
, . . . , D
vv
p
(numerotarea vrfurilor este n
ordinea ntlnirii lor ntro parcurgere xata a circuitului
). Notam, pentru ecare v
i
, cu w
i
vrful succesor al lui
v
i
n parcurgerea lui C.
w v
v
w
w
v
v
s
s
t
t
k
k
Atunci, vw
i
/ E (altfel am avea circuitul
vw
i
, w
i
, Cw
i
v
i
, D
v
i
v
de lungime mai mare dect C). Cum
(G) p, mult imea v, w
1
, w
2
, . . . , w
p
nu este stabila.
Deci, exista w
s
w
t
E.
Dar atunci:
D
vv
s
,drumul (invers) pe C de la v
s
la w
t
, muchia w
t
w
s
,drumul
(invers) pe C de la w
s
la v
t
,si D
v
t
v
este un circuit de
lungime mai mare dect C, contrazicnd ipoteza ca C
este de lungime maxima.
149
III. ARBORI
1. Proprietat i elementare ale arborilor
Denit ie: Un arbore este un graf conex si fara
circuite.
Teorema. 1. Fie G = (V, E) un graf.
Urmatoarele armat ii snt echivalente:
(i) G este arbore.
(ii) G este conex si este minimal cu aceasta
proprietate.
(iii) G este fara circuite si este maximal cu
aceasta proprietate.
Observat ie:Maximalitatea si minimalitatea din condit iile
(ii) si (iii) se refera la mult imea muchiilor grafului G si
se considera n raport cu relat ia de ordine data de in-
cluziune. Mai precis, cele doua armat ii se pot formula
echivalent astfel:
(ii) G este conex si e E(G), G e este
neconex.
(iii) G este fara circuite si e E(G), G + e
are un circuit.
150
Denit ie: Fie G = (V, E) un (multi)graf. Se
numeste arbore part ial al lui G, un graf part ial
T = (V, E

) (E

E) care este arbore.


Vom nota cu T
G
mult imea arborilor part iali
ai lui G.
Obs. T
G
,= daca si numai daca G este conex.

In adevar, daca T
G
,= , atunci exista un arbore
part ial T = (V, E

) al lui G. T este conex, deci


ntre orice doua vrfuri ale lui G exista un drum
cu muchii din E

E. Prin urmare G este


conex.
Reciproc, daca G este conex, atunci consideram
urmatorul algoritm:
1. T G
2. while (e E(T) astfel nct T \ e este conex) do
T T \ e
151
Graful T obt inut este graf part ial al lui G, este
conex (din ipoteza, dupa atribuirea din 1, asa
este si din condit ia lui while, T este conex dupa
ecare iterat ie) si n plus la oprirea algoritmu-
lui, T satisface condit ia ii) din teorema 1, deci
este arbore.
O alta demonstrat ie a reciprocei anterioare se
bazeaza pe observat ia ca G = (V, E) este conex
daca si numai daca oricare ar o partit ie (V
1
, V
2
)
a lui V exista e = v
1
v
2
E cu v
i
V
i
i = 1, 2.
Daca [V [ = n > 0 atunci urmatorul algoritm
construieste un arbore part ial al lui G:
1. T
1
(v, ) (v V , oarecare); k 1;
2. while k < n do
Fie v
1
v
2
E cu v
1
V (T
k
), v
2
V \ V (T
k
);
// o astfel de muchie din conexiunea lui G
V (T
k+1
) V (T
k
) v
2
;
E(T
k+1
) E(T
k
) v
1
v
2
;
k := k +1

152
Se observa ca T
k
este arbore k = 1, n
(inductiv, daca T
k
este arbore, atunci din construct ie
T
k+1
este conex si nu are circuite)
si, n plus, se verica imediat ca:
[V (T
k
)[ = k iar [E(T
k
)[ = k1 k = 1, 2, . . . , n.
Aceasta demonstrat ie aplicata unui arbore G
cu n vrfuri dovedeste ca G are n 1 muchii.
Proprietatea obt inuta poate folosita pentru
completarea teoremei 1 cu alte caracterizari ale
arborilor:
Teorema. 1. Urmatoarele armat ii snt echiva-
lente pentru un graf G = (V, E) cu n vrfuri:
(i) G este arbore.
(ii) G este conex si are n 1 muchii.
(iii) G este fara circuite si are n 1 muchii.
(iv) G = K
n
pentru n = 1, 2 si G ,= K
n
pentru
n 3 si adaugarea unei muchii la G produce
exact un circuit.
153
2. Numararea si enumerarea arborilor part iali
Familia T
G
a arborilor part iali ai unui (multi)graf
are proprietat i interesante. Vom prezenta o
metoda (tip backtrack) de generare a ele-
mentelor lui T
G
, problema de interes practic
n multe aplicat ii (de exemplu, n chimie).
Fie G = (V, E), V = 1, 2, . . . , n, [E[ = m.
Reprezentam E printr-un tablou E[1..m, 1..2]
cu componente din V cu semnicat ia ca daca
v = E[i, 1] si w = E[i, 2], atunci vw este muchia
i a grafului G ( i = 1, m ).
Vom presupunen plus, ca primele d
G
(v
0
) muchii
din tabloul E satisfac E[i, 1] = v
0
unde v
0
V
este un vrf oarecare. Exemplu:
1
4
5
6
2
3
a b
d c
1
2
3
4
5
6
c
c
c
a
a
b
a
d
b
d
b
d
E
154
Un arbore part ial T T
G
va identicat cu
mult imea indicilor ce reprezinta muchiile sale
n tabloul E (submult ime a lui 1, . . . , m de
cardinal n 1).
Pe tot parcursul generarii dispunem de un vec-
tor global T[1..n1] cu componente din mult imea
1..m si de un indicator i avnd semnicat ia: n
arborele curent care se construieste, primele
i 1 muchii snt
T[1] < T[2] < . . . < T[i 1] (i 1, . . . , n).
generare-arbori-part iali(int i);
// se genereaza tot i arborii part iali ai lui G
avnd drept prime i 1 muchii,elementele
T(1), . . . , T(i 1)
ale tabloului E (ordonate crescator).
variabile locale:
j 1, . . . m; S, lista de vrfuri; x V ;
if i = n then
//T(1), . . . , T(n 1) formeaza un
arbore part ial ;
prelucreaza T ( listeaza, memoreaza etc.)
155
else
if i = 1 then
for j := 1 to d
G
(v
0
) do
T[i] j;
A:
generare-arbori-part iali(i +1);
B:

else
for j := T[i 1] +1 to m(n 1) +i do
if

T[1], . . . , T[i 1] j
_
G
nu are circuite
then
T[i] j;
A:
generare-arbori-part iali(i +1);
B:

Apelul generare-arbori-part iali(1) rezolva prob-


lema enumerarii elementelor lui T
G
.
156
Pentru exemplul considerat mai sus (G = K
4
si numerotarea precizata pentru muchii) arborii
generat i sunt urmatorii 16 :
2
1
2
1
5
2
1 6 1
3
3
4
Figura poate interpretata si ca lista tuturor
arborilor etichetat i distinct i care se pot forma
cu cele 4 noduri (nu s-au mai trecut etichetele
nodurilor si muchiilor, pentru decongestionarea
gurii; totusi s-a marcat muchia T(1) pentru
a se evident ia modul de funct ionare a algorit-
mului).
157
Pentru implementarea ecienta a testului daca
graful part ial
_
T[1], . . . , T[i 1] j
_
G
nu are circuite sa
observam ca din construct ie,
_
T[1], . . . , T[i 1]
_
G
nu are circuite , deci componentele sale conexe
snt arbori.
Vom considera un vector global rad[1..n] cu
componente din V cu semnicat ia
rad[v] = radacina arborelui la care apart ine
vrful v (unul din vrfurile acestui arbore).

Inaintea apelului generare-arbori-part iali(1) se


init ializeaza rad[v] v(v V ), ceea ce core-
spunde faptului ca T[1], . . . , T[i 1] = .
Pe parcursul apelurilor (recursive) se ncearca
plasarea muchiei j n mult imea curenta
T[1], . . . , T[i 1].
158
Fie v = E[j, 1] si w = E[j, 2].
Atunci
_
T[1], . . . , T[i 1] j
_
G
nu are cir-
cuite daca si numai daca
muchia vw nu are extremitat ilen aceeasi com-
ponenta a lui
_
T[1], . . . , T[i 1]
_
G
,
adica daca si numai daca rad[v] ,= rad[w].
Vectorul rad trebuie ntret inut pentru a avea
semnicat ia dorita.
Acest lucru se obt ine nlocuind n algoritmul
descris, instruct iunile (vide) etichetate A si B.
Astfel, A: se va nlocui cu secvent a :
S ; x rad[v];
for u V do
if rad[u] = x then
S S u ;
rad[u] rad[w]

159
(n cuvinte, arborele cu radacina x se uneste
cu arborele cu radacina rad[w]; se salveaza n
S vrfurile arborelui cu radacina x).
Dupa apelul lui generare-arbori-part iali(i + 1)
trebuie refacut vectorul rad la valoarea dinainte
de apel, deci se va nlocui B: cu
for u S do rad[u] := x;
Numarul elementelor lui T
G
, problema intere-
santa chiar si numai pentru analiza algorit-
mului precedent, se poate determina ecient.
Prezentamn continuare una din solut iile posi-
bile.
Fie G = (V, E) un multigraf cu V = 1, 2, . . . , n.
Cosideram A = (a
ij
)
nn
matricea de adiacent a
a lui G (a
ij
= multiplicitatea muchiei ij daca
ij E, altfel 0). Fie
D = diag(d
G
(1), d
G
(2), ..., d
G
(n)).
160
Matricea L[G] = D A se numeste matricea
de admitant a a multigrafului G sau ma-
tricea Laplace a lui G.
Sa observam ca n L[G] suma elemetelor de pe
ecare linie si ecare coloana este 0.
Teorema. 2. (Kircho-Trent) (Matrix Tree
Theorem) Daca G este un multigraf cu mult imea
de vrfuri 1, . . . , n si L[G] matricea Laplace,
atunci
[T
G
[ = det(L[G]
ii
) i 1, . . . , n.
L[G]
ij
noteaza minorul lui L[G] obt inut prin
ndepartarea liniei i si coloanei j.
Demonstrat ia (pe care o omitem) se bazeaza
pe regula clasica de dezvoltare a unui determi-
nat dupa o linie, dupa descompunerea lui T
G
n
arborii care cont in o muchie xata si cei care
nu cont in aceeasi muchie.
161
Corolar.

T
K
n

= n
n2
(Cayley).

In adevar,
L[K
n
] =
_
_
_
_
_
n 1 1 . . . 1
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1
1 . . . 1 n 1
_
_
_
_
_
si (dupa un simplu calcul):
det(L[K
n
]
11
) =

n 1 1 . . . 1
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1
1 . . . 1 n 1

= n
n2
.
(Daca n = 4, caz ilustrat n gura precedenta, se obt ine

T
K
4

= 4
2
= 16, adica au fost generat i tot i arborii !)
Observat ie. Teorema ofera un algoritm poli-
nomial de determinare a lui [T
G
[.
162
3. Arbori part iali de cost minim.
Consideram urmatoarea problema:
(P1) Date G = (V, E) graf si c : E R
(c(e) costul muchiei e), sa se determine
T

T
G
astfel nct
c(T

) = minc(T) [ T T
G
,
unde c(T) =

eE(T)
c(e).
Algoritmii cunoscut i pentru rezolvarea proble-
mei (P1) au la baza urmatoarea ideie:
Se considera init ial, familia T
0
= (T
0
1
, T
0
2
, . . . , T
0
n
)
de arbori disjunct i T
0
i
= (i, ) i = 1, n (am
presupus, ca de obicei ca V = 1, 2, . . . , n) .

In pasul general k ( k = 0, n 2) al algoritmului


se dispune de familia T
k
= (T
k
1
, T
k
2
, . . . , T
k
nk
)
de nk arbori disjunct i astfel nct V (T
k
i
)
i=1,nk
constituie o partit ie a lui V si se construieste
T
k+1
astfel:
163
- se alege T
k
s
unul din arborii familiei T
k
.
- dintre toate muchiile lui G cu o extremitaten
T
k
s
si cealaltan V V (T
k
s
) se alege una de cost
minim, e

= v
s
v
j
unde v
j
V (T
k
j

) j

,= s.
- T
k+1
= (T
k
\ T
k
s
, T
k
j

) T unde T este ar-


borele obt inut din T
k
s
si T
k
j

la care adaugam
muchia e

.
T
s
k
T
j*
k
v
s
v
j*
Se verica imediat ca noua familie este formata
din arbori disjunct i care partit ioneaza mult imea
de vrfuri ale grafului G. Daca alegerea muchiei
e

nu este posibila, atunci rezulta ca G nu este


conex si deci problema (P1) nu are solut ie.
164
Evident, familia T
n1
construita n pasul n2
este formata dintr-un singur arbore T
n1
1
.
Teorema. 3. Daca G = (V, E) este un graf
conex cu V = 1, 2, . . . , n atunci T
n1
1
con-
struit de algoritmul descris mai sus este arbore
part ial de cost minim.
Demonstrat ie. Vom arata ca k 0, 1, .., n
1 T

arbore part ial de cost minim al lui G,


astfel nct E(T
k
) =
nk
i=1
E(T
k
i
) E(T

).

In particular, pentru k = n 1, E(T


n1
) =
E(T
n1
1
) E(T

) va implica T
n1
1
= T

(cei
doi arbori avnd acelasi numar de muchii, rezulta
ca incluziunea are loc cu egalitate) si teorema
e demonstrata.
Pentru k = 0, armat ia este trivial adevarata:
E(T
0
) = si din conexiunea grafului G, T
G
este nevida deci exista T

solut ie a problemei
P1.
165
Daca armat ia este adevarata pentru 0 k
n 2, atunci avem E(T
k
) E(T

) (T

arbore
part ial de cost minim) si
E(T
k+1
) = E(T
K
) e

.
Daca e

E(T

), atunci, evident, E(T


k+1
)
E(T

) si deci armat ia are loc pentru k +1.


Presupunem, deci, ca e

/ E(T

). Atunci T

+
e

cont ine exact un circuit C ce trece prin


muchia e

= v
s
v
j
. Cum v
j
/ V (T
k
s
) rezulta
ca C va cont ine o muchie e
1
,= e

cu o ex-
tremitate n V (T
k
s
) si cealalta n V \ V (T
k
s
).
Din alegerea muchiei e

, avem c(e

) c(e
1
) si
e
1
E(T

) \ E(T
k
).
T
s
k
v
s
v
j*
C
T*
166
Fie T
1
= (T

+e

) e
1
.
T
1
T
G
(este conex si are n-1 muchii).
Din construct ie, avem ca E(T
k+1
) E(T
1
).

In plus, c(T
1
) = c(T

) + c(e

) c(e
1
) c(T

)
deci c(T
1
) = c(T

), adica T
1
este de cost minim
si teorema e demonstrata.
Observat ii:
1
0
Demonstrat ia anterioara ramne valabila pen-
tru funct ii de cost c : T
G
R astfel nct:
T T
G
, e E(T), e

/ E(T)
c(e

) c(e) c((T +e

) e) c(T).
2
0

In algoritmul descris nu s-a precizat modul
de alegere al arborelui T
k
. Vom considera, n
continuare doua strategii de alegere a acestui
arbore.
167
Algoritmul lui Prim(1957) (implementarea
este datorata lui Dijkstra, 1961).
Arborele T
k
s
va ntotdeauna arborele cu
cele mai multe vrfuri dintre arborii familiei
curente.
Rezulta deci, ca la ecare pas k > 0, vom avea
un arbore cu k + 1 vrfuri, ceilalt i n k 1
avnd cte un singur vrf. Notam T
s
= (V
s
, E
s
)
arborele curent. Consideram vectorii [1..n] cu
componente din V si [1..n] cu componente
reale, cu urmatoarea semnicat ie:
(S)
j V V
s
,
_
j

= c([j]j) = minc(ij) [ i V
s
, ij E.
T
s
v
u
w
x
alfa(u)
alfa(w)
alfa(v)
beta(v)
beta(w)
beta(u)
beta(x)=+infinit
Descrierea algoritmului:
168
1. V
s
: s; (s V , oarecare )
E
s
;
for v V \ s do [v] := s; [v] := c(sv);
// daca ij / E atunci c(ij) =).
2. while V
s
,= V do
determina j

V \ V
s
a..
[j

] = min[j] [ j V V
s
;
V
s
V
s
j

;
E
s
:= E
s
[j

]j

;
for j V V
s
do
if [j] > c[j

j] then
[j] c[j

j];
[j] : j

Se observa ca (S) este satisfacuta de init ializarile


pasului 1, iar n pasul 2, se respecta, pe de o
parte, strategia generala de alegere a muchiei
de cost minim cu exact o extremitate n V
s
(alegerea lui j

) si pe de alta parte se ment ine


valabilitatea condit iei (S) pentru iterat ia urmatoare
(testul asupra valorii curente a lui [j]).
169
Complexitatea algoritmului este O(n1)+O(n
2) +. . . +O(1) = O(n
2
) data de operat iile din
pasul 2 necesare determinarii minimului si ac-
tualizarii tabloului . Se poate introduce testul
de conexiune a grafului, dupa determinarea lui
[j

]. Algoritmul este recomandatn cazul gra-


furilor cu multe muchii, m = O(n
2
).
Algoritmul lui Kruskal (1956)

In metoda generala prezentata, se va alege la


ecare pas drept arbore T
k
s
unul din cei doi ar-
bori cu proprietatea ca snt unit i printr-o
muchie de cost minim printre toate muchi-
ile cu extremitat ile pe arbori diferit i.
Aceasta alegere, complicata la prima vedere, se
realizeaza simplu prin sortarea muchiilor gra-
fului nedescrescator n raport cu costurile si
apoi prin examinarea n mod greedy a listei
obt inute.
Daca notam cu T = E(T
k
), atunci algoritmul
poate descris, astfel:
170
1. Sorteaza E = (e
1
, e
2
, . . . , e
m
) astfel nct:
c(e
1
) c(e
2
) . . . c(e
m
).
1.2 T ; i 1;
2. while i m do
if T e
i
)
G
nu are circuite then
T T e
i
;
i ++

Evident, pasul 1 necesita O(mlogn) operat ii.


Pentru realizarea ecienta a testului din pasul
2 va necesar sa reprezentam la ecare pas k
(din metoda generala ) V (T
k
1
), V (T
k
2
), . . . , V (T
k
n
)
si sa testam daca muchia e
i
curenta are ambele
extremitat i n aceeasi mut ime. Se vor folosi
pentru reprezentarea acestor mult imi, arbori
(care nu snt n general subarbori ai lui G).
Fiecare astfel de arbore va avea un vrf, numit
radacina, care va desemna mult imea de vrfuri
ale lui G pe care o memoreaza.
171
Vom folosi o funct ie find(v) care determina n
ce mult ime este vrful v, adicantoarce radacina
arborelui care memoreaza mult imea de vrfuri
la care apart ine v.
Pentru realizarea reuniunilor (disjuncte) de
mult imi de vrfuri care apar n transformarea
familiilor T
k
(din metoda generala) vom folosi
o procedura union(v, w) cu semnicat ia:
mult imile de vrfuri (diferite si disjuncte)
la care apart in v si w se reunesc n una
singura.
Cu aceste proceduri, pasul 2 al algoritmului se
scrie:
2. while i m do
e e
i
= vw;
if find(v) ,= find(w) then
union(v, w);
T T e
i

i ++

172
Complexitatea algoritmului va depinde de modul
de implementare a funct iei find si procedurii
union.
Solut ia I
a
. Consideram tabloul rad[1..n] cu
componente din V cu semnicat ia
rad[v] =radacina arborelui ce memoreaza
mult imea la care apart ine vrful v.
Adaugam pasului 1, init ializarea
1.3 for v V do rad[v] v;
care corespunde familiei T
0
. Funct ia find are
n acest caz complexitatea O(1) si este:
function find(v : V );
return rad[v]
173
Procedura union necesita O(n) operat ii:
procedure union(v, w : V );
variabila locala i : V ;
for i V do
if rad[i] = rad[v] then rad[i] := rad[w]
Pasul 2 al algoritmului necesita O(m) apeluri
ale funct iei find (exact m asa cum l-am descris,
sau O(m) daca se introduce si un test asupra
cardinalului mult imii T curente).

In secvent a acestor O(m) apeluri ale funct iei


find se vor intercala exact n 1 apeluri ale
procedurii union.
Rezulta ca n total pasul 2 necesita
O(m+(n 1)O(m)) = O(n
2
) operat ii.
Deci, complexitatea algoritmului este
O(max(mlogn, n
2
)).
Daca graful este plin, m = O(n
2
), se observa
ca acest algoritm este mai put in ecient dect
cel al lui Prim.
174
Solut ia a II
a
. Consideram pred[1..n] un tablou
ntreg cu interpretarea :

pred[v]= vrful dinaintea lui v de pe dru-


mul unic la v, de la radacina arborelui care
memoreaza mult imea la care apart ine v;
pred[v] = 0 v este radacina arborelui.
Adaugamn pasul 1, init ializarea
1.3 for v V do pred[v] 0;
Modicam si pasul 2 al algoritmului astfel:
2. while i m do
e e
i
= vw;
x : find(v); y find(w);
if x ,= y then union(x, y);
union(x, y);
T T e
i

i ++

175
Deci, procedura union va apelata numai pen-
tru argumente reprezentnd radacini de arbori
diferit i:
procedure union(v, w : V );
pred[v] w
Evident, complexitatea procedurii union este
O(1). Funct ia, find esten acest caz mai com-
plicata:
function find(v : V );
variabila locala i : V ;
i v;
while pred[i] > 0 do i pred[i];
return i
Complexitatea lui find(v) este O(h(v)) unde
h(v) este lungimea drumului (din arbore) de la
vrful v la radacina arborelui care-l cont ine pe
v.
176
Daca graful G este K
1,n1
desenat mai jos, si
lista ordonata a muchiilor E = 12, 13, . . . , 1n,
atunci execut ia algoritmului provoaca urmatorul
sir de apeluri ale procedurii union(U) si funct iei
find(F):
F(1), F(2), U(1, 2), F(1), F(3), U(2, 3), . . . , F(1), F(n),
U(n 1, n).
1 2 3 n
F(1) F(n) U(n-1,n)
n
1
3 1 2 3 n
2 1 2 3 n
1 2 3 n
F(1) F(2) U(1,2)
F(1) F(4) U(3,4)
4
4
4 n-1
F(1) F(3) U(2,3)
Apelurile F(i)(i > 1) si U(i, i + 1) i 1 nece-
sita n total O(n) operat ii. Sirul de F(1) nece-
sita nsa O(1) +O(2) + +O(n1) = O(n
2
)
operat ii.
Este deci posibil ca pasul 2 al algoritmului n
aceasta implementare sa e de complexitate
(n
2
) chiar daca graful este rar.
177
Decient a acestei implementari este datorata
posibilitat ii ca n procedura union sa declaram
radacina noua pentru cei doi arbori pe cea a
celui cu mai put ine vrfuri, ceea ce are ca efect
posibilitatea ca h(v) sa devina mare (O(n)) pe
parcursul algoritmului.
Acest defect poate evitat daca, la execut ia
lui union t inem seama de cardinalul celor doua
mult imi.
Se poate memora cardinalul unei mult imi n
componenta tabloului pred corespunzatoare rada
cinii arborelui care memoreaza acea mult ime.
Mai precis, consideram init ializarea
1.3 for v V do predd[v] 1;
si modicam procedura union astfel nct sa
asiguramndeplinirea condit iei
pred[v] < 0 v este radacina a unui arbore
si pred[v] este cardinalul mult imii memo-
rate n el.
178
Procedura union are, n acest caz, tot com-
plexitatea O(1), dar selecteaza drept noua radacina
pe cea care corespunde arborelui cu mai multe
vrfuri:
procedure union(v, w : V );
//v si w sunt radacini
variabila locala ntreaga t
t pred[v] +pred[w];
if pred[v] > pred[w] then
pred[v] w; pred[w] t
else pred[w] v; pred[v] t
Cu aceasta implementare a funct iei find si pro-
cedurii union, pe tot parcursul algoritmului are
loc:
() v V pred[find(v)] 2
h(v)
(reamintim ca h(v) noteaza lungimea drumu-
lui de la v la radacina find(v) a arborelui ce
memoreaza v ).
179
Dupa init ializarea 1.3, v V h(v) = 0 si
find(v) = v iar pred[v] = 1, deci (*) are loc
cu egalitate.
Daca, naintea unei iterat ii din pasul 2, (*) are
loc, atunci, daca n acea iterat ie nu se executa
union, nu se modica tabloul pred si deci (*)
ramne valabila si dupa execut ie.
Presupunem prin urmare ca se apeleaza
union(x, y) si ca se executa pred[y] := x.
Aceasta nseamna ca naintea acestei iterat ii
avem pred[x] pred[y]. Sa observam ca
singurele vrfuri v carora li se modica h(v)
dupa execut ia iterat iei curente snt cele care
naintea iterat iei satisfaceau find(v) = y, pen-
tru care aveam pred[y] 2
h(v)
.
Dupa execut ia iterat iei avem h

(v) = h(v) +
1 iar find

(v) = x, si deci trebuie sa veri-


cam ca pred

[x] 2
h

(v)
. Avem pred

[x] =
pred[x] pred[y] 2 (pred[y]) 2 2
h(v)
=
2
h(v)+1
= 2
h

(v)
.
180
Rezulta ca (*) are loc pe tot parcursul algorit-
mului, deci, prin logaritmare obt inem
v V h(v) log(pred[find[v]]) logn.
Complexitatea pasului 2 va deci O(n 1 +
2mlogn) = O(mlogn) si deci tot algoritmul
are complexitatea O(mlogn) ceea ce-l face su-
perior algoritmului lui Prim pentru grafuri rare.
Solut ia a III
a
. Complexitatea pasului 2, cu
implementarea precedenta, este datorata apeluri
lor succesive ale lui find.
Tarjan (1976) a propus ca ecare apel al lui
find care necesita parcurgerea unui drum de
lungime mai mare dect 1, sa distruga acest
drum, aducndu-i vrfurile drept descendent i imedi
at i ai radacinii, cu scopul ca apelurile viitoare
ale lui find pentru aceste varfuri sa nu mai
consume timp. Mai precis, avem
181
function find(v : V );
variabile ntregi locale i, j, k;
i v;
while pred[i] > 0 do i pred[i];
j v;
while pred[j] > 0 do
k pred[j]; pred[j] i; j k;
return i
Daca A : NxN N este funct ia lui Ackermann data
de:
A(i, o) = 0 i 0;
A(i, 1) = 2 i 1;
A(0, x) = 2x x 0;
A(i +1, x +1) = A(i, A(i +1, x)) i 0 x 1,
atunci, considernd m n > 0
(m, n) = minz [ A
_
z, 4m/n
_
logn, z 1
avem:
Complexitatea pasului 2, utiliznd union din solut ia
a II-a si find descris mai sus, este O(m (m, n)).
Notam ca (m, n) creste extrem dencet (pentru valorile
practice ale lui n, (m, n) 3) si deci se poate presupune
ca aceasta ultima implementare este practic liniara (n
raport cu m).
182
IV. Cuplaje (de cardinal maxim).
Fie G = (V, E) un (multi)graf. Daca A E si
v V , vom nota cu
d
A
(v) = [e [ e A, e incidenta cu v[,
adica gradul vrfului v n graful part ial < A >
G
.
Denit ie. Se numeste cuplaj (sau mult ime
independenta de muchii) al grafului G, orice
mult ime M de muchii cu proprietatea ca
d
M
(v) 1, v V .
Vom nota cu /
G
familia cuplajelor grafului G:
/
G
= M [ M E, M cuplaj n G.
Se observa ca /
G
satisface proprietat ile:
i) /
G
.
ii) M /
G
, M

M M

/
G
.
Daca M /
G
atunci un vrf v V cu d
M
(v) =
1 se numeste saturat de cuplajul M. Mult imea
S(M) a vrfurilor saturate de cuplajul M n
graful G, satisface [S(M)[ = 2[M[.
183
Daca d
M
(v) = 0, atunci v se numeste ex-
pus fat a de cuplajul M . Mult imea E(M) a
vrfurilor expuse fat a de cuplajul M satisface
E(M) = V S(M) si [E(M)[ = [V [ 2[M[.
Problema cuplajului maxim :
P1 Dat G = (V, E) un graf, sa se determine
M

/
G
astfel nct
[M

[ = max[M[ [ M /
G
.
(Vom nota cu (G) = max[M[ [ M /
G
).
Problema cuplajului maxim este strns legata
de problema acoperirii minime.
Denit ie. Se numeste acoperire (a vrfurilor
cu muchii) n graful G orice mult ime F E de
muchii cu proprietatea ca d
F
(v) 1 v V .
T
G
= F [ F E, F acoperire n G noteaza
familia acoperirilor grafului G.
T
G
,= G nu are vrfuri izolate (atunci,
macar E este o acoperire).
184
Problema acoperirii minime este:
P2 Dat G = (V, E) un graf, sa se determine
F

T
G
astfel nct
[F

[ = min[F[ [ F T
G
.
Teorema. 1. (Norman-Rabin 1959) Fie
G = (V, E) un graf fara vrfuri izolate, de ordin
n. Daca M

este un cuplaj de cardinal maxim


n G, iar F

o acoperire de cardinal minim n


G, atunci
[M

[ +[F

[ = n.
Demonstrat ie: a) Fie M

un cuplaj de cardinal
maxim. Consideram urmatorul algoritm:
F M

;
for v E(M) do
determina v

S(M

) astfel nct vv

E;
F F vv

185
Sa observam ca pentru v E(M

), cum G nu
are vrfuri izolate, exista o muchie incidenta cu
v, si cum M

este maximal n raport cu in-


cluziunea, aceasta muchie are cealalta extrem-
itate din S(M

). Mult imea de muchii F ast-


fel construita este o acoperire si n plus [F[ =
[M

[ +[E(M

)[ = [M

[ +n 2[M

[ = n [M

[.
Rezulta ca [F

[ [F[ = n [M

[.
b) Fie F

o acoperire de cardinal minim. Con-


sideram urmatorul algoritm:
M F

while v V : d
M
(v) > 1 do
determina e M incidenta cu v;
M M e

Algoritmul construieste un cuplaj M n G.


Daca muchia e incidenta cu v, care se nlatura
din M ntr-o iterat ie while, este e = vv

,
186
atunci d
M
(v

) = 1 si deci n pasul urmator


d
M
(v

) va zero, adica la orice ndepartare a


unei muchii din mult imea M curenta de muchii
se obt ine un vrf expus fat a de cuplajul nal M
(daca vrful v

ar incident cu nca o muchie,


atunci din acoperirea init iala F

se poatenlatura
muchia e si sa obt inem tot o acoperire, con-
trazicnd alegerea lui F

).
Deci daca M este cuplajul construit de algoritm
avem: [F

[ [M[ = [E(M)[ = n 2[M[, adica


[F

[ = n [M[ n [M

[.
Din (a) si (b) rezulta concluzia teoremei.
Demonstrat ia facuta arata, chiar mai mult, ca
problemele (P1) si (P2) snt polinomial echiva-
lente, cuplajul M si acoperirea F construite -
ind si ele solut ii optime respectiv pentru cele
doua probleme.
187
Daca vom considera matricea de incident a
(vrf - muchie) a grafului G cu n vrfuri si m
muchii B = (b
ij
)
nm
cu b
ij
= 1 daca vrful i
si muchia j snt incidente si b
ij
= 0 altminteri
(ntr-o ordonare xata a vrfurilor si muchiilor),
si daca notam cu e
p
vectorul p-dimensional cu
toate componentele 1, atunci cele doua prob-
leme se scriu analitic astfel
P1 maxe
T
m
x[Bx e
n
, x 0, x
i
0, 1 i = 1, m
P2 mine
T
m
x[Bx e
n
, x 0, x
i
0, 1 i = 1, m
si teorema 1 ofera o egalitate min-max intere-
santa.

In cele ce urmeaza ne vom ocupa numai de


problema (P1); n plus vom presupune ca G
nu are vrfuri izolate.
188
Daca s-ar ncerca rezolvarea problemei (P1)
apelnd la problema de programare liniara aso-
ciata
(LP1

) maxe

m
x [ Bx e
n
, x 0
se constata ca solut iile optime pot sa nu e
cu componente ntregi si, chiar mai mult, val-
oarea maxima determinata de (LP1) sa e su-
perioara lui (G).
Cel mai simplu exemplun acest sens este G =
C
2n+1
. Evident, (C
2n+1
) = n si totusi x
i
=
1
2
i = 1, 2n + 1 este o solut ie optima a lui
(LP1) corespunzatoare, cu valoarea optima
n +
1
2
> n.
1 / 2
1 / 2
1 / 2
1 / 2
1 / 2
189
Rezulta ca existent a circuitelor imparen graful
G poate provoca dicultat i n rezolvarea prob-
lemei (P1). Mai precis, avem urmatoarea teo-
rema:
Teorema. 2. (Balinski 1971) Vrfurile poli-
topului Bx e
n
, x 0, x R
m
, au coordo-
natele 0, 1 si
1
2
. Coordonatele
1
2
apar daca si
numai daca G are circuite impare.
Rezulta de aici ca, n cazul grafurilor bipartite, problema
(P1) este usor de rezolvat: se apeleaza la problema de
programare (LP1) si solut ia gasita este solut ie optima
pentru problema P1 (reprezentnd vectorul caracteristic
al unui cuplaj). Adaptarea combinatorie a algoritmu-
lui simplex din programarea liniara, direct pe graful bi-
partit considerat (n scopul unei economii de memorie,
tablourile simplex snt reprezentate implicit) a condus la
asa numita metoda ungara de rezolvare a problemei
(P1) pentru grafurile bipartite. Nu vom prezenta acest
algoritm, prefernd descrierea unuia mai performant da-
torat lui Hocroft si Karp (1973).
190
Totusi teorema de dualitate din programarea
liniara, precum si integritatea solut iilor optime,
pot oferi demonstrat ii instantanee pentru teo-
reme de caracterizare a solut iilor optime ale
problemei (P1) n cazul grafurilor bipartite:
Teorema. 3. (Hall, 1935) Fie G = (R, S; E)
un graf bipartit. Exista un cuplaj care sat-
ureaza vrfurile lui R daca si numai daca
[N
G
(A)[ [A[ A R.
Teorema. 4. (Konig,1930) Fie G = (R, S; E)
un graf bipartit. Cardinalul maxim al unui cu-
plaj este egal cu numarul minim de vrfuri prin
ndepartarea carora se obt ine graful nul:
(G) = n (G)
191
Revenind la problema (P1) cu G un graf oare-
care si observnd ca (G)
1
2
[V (G)[, rezulta
ca este interesant de caracterizat grafurile cu
proprietatea ca admit un cuplaj M astfel nct
S(M) = V (G). Un astfel de cuplaj se numeste
cuplaj perfect sau 1-factor.
Este evident ca un graf care are un cuplaj perfect are n
orice componenta conexa un numar par de vrfuri. Mai
mult, daca S V (G) atunci, n ipoteza ca G are un
cuplaj perfect, va trebui ca pentru ecare componenta
conexa cu un numar impar de vrfuri a grafului GS sa
existe o muchie n cuplajul perfect cu o extremitate n
S si cealalta n componenta conexa impara. Rezulta ca
numarul componentelor conexe impare ale grafului GS
nu poate depasi [S[.
192
Daca pentru un graf oarecare H notam cu
q(H) numarul componentelor conexe impare
ale lui H, atunci observat ia anterioara arata
ca o condit ie necesara pentru ca G sa aiba un
cuplaj perfect este ca q(GS) [S[ S V (G).
Sa observam ca atunci cnd S = condit ia
anterioara cere ca orice componenta conexa a
lui G sa aiba un numar par de vrfuri. Condit ia
este si sucienta, asa cum rezulta din urmatoarea
teorema.
Teorema. 5. (Tutte, 1947) Un graf G =
(V, E) are un cuplaj perfect daca si numai daca
(T) q(GS) [S[ S V.
Demonstrat ie. Aratam, prin induct ie dupa n =
[V [, ca, daca G = (V, E) satisface (T), atunci
G are un cuplaj perfect.
193
Cum teorema se verica imediat pentru n =
1, 2, vom presupune n pasul inductiv ca orice
graf G

cu [G

[ < n si care satisface (T) are un


cuplaj perfect.
Fie G = (V, E) cu [V [ = n si care satisface (T).
Alegem S
0
V (G) astfel nct n (T) avem
egalitate: q(G S
0
) = [S
0
[ si oricare ar S
astfel nct S
0
S, S
0
,= S avem q(GS) < [S[.
Cum G satisface T, rezulta ca G are numai
componente conexe de cardinal par.

Intr-o ast-
fel de componenta conexa, exista ntotdeauna
un vrf v
0
care nu este vrf de articulat ie (orice
vrf pendant al unui arbore part ial ) si se verica
imediat ca q(Gv
0
) = 1 = [v
0
[ .
Prin urmare familia S [ S V, q(GS) = [S[
este nevida si orice element maximal al ei poate
considerat S
0
.
194
Fie m = [S
0
[ > 0 si C
1
, . . . , C
m
componen-
tele conexe de cardinal impar ale lui G S
0
,
iar D
1
, . . . , D
k
componentele conexe de cardi-
nal par (k 0) ale lui GS
0
.
C1
C2
C3
sm
s3
Cm
s2
D1
D2
s1
Dk
Vom construi un cuplaj perfect al grafului G
compus din : a) - cte un cuplaj perfect n
ecare componenta conexa para D
i
;
b) - un cuplaj format din m muchii, muchia
e
i
(i = 1, m) avnd o extremitate s
i
S
0
si
cealalta v
i
C
i
;
c) - cte un cuplaj perfect n ecare subgraf
[C
i
v
i
]
G
.
195
a) Pentru orice i = 1, k graful [D
i
]
G
are un cu-
plaj perfect.

In adevar, cum m > 0, rezulta ca [D


i
[ < n si
deci pentru a dovedi existent a cuplajului per-
fect n [D
i
]
G
este sucient sa dovedim ( din
ipoteza inductiva) ca G

= [D
i
]
G
satisface (T).
Fie S D
i
. Daca q(G

S) > [S[ atunci q(G


S
0
S) = q(GS
0
) +q(G

S) = [S
0
[ +q(G

S) > [S
0
[ +[S[ = [S
0
S[, contrazicnd faptul
ca G satisface (T).
Avem q(G

S) [S[ si deci G

satisface T.
b) Fie H = (S
0
, C
1
, . . . , C
m
; E

) graful bipartit
avnd o clasa a bipartit iei S
0
, cealalta clasa,
mult imea componentelor conexe impare ale lui
G S
0
, iar mult imea muchiilor E

formata din
perechile sC
i
(s S; i = 1, m) cu proprietatea
ca exista v C
i
cu sv E(G).
196
C1
C2
C3
sm
s3
Cm
s2
s1
Acest graf are un cuplaj perfect.

In adevar,
este sucient sa aratam ca H satisface condit ia
lui Hall de existant a a unui cuplaj M
0
ce sat-
ureaza vrfurile lui C
1
, . . . , C
m
:
A C
1
, . . . , C
m
, [N
H
(A)[ [A[
si cum [S
0
[ = m va rezulta ca M
0
este cuplaj
perfect n H.
Fie A C
1
, . . . , C
m
.
Observam ca B = N
H
(A) S
0
si din denit ia
lui H, n graful G nu avem muchii de la un
vrf v S
0
B la un vrf v C
i
cu C
i
A.
Deci componentele conexe impare C
i
din A ale
grafului GS
0
vor ramne componente conexe
impare si n GB.
197
Rezulta ca q(G B) [A[. Pe de alta parte
G satisface condit ia lui Tutte (T) deci [B[
q(G B). Am obt inut deci [B[ [A[ adica
[N
H
(A)[ [A[.
Cum A a fost aleasa arbitrar, rezulta ca H are
un cuplaj perfect M
0
= s
1
v
1
, s
2
v
2
, . . . , s
m
v
m

cu S
0
= s
1
, . . . , s
m
si v
i
C
i
i = 1, m.
c) Pentru orice i 1, . . . , m graful G

= [C
i

v
i
]
G
are un cuplaj perfect.
Folosind ipoteza inductiva, armat ia va rezulta
daca dovedim ca G

satisface (T).
Fie S C
i
v
i
. Daca q(G

S) > [S[ atunci


cum q(G

S) + [S[ 0 (mod 2), rezulta ca


q(G

S) [S[ + 2 si atunci considernd S

=
S
0
v
i
S, avem [S

[ q(G S

) = q(G
S
0
) 1 + q(G

S) = [S
0
[ 1 + q(G

S)
[S
0
[ 1 +[S[ + 2 = [S

[, adica q(G S

) = [S

[
ceea ce contrazice alegerea lui S
0
caci S
0
S

.
Rezulta ca S

C
i
v
i
q(G

S) [S[ deci G

are un cuplaj perfect.


198
Evident, cuplajul lui G obt inut prin reuniunea
cuplajelor puse n evident a n a), b), si c) de
mai sus este un cuplaj perfect si cu aceasta
teorema este demonstrata.
Notam ca Berge (1958) a generalizat aceasta
teorema stabilind ca
(G) =
1
2
([V (G)[ max
SV (G)
[q(GS)[S[] ).
Totusi, algoritmii care rezolva problema (P1)
se bazeaza pe o caracterizare mai simpla a cu-
plajelor de cardinal maxim.
Fie G = (V, E) un graf si M /
G
un cuplaj al
sau.
Denit ie: Se numeste drum alternat al lui G
relativ la cuplajul M orice drum
P : v
0
, v
0
v
1
, v
1
, . . . , v
k1
, v
k1
v
k
, v
k
a. . i = 1, k 1 v
i1
v
i
, v
i
v
i+1
M ,= .
199
Sa observam ca, ntruct M este cuplaj, din
denit ia data rezulta ca dintre orice doua
muchii consecutive ale drumului P exact
una apart ine cuplajului
(muchiile lui P apart in alternativ la M si
E M).
Vom desemna, n cele ce urmeaza, prin P
mult imea muchiilor drumului P (pentru simpli-
carea notat iilor).
Denit ie: Se numeste drum de crestere al lui
G relativ la cuplajul M un drum alternat cu
extremitat ile vrfuri distincte, expuse relativ la
cuplajul M.
a
b
c
d
e
f
g
h
i
j
a, b, c, d - drum alternat par
f - drum alternat impar
j - drum de crestere
g, f, d - drum alternat impar
a, b, c, d, e - drum alternat inchis
a, b, c, d, f, g, h - drum de crestere
200
Observat ie: Din denit ie, rezulta ca daca P
este un drum de crestere relativ la cuplajul M
atunci [P M[ = [P M[ +1.
Teorema. 6. (Berge 1959) Un cuplaj M
este de cardinal maximn graful G daca si nu-
mai daca nu exista n G drumuri de crestere
relativ la M.
Demonstrat ie: Daca M este un cuplaj de car-
dinal maxim si P ar un drum de crestere
n G relativ la M atunci M

= PM = (P
M)(MP) este un cuplaj n G. (Construct ia
lui PM revine la interschimbarea muchiilor
lui M P si P M pe drumul P).

In plus,
[M

[ = [P M[ + 1 +[M P[ = [M[ + 1, con-


trazicnd alegerea lui M.
a
b
c
d
e
f
g
h
i
j
P= a, b, c, d, f, g, h - drum de crestere (M-P) u (P-M)
201
Reciproc, daca M este cuplaj n G si M nu
admite drumuri de crestere, consideram M

un
cuplaj de cardinal maxim. Vom arata ca [M

[ =
[M[, ceea ce demonstreaza teorema.
Fie G

graful part ial al lui G, G

= (V, MM

).
Evident, d
G
(v) 2 v V si deci componen-
tele conexe ale lui G

snt drumuri (eventual de


lungime 0), sau circuite si avem urmatoarele
posibilitat i (muchiile ngrosate snt din M

si
cele subt iri, din M):
a
b
c
d
e
Situat ia b) nu poate avea loc, pentru ca reprezinta un
drum de crestere relativ la M

care-i cuplaj de cardinal


maxim. Situat ia c) nu are loc, ntruct M nu admite
drumuri de crestere.
202
Deci, daca notam cu m
M
(C) numarul muchi-
ilor din M ale componentei conexe C a lui G

si
cu m
M
(C) numarul corespunzator, de muchii
din M

avem m
M
(C) = m
M
(C). Rezulta ca
[MM

[ =

C
m
C
(M) =

C
m
C
(M

) = [M

M[
(suma se face dupa toate componentele conexe
C ale grafului G

) si deci, [M[ = [M

[.
Aceasta teorema justica urm

toarea strategie
de construire a unui cuplaj de cardinal maxim:
a) e M un cuplaj oarecare a lui G (eventual M = );
b) while P drum de crestere relativ la M do
M MP
La ecare iterat ie a ciclului while, cuplajul curent creste
(cardinalul sau se mareste cu o unitate) si deci n cel
mult
n
2
iterat ii se obt ine un cuplaj de cardinal maxim,
care nu va admite drumuri de crestere.
203
Neajunsul acestui algoritm este acela ca tes-
tul de oprire a ciclului - inexistent a drumu-
lui de crestere - poate conduce la un numar
exponent ial de operat ii.
Primul care a demonstrat posibilitatea imple-
mentarii acestui algoritm astfel nct numarul
total de operat ii sa e polinomial n raport cu
numarul de vrfuri ale grafului G, a fost Ed-
monds (1965), obt innd astfel unul din primele
rezultate ale teoriei complexitat ii (cantitative)
a algoritmilor.

In 1973 Hopcroft si Karp, fac o analiza mai


detaliata a procesului succesiv de cresteri ale
cuplajului curent, cu ipoteza suplimentara ca
se alege de ecare data un drum de crestere
cu numar minim de muchii (printre toate
drumurile de crestere posibile). Aceasta idee
sta la baza celui mai ecient algoritm, cunos-
cut, pentru rezolvarea problemei.
204
Lema. 1. Fie M, N /
G
, [M[ = r, [N[ = s
si s > r. Atunci n MN exista cel put in s r
drumuri de crestere ale cuplajului M, disjuncte
ca vrfuri.
Demonstrat ie: Fie G

= (V, MN) graful part ial


sect ionat n G de MN.
Fie C
i
i = 1, p componentele conexe ale lui G

.
Denim pentru ecare i 1, . . . , p
(C
i
) = [E(C
i
) N[ [E(C
i
) M[.
Observam ca:
(C
i
) 1, 0, 1 (M, N cuplaje, C
i
snt dru-
muri sau circuite);
(C
i
) = 1 daca si numai daca C
i
este un drum
de crestere relativ la M.

In plus,

i=1,p
(C
i
) = [N M[ [M N[ = s r.
Rezulta ca exista macar s r C
i
cu (C
i
) = 1,
adica exista macar sr drumuri de crestere dis-
juncte ca vrfuri (deci si ca muchii) cont inute
n MN.
205
Lema. 2. Daca (G) = s si M /
G
[M[ =
r < s, atunci exista n G un drum de crestere
relativ la M de lungime 2r/(s r) +1.
Demonstrat ie. Fie N /
G
cu [N[ = s =
(G). Conform lemei precedente, vor exista
s r drumuri de crestere disjuncte pe muchii,
cont inute n MN. Acestea au mpreuna cel
mult r muchii din M. Rezulta ca exista unul
care cont ine cel mult r/(s r) muchii din M,
a carui lungime este deci 2r/(s r) +1.
Denit ie Daca M /
G
, se numeste drum
minim de crestere al lui M n G , un drum
de crestere cu numar minim de muchii printre
toate drumurile de crestere ale lui M n G.
Lema. 3. Fie M /
G
, P drum minim de
crestere relativ la M, si P

drum de crestere al
lui MP. Atunci, [P

[ [P[ +2[P P

[.
206
Demonstrat ie: Fie N = (MP)P

.
Avem MN = PP

si [N[ = [M[ +2.


Folosind lema 1 obt inem ca exista P
1
, P
2
dru-
muri de crestere disjuncte ca muchii relativ
la M cont inute n MN. Cum P este drum
minim de crestere avem: [PP

[ [P
1
[+[P
2
[
2[P[ deci [P[ +[P

[ 2[P P

[ 2[P[.
Consideram urmatorul algoritm ():
M
0
;
M
i+1
M
i
P
i
( P
i
dr. minim de crest. rel. la M
i
; i 0.)
Se obt ine sirul de drumuri minime de crestere
P
0
, P
1
, . . . , P
(G)1
.
Lema. 4.
a) i = 1, (G) 2 [P
i
[ [P
i+1
[;
[P
i
[ = [P
i+1
[ P
i
si P
i+1
snt disjuncte ca
vrfuri.
b) i < j < (G) 1 [P
i
[ = [P
j
[, implica P
i
si
P
j
snt disjuncte ca vrfuri.
207
Demonstrt ie: a) Considernd P = P
i
si P

=
P
i+1
n lema 3 se obt ine [P
i+1
[ [P
i
[ + 2[P
i

P
i+1
[ [P
i
[. Egalitatea are loc daca si nu-
mai daca P
i
si P
i+1
snt disjuncte ca muchii,
condit ie care, avnd n vedere alternant a dru-
murilor, implica faptul ca nu au vrfuri comune.
b) rezulta aplicnd succesiv a).
Teorema. 7. (Hopcroft, Karp 1973) Fie
G un graf si (G) = s. Numarul ntregilor
distinct i din sirul [P
0
[, [P
1
[, . . . , [P
s1
[, construit
n algoritmul de mai sus este cel mult 2

s +
2.
Demonstr atie: Fie r = s

s. Atunci [M
r
[ =
r si [P
r
[ 2r/(s r) + 1 = 2s

s/(s
s

s) +1 < 2

s +1.
Rezulta ca oricare ar i < r, [P
i
[ este unul din
cei

s + 1 ntregi impari 2

s + 1.

In
subsirul [P
r
[, . . . , [P
s1
[ mai snt cel mult sr

s + 1 ntregi distinct i, deci n total avem


cel mult 2

s +2 ntregi distinct i.
208
Daca algoritmul () se descompune n etape,
astfel nct la ecare etapa se determina o
mult ime maximala de drumuri minime de crestere
disjuncte ca vrfuri, din lema 4, rezulta ca, n
etapa urmatoare, lungimea drumurilor minime
de crestere utilizate va creste strict (altfel s-
ar contrzice maximalitatea mult imii de drumuri
alese).
Utiliznd teorema 7, rezulta ca numarul fazelor
nu va depasi 2
_
(G) +2.
Rezulta ca urmatorul algoritm pentru aarea
unui cuplaj maxim, ntr-un graf cu macar o
muchie:
0. M ;
1. repeat
Determina 1 o familie maximala ()
de drumuri minime de crestere;
for P 1 do M MP
until 1 = .
209
are complexitatea O(

nA) unde A este com-


plexitatea determinarii familiei 1.
Hopcroft si Karp au aratat cum se poate im-
plementa pasul 1 pentru un graf bipartit, astfel
nct A = O(m + n), deci s-a obt inut un algo-
ritm de complexitate O(mn
1/2
) pentru aarea
unui cuplaj de cardinal maxim ntr-un graf bi-
partit.
Pentru un graf oarecare, structurile de date
necesare obt inerii aceleeasi complexitat i snt
mult mai elaborate si au fost descrise de Micali
si Vazirani 1980. Consideram, n continuare,
numai cazul grafurilor bipartite.
Fie G = (R, S; E) un graf bipartit si M /
G
.
Pornind din una din clase, R de exemplu, se
considera mult imea extremitat ilor drumurilor
de crestere posibile, R E(M), si din ecare
astfel de vrf, se incepe construct ia n paralel,
de drumuri alternate.
210
Prima depistare a unui drum de crestere (sau, concluzia
de inexistent a) opreste construct ia, oferind lungimea
minima a unui drum de crestere, si un sistem evident
de etichetare va permite depistarea familiei 1. Com-
plexitatea O(m + n) rezulta prin utilizarea listelor de
adiacent a. Exemplu:
familie maximala de
1- drumuri de crestere
familie maximala de
3- drumuri de crestere
Cuplaj maxim !
toate virfurile rosii
sunt saturate
211
V. FLUXURI

IN RET ELE
1. Problema uxului maxim.
R E T E A
V
V
Intrare
Iesire
Data Reteaua, care este v MAXIM ?
Numim ret ea (de transport) cu intrarea s si
iesirea t, 4-uplul R = (G, s, t, c) unde:
- G = (V, E) este un digraf,
- s, t V ; s ,= t; d
+
G
(s) > 0; d

G
(t) > 0,
- c : E R
+
; c(e) este capacitatea arcului e.
Vom presupune ca
V = 1, 2, . . . , n (n N

) si ca [E[ = m.
Extindem funct ia c la c : V V R
+
prin
c((i, j)) =
_
_
_
c(ij) daca ij E
0 daca ij / E
si vom nota c((i, j)) = c
ij
.
212
Denit ie: Numim uxn ret eaua R = (G, s, t, c)
o funct ie x : V V R, care satisface
(i) 0 x
ij
c
ij
ij V V
(ii)

jV
x
ji

jV
x
ij
= 0 i V s, t.
Observat ii
1
0
Daca ij E atunci x
ij
se numeste uxul
(transportat)pe arcul ij.
Evident, condit ia (i) cere ca uxul pe orice
arc sa e nenegativ si subcapacitar, iar condit ia
(ii) (legea de conservare a uxului) cere ca
suma uxurilor pe arcele care intran vrful
i sa e egala cu suma uxurilor pe arcele
care ies din vrful i.
Se putea cere ca uxul sa e denit numai pe arcele
ret elei, dar cu convent ia facuta la extensia funct iei de
capacitate, se observa ca pentru perechile (i, j) care nu
snt arce n ret ea condit ia (i) impune ca uxul sa e 0,
si evident cele doua denit ii snt echivalente.
O preferam pe cea data, pentru simplitatea notat iilor,
desi n implementari, structurile de date folosite vor ig-
nora perechile (i, j) care nu snt arce n ret ea.
213
2
0
Daca se sumeaza relat iile (ii) (pentru i
V s, t) se obt ine:
0 =

i, =s,t
_

jV
x
ji

jV
x
ij
_
=

i, =s,t

j,=s,t
x
ji

i, =s,t

j,=s,t
x
ij
+

i, =s,t
x
si
+

i, =s,t
x
ti

i, =s,t
x
is

i, =s,t
x
it
=

i
x
is

i
x
si
_

i
x
it

i
x
ti
_
, adica

jV
x
jt

jV
x
tj
=
_

jV
x
js

jV
x
sj
_
.
Denit ie: Daca x este un ux n ret eaua R =
(G, s, t, c) se numeste valoarea uxului x numarul
v(x) =

jV
x
jt

jV
x
tj
.
v(x) se poate interpreta ca ind uxul net care
ajunge n iesirea ret elei sau (conform egalitat ii
obt inute mai sus) uxul net care iese din in-
trarea ret elei.
214

In orice ret ea R = (G, s, t, c) exista un ux,


uxul nul x
ij
= 0 ij, de valoare 0.
Problema uxului maxim:
Data R = (G, s, t, c) o ret ea, sa se determine
un ux de valoare maxima.
Observat ii: 1
0
. Problema se poate formula,
evident, ca o problema de programare liniara:
max v

j
x
ji

j
x
ij
= 0, i ,= s, t

j
x
js

j
x
sj
= v

j
x
jt

j
x
tj
= v
0 x
ij
c
ij
ij
Particularitat ile combinatorii ale problemei, numarul mare
de restrict ii si mai ales dicultat ile legate de restrict iile
de integritate ce s-ar putea impune variabilelor, care un-
eori n practica snt esent iale, au condus la dezvoltarea
de metode specice de rezolvare.
215
Denit ie. Daca P este un drum n G, multi-
graful suport al digrafului G, si e = v
i
v
j
este o
muchie a lui P atunci:
daca e corespunde arcului v
i
v
j
al lui G, e se
numeste arc direct al drumului P;
daca e corespunde arcului v
j
v
i
al lui G, atunci
e se numeste arc invers.
P
G
G
--
arc direct
arc invers
Denit ie. Fie R = (G, s, t, c) si x ux n R.
Se numeste C-drum (n R relativ la uxul x)
un drum Dn G cu proprietatea ca ij E(D) :
x
ij
< c
ij
daca ij este arc direct,
x
ji
> 0 daca ij este arc invers.
216
Daca D este un C-drumsi ij E(D), se numeste
capacitatea reziduala a lui ij (relativ la C-
drumul D) numarul
r(ij) =
_
_
_
c
ij
x
ij
daca ij arc direct n D
x
ji
daca ij arc invers n D .
Capacitatea reziduala a drumului D este
r(D) = min
eE(D)
r(e).
Exemplu: Fie ret eaua de mai jos, n care pe arce este
precizata mai nti capacitatea si apoi uxul:
1
2
3
4
5
6
2,2
1,0
2,2
1,1
2,1
3,2
s
2,1
3,1
t 1,0
Atunci D : 1, 12, 2, 24, 4, 45, 5, 56, 6 este un C-drum de la
s la t cu arcele directe 12(x
12
= 1 < c
12
= 3); 24(x
24
=
1 < c
24
= 2); 56(x
56
= 1 < c
56
= 2) si arcul invers
45(x
54
= 1 > 0). Capacitatea reziduala a lui D este
r(D) = min(min(2, 1, 1), 1) = 1.
217
Denit ie. Se numeste drum de crestere a
uxului x, n ret eaua R = (G, s, t, c), un C-drum
de la s la t.
Lema. 1. Daca D este un drum de crestere
a uxului x n ret eaua R = (G, s, t, c), atunci
x
1
= x

r(D) denit prin


x
1
ij
=
_

_
x
ij
daca ij / E(D)
x
ij
+r(D) daca ij E(D), ij arc direct n D
x
ij
r(D) daca ji E(D), ji arc invers n D
este ux n R si v(x
1
) = v(x) +r(D).
Demonstrat ie. Denit ia lui r(D) implica
ndeplinirea de catre x
1
, a condit iilor (i).
Condit iile (ii) vericate de x, nu snt afectate
pentru niciun vrf i / V (D).
Daca i ,= s, t este un vrf al drumului D, i este
incident cu exact doua arce ale lui D,e ele li
si ik.
Avem urmatoarele cazuri posibile:
218
a) li si ik arce directe:

j
x
1
ji

j
x
1
ij
=

j,=l
x
ji

j,=k
x
ij
+x
1
li
x
1
ik
=

j,=l
x
ji

j,=k
x
ij
+x
li
+r(D) x
ik
r(D) =

j
x
ji

j
x
ij
= 0.
b) li direct ik invers:

j
x
1
ji

j
x
1
ij
=

j,=l,k
x
ji

j
x
ij
+x
1
li
+x
1
ki
=

j,=l,k
x
ji

j
x
ij
+ x
li
+ r(D) + x
ki
r(D) =

j
x
ji

j
x
ij
= 0.
c) li invers, ik direct: similar cu b).
d) li invers, ik invers: similar cu a).
Valoarea uxului x
1
se obt ine considernd lt
unicul arc al lui D incident cu t:
Daca lt direct atunci
v(x
1
) =

j
x
1
jt

j
x
1
tj
=

j,=l
x
jt

j
x
tj
+x
1
lt
=

j,=l
x
jt

j
x
tj
+x
lt
+r(D) = v(x) +r(D).
Daca lt invers atunci
v(x
1
) =

j
x
1
jt

j
x
1
tj
=

j
x
jt

j,=l
x
tj
x
1
tl
=

j
x
jt

j,=l
x
tj
(x
tl
r(D)) = v(x) +r(D).
Deci lema are loc.
219
Pentru exemplul anterior, uxul x
1
= x

r(D)
de valoare 4 este precizat pe arce:
1
2
3
4
5
6
2,2
1,0
2,2
1,0
2,2
3,2
s
2,2
3,2
t 1,0
Observat ii: 1
0
Aceasta lema justica denu-
mirea de drum de crestere, precum si cea de
capacitate reziduala.
2
0
Din denit ie, daca D este drum de crestere,
r(D) > 0 si deci avem v(x

r(D)) > v(x).


Rezulta ca
daca x admite un drum de crestere atunci
x nu este ux de valoare maxima.
220
Pentru a demonstra ca si reciproc este adevarat
avem nevoie de o noua not iune.
Denit ie. Fie R = (G, s, t, c). Se numeste
sect iune n ret eaua R, o partit ie (S, T) a lui
V cu s S si t T.
Capacitatea sect iunii (S, T) este
c(S, T) =

iS

jT
c
ij
(suma capacitat ilor arcelor de la S la T).
Lema. 2. Daca x este un uxn R = (G, s, t, c)
si (S, T) este o sect iune a ret elei, atunci
v(x) =

iS

jT
(x
ij
x
ji
).
(valoarea uxului este egala cu uxul net ce
trece prin orice sect iune.)
s
t
+
-
S
T
221
Demonstrat ie:
v(x) = (

j
x
jt

j
x
tj
) 0
= (

j
x
js

j
x
sj
)

iS,i,=s
(

j
x
ji

j
x
ij
)
=

iS
(

j
x
ij

j
x
ji
)
=

iS

jS
(x
ij
x
ji
)+

iS

jT
(x
ij
x
ji
)
=

iS

jT
(x
ij
x
ji
).
Lema. 3. Daca x este un uxn R = (G, s, t, c)
si (S, T) este o sect iune, atunci v(x) c(S, T).
Demonstrat ie:
v(x) =

iS

jT
(x
ij
x
ji
) (lema 2)


iS

jT
(c
ij
x
ji
) (x
ij
c
ij
)


iS

jT
c
ij
(x
ji
0).
222
Observat ii:
1) Daca x este un uxn R = (G, s, t, c) si (S, T)
o sect iune astfel nct v(x) = c(S, T), atunci x
ux n R v(x) c(S, T) = v(x), deci x este ux
de valoare maxima.
2)

In exemplul dat, x
1
este ux de valoare
maximantruct v(x
1
) = 4 = c(1, 2, 3, 4, 5, 6).
Teorema. 1. (Teorema drumului de crestere)
Un ux x este de valoare maxima ntr-o ret ea
R, daca si numai daca, nu exista drumuri de
crestere a uxului x n ret eaua R.
Demonstrat ie: O implicat ie este deja stabilita.
Reciproc, e x un ux n R care nu admite
drumuri de crestere. Consideram S = i [ i
V D C-drum n R de la s la i.
Evident s S (exista D de lungime 0) si t / S
(nu exista C-drumuri de la s la t). Fie T =
V S. Rezulta ca (S,T) este o sect iune.
223
Sa observam ca i S si j T avem:
daca ij E atunci x
ij
= c
ij
si
daca ji E atunci x
ji
= 0
(altminteri C-drumul de la s la i se poate ex-
tinde la un C-drum de la s la j).
Deci, conform lemei 2, v(x) =

iS

jT
(x
ij

x
ji
) =

iS

jT
(c
ij
0) = c(S, T) si prin ur-
mare x este ux de valoare maxima.
Teorema. 2. (Teorema uxului intreg)
Daca toate capacitat ile snt ntregi, atunci ex-
ista un ux de valoare maxima cu toate compo-
nentelentregi (uxntreg de valoare maxima).
Demonstrat ie: Fie algoritmul
1: x
0
0; i 0;
2: while (P
i
drum de crestere relativ la x
i
) do
x
i+1
x
i

r(P
i
);
i ++

224
Se observa ca x
i
are componente ntregi
este un invariant al algoritmului (din denit ia
lui r(P
i
), daca toate capacitat ile snt ntregi,
rezulta ca r(P
i
) este ntreg n ipoteza ca x
i
e
ntreg) si ca la ecare iterat ie a pasului 2 val-
oarea uxului curent creste cu macar o unitate,
deci pasul 2 se repeta de cel mult c(s, V
s) Z
+
ori. Fluxul nal obt inut este, con-
form teoremei 1, de valoare maxima.
Observat ie. Algoritmul, descris mai sus, este
nit si n cazul capacitat ilor rat ionale.
Teorema. 3. ( Ford-Fulkerson, 1956)
Valoarea maxima a unui ux n ret eaua R =
(G, s, t, c) este egala cu capacitatea minima a
unei sect iuni a ret elei.
Demonstrat ie: Daca dispunem de un algoritm
care, pornind de la un ux init ial x
0
(x
0
exista
ntotdeauna, de exemplu x
0
= 0), construieste
ntr-un numar nit de pasi un ux x, care nu
admite drumuri de crestere, atunci sect iunea
construitan demonstrat ia teoremei 1 satisface
mpreuna cu x enunt ul teoremei.
225
Pentru cazul capacitat ilor rat ionale algoritmul
descris n demonstrat ia teoremei 2, satisface
aceasta condit ie.
Pentru cazul capacitat ilor reale vom prezenta,
mai trziu, un astfel de algoritm, datorat lui
Edmonds si Karp (1972).
Observat ii: i)

I n demonstrat ia teoremei 3 avem


nevoie de fapt, doar sa aratam ca exista un
ux x de valoare maxima si apoi sa-i aplicam
construct ia din demonstrat ia teoremei 1;
existent a uxului x maxim rezulta imediat, con-
sidernd transcrierea problemei uxului maxim
ca o problema de programare liniara; am preferat
demonstrat ia de mai sus care (desi va com-
pletata abia dupa analiza algoritmului lui Edmonds-
Karp) este constructiva.
ii) Important a algoritmica a teoremei 3 este ev-
identa: mult imea sect iunilor ret elei este nita,
pe cnd mult imea uxurilor din ret ea este in-
nita.
226
Algoritmul lui Ford si Fulkerson pentru aarea
unui ux de valoare maxima
Se va folosi un procedeu de etichetare a vrfurilor
ret elei, n vederea depistarii drumurilor de crestere
a uxului curent x. Daca nu exista drumuri de
crestere, uxul va de valoare maxima.
Eticheta atribuita unui vrf j V are trei com-
ponente (e
1
, e
2
, e
3
) unde e
1
V 0 ; e
2

direct, invers ; e
3
R
+
si au urmatoarea
semnicat ie:
- daca e
2
= direct si e
1
= i atunci un C-drum
P de la s la j cu ultimul arc ij, arc direct si
r(P) = e
3
;
- daca e
2
= invers si e
1
= i atunci un C-drum
P de la s la j cu ultimul arc ij, arc invers si
r(P) = e
3
.
Init ial, se eticheteaza sursa s cu eticheta (0, ., ).
Celelalte vrfuri primesc eticheta prin
cercetarea vrfurilor deja etichetate:
227
Daca i este un vrf etichetat, atunci j V
Daca j neetichetat, ij E si x
ij
< c
ij
atunci
j se etichet. e = (i, direct, min(e
3
[i], c
ij
x
ij
));
Daca j neetichetat, ji E si x
ji
> 0 atunci
j se etichet. e = (i, invers, min(e
3
[i], x
ji
)).
Evident, n acest fel se respecta semnicat ia
celor trei componente ale etichetelor.
Numim aceasta procedura etichetare(i).
Atunci cndn procedura de etichetare s-a atribuit
eticheta vrfului t, s-a obt inut un drum de crestere
P a uxului curent, de capacitate reziduala
r(P) = e
3
[t] si ale carui vrfuri se depisteaza n
O(n) explornd prima componenta a etichetelor.
Modicarea uxului x

r(P) se executan acest


mers napoi, tot n O(n).
Pentru noul ux se reia procedura de etichetare.
228
Daca toate vrfurile etichetate au fost cercetate si nu s-
a reusit etichetarea vrfului t, rezulta ca uxul curent
nu admite drumuri de crestere, este deci de valoare
maxima, iar daca S = mult imea vrfurilor etichetate
atunci (S, V S) este o sect iune de capacitate minima.
Descrierea algoritmului
1: Se alege x = (x
ij
) ux init ial (de ex. uxul nul);
Se eticheteaza s cu (0, ., )
2: while ( vrfuri etichetate necercetate) do
alege un vrf etichetat si necercetat i;
etichetare(i);
if (t a primit eticheta) then
modica uxul pe drumul dat de etichete;
sterge toate etichetele;
eticheteaza s cu (0, ., )

3: S i[i V, i are eticheta


T V S
x este ux de valoare maxima
(S, T) este sect iune de capacitate minima.
229
Complexitatea algoritmului:
Pentru ecare crestere a uxului, snt necesare
cel mult 2m(m = [E[) inspect ii de arce n ved-
erea etichetarii.
Daca toate capacitat ile snt ntregi atunci vor
necesare cel mult v (v = valoarea uxului
maxim) cresteri succesive. Rezulta ca algorit-
mul are complexitatea O(mv).
Daca U este o margine superioara a capacitat ilor
arcelor atunci v (n 1)U ((n 1)U este o
margine superioara a capacitat ii sect iunii (s, V
s)), deci algoritmul are complexitatea O(nmU).
Observat ii. 1
0
. Dezavantajele algoritmului snt
legate de neconvergent a n cazul capacitat ilor
irat ionale (desi practic, n implementari nu este
cazul), si de faptul ca marimile capacitat ilor
inuent eaza comportarea sa, acestea neconsti-
tuind o masura a volumului datelor de intrare.
Exemplu:
230
s
t
1
2
3
4
M,0
M,0
M,0
M,0
1,0
1
1
P
P
1
2
Daca alegerea, din pasul 2 al algoritmului,
face ca drumurile de crestere succesive (pornind
de la uxul nul) sa e P
1
, P
2
, P
1
, P
2
, . . . unde
P
1
= 1, 2, 3, 4, P
2
= 1, 3, 2, 4 atunci, ecare
crestere a uxului mareste cu 1 valoarea uxu-
lui curent si, deci, vor necesare 2M cresteri,
ceea ce este inadmisibil pentru M Z
+
foarte
mari.
2
0
. Aceste dezavantaje pot evitate daca
alegerile vrfurilor etichetate supuse cercetarii
se fac judicios. Primii care au observat acest
fenomen, au fost Dinic(1970) si independent,
Edmonds si Karp (1972).
231
Modicarea lui Edmonds si Karp a algorit-
mului lui Ford & Fulkerson
Numim drum minim de crestere a uxului x
n ret eaua R, un drum de crestere de lungime
minima printre toate drumurile de crestere.
Fie x un ux oarecare n ret eaua R. Denim
sirul de uxuri x
k
n R astfel:
x
0
x;
x
k
x
k1

r(P
k1
), P
k
este drum minim de crestere
relativ la x
k1
; k = 1, 2, . . .
Vom dovedi ca sirul de uxuri astfel construit
este nit.
Notam, pentru i V si k = 0, 1, 2, . . .

k
i
= lungimea minima a unui C-drum de la s la i n R
relativ la uxul x
k
.

k
i
= lungimea minima a unui C-drum de la i la t n R
relativ la uxul x
k
.
232
Lema. 4. Pentru i V si k = 0, 1, 2, . . .
avem

k+1
i

k
i
si
k+1
i

k
i
.
Teorema. 4. (Edmonds, Karp)
Daca x = x
0
este un ux oarecare n ret eaua
R, atunci sirul de uxuri x
1
, x
2
, . . . obt inut din
x
0
prin cresteri succesive pe drumuri minime
de crestere, are cel mult
mn
2
elemente (n cel
mult
mn
2
cresteri succesive, se obt ine un ux
care nu admite drumuri de crestere).
Demonstrat ie: Daca P este un drum de crestere
relativ la un ux n ret eaua R, cu capacitatea
reziduala r(P), vom numi arc critic n P orice
arc e P cu r(e) = r(P).

In x

r(P), uxul pe arcele critice devine sau


egal cu capacitatea (pentru arcele directe) sau
egal cu 0 (pentru arcele inverse).
233
Fie ij un arc critic pe drumul minim de crestere
P
k
relativ la x
k
. Lungimea lui P
k
este:

k
i
+
k
i
=
k
j
+
k
j
.
Cum ij este critic n P
k
, n x
k+1
nu va putea
folosit n aceeasi direct ie ca n P
k
. Prima
oara cnd uxul pe arcul ij se va modica, el
va apare ntr-un drum de crestere P
l
cu l > k
relativ la x
l
si va folosit n direct ie opusa.
Avem, deci, doua cazuri:
i) ij direct n P
k
. Atunci
k
j
=
k
i
+1.

In P
l
ij
va arc invers, deci
l
i
=
l
j
+1.
s t
i j
P
k
s
t i
j
P
l
Rezulta,
l
i
+
l
i
=
l
j
+1 +
l
i

k
j
+ 1 +
k
i
=

k
i
+
k
i
+2 (s-a folosit lema 1 ). Am obt inut
ca lg(P
l
) lg(P
k
) +2.
234
ii) ij arc invers n P
k
. Atunci
k
i
=
k
j
+1.

In
P
l
ij va arc direct, deci
l
j
=
l
i
+1.
s t i
j
P
k
s
t
i
j
P
l
Rezulta
l
j
+
l
j
=
l
i
+ 1 +
l
j

k
i
+ 1 +
k
j
=

k
j
+
k
j
+2 Deci, lg(P
l
) lg(P
k
) +2.
Deci orice drum minim de crestere n care
arcul ij este critic este cu macar doua arce
mai lung dect precedentul n care ij a fost
critic.
Cum, un drum n G are cel mult n 1 arce,
rezulta ca un arc xat nu poate critic n pro-
cesul de crestere mai mult de
n
2
ori.
Cum orice drum de crestere are cel put in un
arc critic, rezulta ca nu putem avea mai mult
de
mn
2
drumuri minime de crestere, n sirul
construit. Deci, dupa cel mult mn/2 cresteri,
se obt ine un ux care nu admite drumuri de
crestere.
235
Corolar. Daca R = (G, s, t, c) este o ret ea,
atunci exista un ux care nu admite drumuri
de crestere.
Observat ii: 1
0
Rezulta de aici, ca demonstrat ia
teoremei 3 este completa.
2
0
S-ar putea pune ntrebarea daca nu cumva,
alegerea drumurilor minime de crestere, mareste
complexitatea algoritmului de ux maxim ?
Raspunsul este nsa banal:
Lema. 5. Daca, n pasul 2 al algoritmului lui
Ford si Fulkerson, alegerea vrfurilor etichetate
n vederea cercetarii se face dupa regula primul
etichetat - primul cercetat, atunci drumurile
de crestere care se depisteaza snt cu numar
minim de arce.
Demonstrat ie: Fie P un drum de crestere depi-
stat si e P

un drum minim de crestere. Pre-


supunem ca lg(P) > lg(P

).
236
Fie
P : si
1
, i
1
i
2
, . . . , i
k1
i
k
, i
k
i
k+1
, i
k+1
i
k+2
, . . . , i
k+l1
t si
P

: si
1
, i
1
i
2
, . . . , i
k1
i
k
, i
k
j
k+1
, j
k+1
j
k+2
, . . . , j
k+l

1
t.
Deci, lg(P) = k +l, lg(P

) = k +l

, au primele
k arce comune si l

< l.
Conform regulii de etichetare, i
k+1
va primi
eticheta naintea lui j
k+1
, dar j
k+1
va primi
etichetanaintea lui i
k+2
; j
k+2
va primi eticheta
naintea lui i
k+3
si asa mai departe; obt inem in-
ductiv ca t primeste etichetanaintea lui i
k+l

+1
,
deci t primeste eticheta pe drumul P

, nainte
de a primi eticheta pe drumul P, absurd.
Observat ie: Regula primul etichetat - primul
cercetat corespunde unei explorari bfs a vr
furilor etichetate, ceea ce se poate realiza, uti-
liznd o coada pentru memorarea lor. Aceasta
nu afecteaza complexitatea algoritmului, care
va necesita tot O(m) operat ii pentru ecare
crestere a uxului , si din teorema 4 obt inem
237
Teorema. 5. (Edmonds- Karp 1972)
Daca se modica algoritmul lui Ford si Fulker-
son cu precizarea alegerii bfs a vrfurilor etichetate
n vederea cercetarii, atunci, uxul maxim se
obt ine n timpul O(m
2
n) .
Exercit iu. Aplicat i algoritmul lui Ford & Fulk-
erson modicat pentru obt inerea unui ux de
valoare maxima n ret eaua de mai jos (n care
este precizat un ux init ial de valoare 55 ).
238
Algoritmi de tip preux.
Fie R = (G, s, t, c) o ret ea.
Denit ie. Se numeste preux n ret eaua R, o
funct ie x : E R astfel nct
(i) 0 x
ij
c
ij
ij E
(ii) i ,= s e
i
=

j:jiE
x
ji

j:ijE
x
ij
0.
Numarul e
i
i V s, t se numeste excesul
din vrful i.
Daca i V s, t si e
i
> 0 atunci i se numeste
nod activ.
Daca ij E x
ij
va numit uxul pe arcul ij.
239
Observat ii: 1
0
. Daca n ret eaua R nu exista
noduri active, atunci preuxul x este ux de
la s la t n R de valoare e
t
.
2
0
. Ideea algoritmulor de tip preux este: se
porneste cu un preux n R si se transforma
prin modicari ale uxului pe arcentr-un ux
care nu admite drumuri de crestere.
3
0
.

In denit ia unui preux, nu am mai utilizat
convent ia ca vom introduce toate perechile de
arce din digraful complet simetric de ordin n,
ntruct n analiza algoritmilor pe care i vom
prezenta va esent iala reprezentarea digrafu-
lui G cu ajutorul listelor de adiacent a. Totusi,
vom considera ca daca ij E atunci si
ji E (altminteri, adaugam arcul ji cu ca-
pacitate 0).
240
Denit ie: Daca x este un preuxn R si ij E,
atunci capacitatea reziduala a arcului ij este
r
ij
= c
ij
x
ij
+x
ji
(reprezentnd uxul adit ional ce poate trimis
de la nodul i la nodul j utiliznd arcele ij si ji).
i
j
cij, xij
cji , xji
trimite
a=dir+inv
pe arcul ij
i
j
cij
, xij+dir
cji, xji - inv
e
i
e
j
e - a
e + a
i
j
Observat ie. Peste tot, n cele ce urmeaza, a
trimite ux de la i la j nseamna sa crestem
uxul pe arcul ij sau sa micsoram uxul pe
arcul ji.
Denit ie: Se numeste C-drum n R relativ la
preuxul x, un drum al lui G ale carui arce au
capacitatea reziduala pozitiva.
241
Denit ie: Se numeste funct ie de distant a n R
relativ la preuxul x, o funct ie d : V Z
+
care
satisface
(D1) d(t) = 0
(D2) ij E, r
ij
> 0 d(i) d(j) +1
j i
i
i
d( j )
0 d( j ) - 1
d( j ) + 1
t i
s
d(s)
Observat ii: 1
0
. Daca P este un C-drum relativ
la preuxul xn R de la i la t atunci d(i) lg(P)
(arcele unui C-drum au capacitate reziduala
pozitiva si se aplica (D2)).
Rezulta ca d(i)
i
(lungimea minima a unui
C-drum de la i la t).
242
2
0
. Vom nota cu A(i), pentru orice vrf i, lista
sa de adiacent a, care cont ine arcele ij E.
Denit ie. Fie x un preuxn R si d o funct ie de
distant a relativ la x. Un arc ij E se numeste
admisibil daca
r
ij
> 0 d(i) = d(j) +1.
Daca R este o ret ea, consideram init ializare
urmatoarea procedura care construiesten O(m)
un preux x si o funct ie de distant a d core-
spunzatoare acestuia, astfel:
procedure init ializare;

for ij E do
if i = s then x
sj
c
sj
else x
ij
0;
d[s] n; d[t] 0;
for i V s, t do d[i] 1

243
Observat ii: 1
0
. Dupa execut ia acestei proceduri,
sj A(s) avem r
sj
= 0, deci alegerea lui d(s) = n
nu afecteaza condit ia D2. Pentru arcele cu capacitate
reziduala pozitiva de forma js D2 este evident vericata.
d( j )=1
d( t )=0
t
j
s
d(s) = n
j
r =0
sj
r >0
js
1=d(j)<n+1=d(s)+1
r >0
jt
1=d(j)=0+1=d(t)+1
2
0
. Alegerea lui d(s) = n are urmatoarea in-
terpretare: nu exista C-drum de la s la t n
R relativ la x (ntruct, altminteri, ar trebui
ca lungimea acestuia sa e n).
Daca, n algoritmii de tip preux vom pastra
acest invariant, atunci cnd x va deveni ux,
va rezulta ca nu admite drumuri de crestere si
deci x va de valoare maxima.
244
Consideram urmatoarele proceduri
procedure pompeaza (i);
// i este un varf diferit de s, t

alege ij A(i) ij admisibil;


trimite = min(e
i
, r
ij
) unitat i de ux de la i la j

Daca = r
ij
avem o pompare saturata, alt-
minteri pomparea este nesaturata.
procedure reetichetare (i);
// i este un varf diferit de s, t

d(i) mind(j) +1 [ ij A(i) r


ij
> 0

245
Schema generala a unui algoritm de tip preux
este:

init ializare;
while noduri active n R do
selecteaza un nod activ i;
if arce admisibile n A(i)
then pompeaza(i)
else reetichetare(i)

Lema. 6. Algoritmul de tip preux, de


mai sus, are ca invariant d este funct ie de
distant a relativ la preuxul x. La ecare
apel al lui reetichetare(i), d(i) creste strict.
Demonstrat ie: Procedura init ializare construieste,
evident, o funct ie de distant a relativ la pre-
uxul init ial.
246
Dacanaintea execut iei unei iterat ii a lui while,
d e funct ie de distant a relativ la preuxul curent
x, atunci:
a) daca se executa pompare(i), singura pereche
ce poate viola D2 este d(i) si d(j). Cum arcul
ij a fost ales admisibil, avem d(i) = d(j) + 1.
Dupa pompare, arcul ji poate avea r
ji
> 0
(fara ca nainte sa fost), dar condit ia d(j)
d(i) +1 este, evident, satisfacuta;
b) daca se executa reetichetare(i), modicarea
lui d(i) se face astfel nct D2 sa ramna vala-
bila pentru orice arc ij cu r
ij
> 0. Cum apelul
lui reetichetare implica d(i) < d(j) +1 ij cu
r
ij
> 0, rezulta ca dupa apel d(i) creste macar
cu o unitate.
Pentru nitudinea algoritmului va trebui sa ne
asiguram ca , daca, n timpul execut iei, avem
un nod i activ, atunci n A(i) exista macar un
arc ij cu r
ij
> 0. Aceasta rezulta din
Lema. 7. Daca pe parcursul algoritmului, i
0
este un nod activ, atunci exista un C-drum de
la i
0
la s, n R, relativ la preuxul curent x.
247
Demonstrat ie: Daca x este un preux n R,
atunci x se poate scrie ca o suma nita x =
x
1
+x
2
+. . . +x
p
, unde ecare x
k
satisface:
mult imea A
k
= ij [ ij E, x
k
ij
,= 0 este
a) mult imea arcelor unui drum de la s la t,
b) m. arcelor unui dr. de la s la un nod activ,
c) mult imea arcelor unui circuit.

In plus, n situat iile a) si c), x


k
este ux.
(demonstrat ia rezulta algoritmic, construind mai nti
mult imile a), apoi a celor de tip c) si b); la ecare etapa
se cauta inversul unui drum de tipul a),b), sau c); pre-
uxul costruit se scade din cel curent; excesele nenega-
tive, permit efectuarea construct iei; ea este nita, caci
dupa ecare etapa nr. arcelor cu ux curent nul creste.)
Cum i
0
este un nod activ n R relativ la x,
rezulta ca situat ia b) va apare pentru nodul i
0
(ntruct situat iile b) si c) nu afecteaza excesul din nodul
i
0
). Arcele inverse ale acestui drum au capac-
itatea reziduala strict pozitiva si ele formeaza
C-drumul din enunt ul lemei.
s
i0
e >0
i0
x > 0
x > 0
x > 0
x > 0
r > 0
r > 0
r > 0
r > 0
248
Corolar. 1. i V d(i) < 2n.
Demonstrat ie: Daca i nu a fost reetichetat,
atunci d(i) = 1 < 2n.
Daca i a fost reetichetat, atunci nainte de
reetichetare i este nod activ, deci exista C-
drum de la i la s de lungime cel mult n 1.
Din modul de modicare a lui d(i) si din D2
rezulta ca dupa reetichetare d(i) d(s) + n
1 = 2n 1, ntruct d(s) = n nu se schimba pe
parcursul algoritmului.
Corolar. 2. Numarul total de apeluri ale pro-
cedurii reetichetare este mai mic dect 2n
2
.
Demonstrat ie: Fiecare din cele n 2 vrfuri ce
pot supuse etichetarii poate etichetat de
cel mult 2n1 ori, avnd n vedere corolarul 1,
lema 6 si etichetarea init iala.
249
Corolar. 3. Numarul total de pompari sat-
urate este nm.
Demonstrat ie: Dupa ce un arc ij devine satu-
rat (situat ie n care d(i) = d(j) + 1), pe acest
arc nu se va mai putea trimite ux pna cnd
nu se va trimite ux pe arcul ji situat ie n care
vom avea d

(j) = d

(i)+1 d(i)+1 = d(j)+2;


aceasta schimbare de ux nu va avea loc pna
ce d(j) nu creste cu doua unitat i. Deci, un arc
nu poate deveni saturat mai mult de n ori si n
total vom avea cel mult mn pompari saturate.
Lema. 8. (Goldberg si Tarjan 1986) Numarul
pomparilor nesaturate este cel mult 2n
2
m.
Lema. 9. La terminarea algoritmului x este
ux de valoare maxima.
Demonstrat ie: Din lemele 6 si 8 si corolarul 3
rezulta ca algoritmul se termina dupa cel mult
2n
2
m iterat ii si cum d(s) = n nu se modica
pe parcurs, rezulta ca uxul obt inut este fara
drumuri de crestere.
250
Vom prezentan continuare, algoritmul lui Ahuja
si Orlin (1988) care, utiliznd o metoda de
scalare, va margini numarul pomparilor nesat-
urate de la O(n
2
m) la O(n
2
logU).
Vom presupune ca toate capacitat ile sntntregi
si ca max
ijE
(1 +c
ij
) = U. Notam log
2
U =
K. Ideia algoritmului:
Se vor executa K + 1 etape. Pentru ecare
etapa p, cu p lund succesiv valorile K, K
1, . . . , 1, 0 vor ndeplinite urmatoarele condit ii:
(a) - la nceputul etapei p, i satisface e
i
2
p
(b) - n timpul etapei p se utilizeaza proce-
durile pompare-etichetare n vederea eliminarii
nodurilor active cu e
i
(2
p1
, 2
p
].
Din alegerea lui K, n etapa init iala (p = K)
condit ia (a) este satisfacuta si deci, daca (b)
va invariant al algoritmului, dupa K+1 etape,
excesele nodurilor vor
1
2
.
251
Daca, toate transformarile datelor vor pastra
integritatea exceselor, va rezulta ca excesul
oricarui nod este 0, si, deci, dispunem de un
ux de valoare maxima (datorita proprietat ilor
funct iei distant a d(i)).
Realizarea lui (b) se poate face astfel:
- se ncepe etapa p, construind lista L(p) a
tuturor nodurilor i
1
, i
2
, . . . , i
l(p)
cu excesele
e
i
j
> 2
p1
, ordonate crescator dupa d (avndn
vedere ca d poate lua valori ntre 1 si 2n1, o
sortare de tip hash rezolva problema n O(n)).
- nodul activ selectat pentru pompare-reetichetare
va pe tot parcursul etapei, primul nod din
L(p). Va rezulta ca, daca se face o pompare
pe arcul ij admisibil, cum d(j) = d(i) 1 si
i este primul din L(p), vom avea e
i
> 2
p1
si
e
j
2
p1
. Daca, n plus, se va limita , uxul
trimis de la i la j, n procedura de pompare
la = min(e
i
, r
ij
, 2
p
e
j
),
252
atunci, cum 2
p
e
j
2
p1
va rezulta ca orice
pompare nesaturata trimite cel put in 2
p1
unitat i de ux. Dupa pompare, excesul din
nodul j (singurul nod al carui exces poate creste)
va e
j
+min(e
i
, r
ij
, 2
p
e
j
) e
j
+2
p
e
j
2
p
(deci b) ramne ndeplinita).
- etapa (p) se termina atunci cnd L(p) devine
vida.
Pentru realizarea ecienta a operat iilor de de-
pistare a unui arc pe care se face pomparea,
sau a examinarii arcelor care ies dintr-un vrf i
pentru reetichetare, vom considera listele A(i)
organizate astfel:
- ecare nod al listei cont ine: vrful j; x
ij
; r
ij
;
pointer catre arcul ji (din lista de adiacent a a
vrfului j); pointer catre urmatorul element din
lista A(i) .
- parcurgerea listei se face cu ajutorul unui
pointer p(i) catre elementul curent din lista.
Evident, organizarea acestor liste se facenaintea
apelului lui init ializare si necesita O(m) operat ii.
253
Algoritmul Ahuja-Orlin
init ializare;
K log
2
(U) ; 2
K+1
;
for p = K, K 1, . . . , 0 do
construieste L(p);

2
while L(p) ,= do
e i primul element din L(p);
parcurge lista A(i) din locul curent pna
se determina un arc admisibil sau se
depisteaza sfrsitul ei;
if ij este arcul admisibil gasit then
min(e
i
, r
ij
, e
j
);
e
i
e
i
; e
j
e
j
+;
trimite unitat i de ux de la i la j;
if e
i


2
then sterge i din L(p);
if e
j
>

2
then adauga j ca prim nod n L(p)

else // s-a depistat sfrsitul listei


sterge i din L(p);
parcurge toata lista A(i) pentru calculul lui
d(i) = mind(j) +1; ij A(i) r
ij
> 0;
introdu i n L(p) la locul sau (hash);
pune pointerul curent al listei A(i) la nceput

254
Operat iile care domina complexitatea timp, n
cazul cel mai nefavorabil, snt pomparile nesat-
urate. Toate celelalte operat ii snt dominate
de O(nm).
Lema. 8. Numarul pomparilor nesaturate
este cel mult 8n
2
n ecare etapa a scalarii,
deci O(n
2
logU) n total.
Demonstrat ie: Fie
F(p) =

iV i, =s,t
e
i
d(i)
2
p
.
La nceputul etapei p, F(p) <

iV
2
p
(2n)
2
p
= 2n
2
.
Daca n etapa p, atunci cnd se analizeaza nodul activ
i, se apeleaza reetichetare, nseamna ca nu exista arce
ij admisibile.
Operat ia de reetichetare mareste d(i) cu 1 unitat i,
ceea ce conduce la o crestere a lui F cu cel mult unitat i.
Cum pentru ecare i, cresterea lui d(i) pe parcursul
ntregului algoritm este < 2n rezulta ca F va creste pna
la cel mult valoarea 4n
2
, la sfrsitul etapei p.
255
Daca, pentru un nod i se executa pompare,
atunci aceasta se executa pe arcul ij cu r
ij
> 0
si d(i) = d(j) +1.
Cum numarul unitat ilor de ux pompat este
2
p1
, dupa pompare F(p) va avea valoarea
F

(p), unde
F

(p) = F(p)
d(i)
2
p
+
d(j)
2
p
= F(p)

2
p

F(p)
2
p1
2
p
= F(p)
1
2
.
Rezulta ca aceasta situat ie nu poate aparea
mai mult de 8n
2
(ntruct F(p) poate creste
cel mult la 4n
2
).
Cu att mai mult, pomparile nesaturate nu vor
depasi 8n
2
.
Sumariznd toate rezultatele anterioare obt inem
Teorema. 6. (Ahuja-Orlin 1988) Algoritmul
de tip preux cu scalarea exceselor are com-
plexitatea O(nm+n
2
logU).
256
2. Aplicat ii (combinatorii) ale problemei
uxului maxim.
A. Determinarea cuplajului maxim si a sta-
bilei maxime ntr-un graf bipartit.
Fie G = (V
1
, V
2
; E) un graf bipartit cu n vrfuri
si m muchii.
Consideram ret eaua R = (G
1
, s, t, c), unde
- V (G
1
) = s, t V
1
V
2
;
- E(G
1
) = E
1
E
2
E
3
. E
1
= sv
1
[ v
1
V
1
,
. E
2
= v
2
t [ v
2
V
2
,
. E
3
= v
1
v
2
[ v
1
V
1
, v
2
V
2
, v
1
v
2
E;
- c : E(G
1
) Z
+
denita prin
c(e) =
_
_
_
1 daca e E
1
E
2
daca e E
3
(vezi gura urmatoare).
257
V
s
t
1
1
1
1
1
1
1
1
1
1
++
++
++
++
++
1
V
2
Daca x = (x
ij
) este un ux cu componente
ntregi n R atunci se observa ca mult imea de
arce ij [ i V
1
, j V
2
x
ij
= 1 induce n
graful G bipartit un cuplaj M(x).

In plus, v(x)
este cardinalul cuplajului M(x).
Reciproc, orice cuplaj din G induce o mult ime
de arce neadiacente n G
1
; daca pe ecare ast-
fel de arc ij (i V
1
, j V
2
) se considera uxul
x
ij
egal cu 1 si de asemenea x
si
= x
jt
= 1, si
lund uxul x = 0 pe orice alt arc, atunci uxul
construit are valoarea [M[.
Rezulta ca rezolvnd problema uxului maxim
pe ret eaua R se determina (pornind de la uxul
nul) n O(nm + n
2
logn) un cuplaj de cardinal
maximn graful bipartit G.
258
Fie (S, T) sect iunea de capacitate minima ce
se poate construi, din uxul maxim obt inut, n
O(m) operat ii.
Vom avea, c(S, T) = (G), din teorema uxului
maxim-sect iunii minime.
V
s
t
1
1
1
1
1
1
1
1
1
1
++
++
++
++
++
1
V
2
S
T
Cum (G) < , rezulta ca punnd S
i
= SV
i
si
T
i
= T V
i
(i = 1, 2), avem: [T
1
[ +[S
2
[ = (G),
iar X = S
1
T
2
este mult ime stabila n graful
G (pentru a avea c(S, T) < ).

In plus, [X[ = [V
1
T
1
[ +[V
2
S
2
[ = n (G).
Rezulta ca X este stabila de cardinal maxim,
ntruct n(G) = (G) (teorema lui Konig).
259
B. Recunoasterea secvent elor digrace.
Date (d
+
i
)
i=1,n
si (d

i
)
i=1,n
, exista un digraf
G cu n vrfuri astfel nct G = (1, . . . , n, E)
si d
+
G
(i) = d
+
i
si d

G
(i) = d

i
i = 1, n ?
(Problema poate aparen proiectarea circuitelor
integrate).
Evident, va trebui ca 0 d
+
i
n1 si 0 d

i

n 1 i = 1, n si

i=1,n
d
+
i
=

i=1,n
d

i
= m
(unde, m = [E[, iar d
+
i
, d

i
Z).

In aceste ipoteze, construim ret eaua bipartita


R = (G
1
, s, t, E) unde G
1
se obt ine din K
n,n

11

, 22

, . . . , nn

prin orientarea muchiilor ij

i ,= j 1, . . . , n, si introducerea arcelor si,


i 1, . . . , n si j

t, j 1, . . . , n.
Funct ia de capacitate va c(si) = d
+
i
i =
1, n, c(j

t) = d

j
j = 1, n si c(ij

) = 1.
260
Daca n aceasta ret ea, exista un ux ntreg de valoare
maxima m, atunci din orice vrf i 1, . . . , n vor pleca
exact d
+
i
arce pe care uxul este 1, de forma ij

si n
ecare vrf j

vor intra exact d

j
arce pe care uxul este
1, de forma ij

.
s
t
1
2
n
1
1
1
2
1
1
n
+
d1
+
+

d2
dn
d1
-
d2
-
dn
-
Considernd mult imea de vrfuri 1, . . . , n si introducnd
toate arcele ij astfel nct x
ij

= 1, se obt ine un di-


graf G cu secvent ele gradelor interioare si exterioare
(d
+
i
)
i=1,n
si (d

i
)
i=1,n
. Reciproc, daca acest digraf exista,
atunci procednd invers ca n construct ia anterioara, se
obt ine un ux ntreg n ret eaua R de valoare m (deci
maxim). Rezulta ca recunoasterea secvent elor digrace
(si construct ia digrafului n cazul raspunsului armativ)
se poate face n O(nm+n
2
logn) = O(n
3
).
261
C. Determinarea nr. de muchie-conexiune
al unui graf
Fie G = (V, E) un graf. Pentru s, t V, s ,= t,
denim:
-p
e
(s, t) = numarul maxim de drumuri cu muchii
disjuncte ce unesc s si t n G.
-c
e
(s, t) = cardinalul minim al unei mult imi de
muchii, prin ndepartarea careia din graf, ntre
s si t nu mai exista drumuri.
Teorema. 7. p
e
(s, t) = c
e
(s, t).
Demonstrat ie: Construim din G digraful G
1
,
nlocuind ecare muchie a lui G cu o pereche
de arce simetrice. Consideram
c : E(G
1
) Z
+
prin c(e) = 1, e E(G
1
).
Fie x
0
un ux ntreg de valoare maxima n
R = (G
1
, s, t, c). Fluxul x
0
se poate scrie ca
o suma de v(x
0
) uxuri x
k
ntregi de valoare 1,
nlocuind, eventual, uxul pe unele circuite cu
0.
262
s
t
s
t
Fluxul pe arcele groase
este 1, pe cele subtiri 0.
Fiecare astfel de ux x
k
induce un drum de la
s la t n G
1
(considernd arcele pe care uxul
este nenul), si deci, si n G.
Rezulta ca v(x
0
) = p
e
(s, t), ntruct orice mult ime
de drumuri disjuncte pe muchii, genereaza un
ux de la s la t n R de valoare egala cu numarul
acestor drumuri.
Fie (S, T) o sect iune de capacitate minima;
avem c(S, T) = v(x
0
), din teorema uxului maxim-
sect iunii minime.
263
Pe de alta parte, c(S, T) este numarul arcelor
cu o extremitaten S si cealaltan T, deoarece
c(e) = 1, e E(G
1
). Aceasta mult ime de arce
genereaza n G o mult ime de muchii de acelasi
cardinal si cu proprietatea ca deconteaza, prin
ndepartare, s si t .
Rezulta ca avem c(S, T) = v(x
0
) = p
e
(s, t)
muchii n G care deconecteaza, prinndepartare,
s si t. Deci c
e
(s, t) p
e
(s, t).
Cum, inegalitatea c
e
(s, t) p
e
(s, t) este evi-
denta, rezulta ca teorema este demonstrata.
Corolar. Daca G este un graf conex (G) (val-
oarea maxima a lui p Z
+
astfel nct G este
pmuchie-conex) este
min
s,tV (G)
s,=t
c
e
(s, t). ()
264
Rezulta ca, pentru a aa (G), rezolvam cele
n(n1)
2
probleme de ux, descrisen demonstrat ia
teoremei.
Totusi, sa observam ca pentru o pereche xata
s si t avem: daca (S, T) este sect iunea de ca-
pacitate minima, atunci
v S si w T c
e
(v, w) c(S, T) ().

In particular, daca (s, t) este perechea pentru


care se realizeaza minimul n (*) vom avea
egalitate n (**).
Rezulta ca daca xam un vrf s
0
si rezolvam
n 1 probleme de ux cu t V s
0
se va
obt ine n mod necesar o pereche s
0
, t
0
pentru
care c(s
0
, t
0
) = (G) (ne asiguram, astfel, de-
pistarea unui vrf t
0
, care sa nu e n aceeasi
clasa cu s
0
n partit ia (S, T)).
Rezulta ca n O(n (nm + n
2
c)) = O(n
2
m) se
pot determina (G) si o mult ime separa-
toare de muchii de cardinal minimn G.
265
D. Determinarea numarului de conexiune
al unui graf.
Daca G = (V, E) este un graf si
s, t V, s ,= t, st / E atunci, notnd
-p(s, t) = numarul maxim de stdrumuri cu
mult imile de vrfuri disjuncte (cu except ia ex-
tremitat ilor),
-c(s, t) = cardinalul minim al unei mult imi de
vrfuri st separatoare,
avem, din teorema lui Menger,
p(s, t) = c(s, t) ()

In plus, numarul de conexiune k(G) al grafului


G (valoarea maxima a lui p Z
+
pentru care
G este pconex) este
k(G) =
_

_
n 1 daca G = K
n
min
s,tV
st / E
c(s, t) daca G ,= K
n
()
266
Vom arata ca egalitatea (*) rezulta si din teo-
rema uxului maxim-sect iunii minime pe o ret ea
convenabil aleasa.
Fie G
1
= (V (G
1
), E(G
1
)) digraful construit din
G astfel:
-v V consideram a
v
, b
v
V (G
1
) si a
v
b
v
E(G
1
);
- vw E consideram b
v
a
w
, b
w
a
v
E(G
1
).
Exemplu:
1 t
s 2
a
b
b
a
a
b
a
b
s
s
t
t
1
1
2
2
Arcele groase au capacitate
infinit, cele subtiri 1.
S
Denim c : E(G
1
) Z
+
prin
c(e) =
_
_
_
1 daca e = a
v
b
v
altfel.
267
Consideram ret eaua R = (G
1
, b
s
, a
t
, c).
Fie x
0
un ux ntreg de la b
s
la a
t
n R de
valoare maxima.

In vrfurile b
v
(v V ) intra exact un arc de ca-
pacitate 1 si din vrfurile a
v
(v V ) pleaca exact
un arc de capacitate 1. Rezulta ca, pentru ca
sa e satisfacuta legea de conservare a uxului,
x
0
ij
0, 1 ij E(G
1
).
Aceasta nseamna ca x
0
se poate descompune
n v(x
0
) uxuri x
k
, ecare de valoare 1, si astfel
nct arcele pe care x
k
snt nenule corespund la
v(x
0
) drumuri disjuncte de la b
s
la a
t
n G
1
,
care induc o mult ime de v(x
0
) drumuri intern
disjuncte de la s la t n G.
Cum, pe de alta parte, dintr-o mult ime de p
drumuri intern disjuncte de la s la t n G, se
pot construi p drumuri intern disjuncte de la b
s
la a
t
n G
1
pe care se poate transporta cte o
unitate de ux, rezulta ca avem
: v(x
0
) = p(s, t).
268
Fie (S, T) o sect iune n R astfel nct v(x
0
) =
c(S, T).
Cum v(x
0
) este nit, rezulta ca i S, j T
cu ij E(G
1
),avem c(ij) < , deci c(ij) = 1,
adica u V astfel nct i = a
u
si j = b
u
.
Deci sect iunii (S, T) i corespunde o mult ime
de vrfuri A
0
V astfel nct, c(S, T) = [A
0
[ si
evident A
0
este st separatoare.
Cum, pe de alta parte, A stseparatoare, [A[
p(s, t) = v(x
0
) rezulta ca
c(s, t) = [A
0
[ = c(S, T) = v(x
0
) = p(s, t).
Demonstrat ia de mai sus, arata ca pentru a
determina k(G) va sucient sa determinam
minimul din (**) prin rezolvarea a [E(G)[ prob-
leme de ux, unde G este graful complementar
al lui G.
Deci algoritmul va avea complexitatea
O
_
(
n(n 1)
2
m)(nm+n
2
logn))
_
.
269
O simpla observat ie ne conduce la un algoritm
mai ecient. Evident,
k(G) min
vV
d
G
(v) =
1
n
(n min
vV
d
G
(v))
1
n
(

vV
d
G
(v)) =
2m
n
.
Daca A
0
este o mult ime de articulat ie n G cu
[A
0
[ = k(G) atunci G A
0
este neconex si se
poate partit iona V A
0
= V

V astfel nct,
v

, v V avem p(v

, v) = k(G).
Rezulta ca, rezolvnd o problema de ux cu
s
0
V

si t
0
V va rezulta ca p(s
0
, t
0
) =
valoarea uxului maxim = k(G).
Vom siguri ca depistam o astfel de pereche,
daca procedam astfel:
consideram l =
2m
n
+1 , alegem l vrfuri oare-
care din G, si pentru ecare astfel de vrf v
rezolvam toate problemele p(v, w) cu vw / E.
Se vor rezolvan total O(nl) = O(n(
2m
n
+1)) =
O(m) probleme. Deci complexitatea ntregului
algoritm va O(m(nm+n
2
logn)).
270
3. Fluxuri de cost minim
Fie R = (G, s, t, c) o ret ea si x un ux de la s
la t n R.
Consideram a : E R o funct ie de cost care
asociaza ecarui arc ij E a(ij) = a
ij
costul
(transportului unei unitat i de ux) pe arcul ij.
Costul uxului x se deneste ca ind
a(x) =

i,j
a
ij
x
ij
.
Problema uxului de cost minim
Data R o ret ea, v R
+
si a : E R funct ie de
cost, sa se determine x
0
ux n R astfel nct
a(x
0
) = mina(x) [ x ux n R, v(x) = v.
Observam ca, daca v nu depaseste valoarea
uxului maxim n ret eaua R, atunci problema
are ntotdeauna solut ii, a(x) ind liniara, iar
mult imea uxurilor de valoare data v ind margi
nita si nchisa n R
m
.
271
Exemple.
1
0
. Se dispune de n lucratori si n lucrari. Cos-
tul atribuirii lucratorului i la lucrarea j este
a
ij
(i, j 1, . . . , n). Sa se atribuie ecare
dintre cele n lucrari la cte un lucrator,
astfel nct costul total al atribuirii sa e
minim. (Problema simpla a atribuirii).
Consideram ret eaua descrisa mai jos, unde pe
ecare arc este trecuta mai nti capacitatea si
apoi costul. Deci c
ij
= 1, c
si
= 1, a
si
= 0, c
jt
=
1, a
jt
= 0 i, j 1, . . . , n.
1
2
i
n
1
2
j
n
s
t
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,a
1,a
1,a
11
n1
ij
Evident, un ux ntreg de valoare n si de cost
minim, reprezinta solut ia problemei.
272
Notam can mod similar se poate rezolva orice
problema de cuplaj perfect de pondere minima
ntr-un graf bipartit.
2
0
.O marfa disponibilan depozitele D
1
, . . . , D
n
n cantitat ile d
1
, . . . , d
n
este solicitata n cen-
trele de consum C
1
, C
2
, . . . , C
m
n cantitat ile
c
1
, c
2
, . . . , c
m
.
Se cunoaste costul a
ij
al transportului unei
unitat i de marfa de la depozitul D
i
la centrul
de consum C
j
(i 1, . . . , n j 1, . . . , m).
Se cere sa se stabileasca un plan de trans-
port care sa satisfaca toate cererile si sa
aiba costul total minim (problema simpla a
transporturilor Hitchcock-Koopmans).
Evident, problema are solut ie numai daca

i=1,n
d
i


j=1,m
c
j
.
273

In acest caz, un ux de cost minim si de val-


oare v =

i=1,m
c
i
n ret eaua urmatoare, re-
zolva problema.
D1
D2
Di
Dn
C1
C2
Cj
Cm
s
t
o ,a
o ,a
o ,a
11
n1
ij
c , 0
c , 0
c , 0
c , 0
1
m
2
j
d , 0
d , 0
d , 0
d , 0
1
2
i
n
o
o
o
274
Denit ie. Fie x un ux n R = (G, s, t, c) si
a : E R o funct ie de cost.
Daca P este un C-drum n R relativ la uxul
x, atunci costul drumului P se deneste
a(P) =

ijP
ij direct
a
ij

ijP
ij invers
a
ji
.
Daca C este un C-drum nchis, a(C) se cal-
culeaza dupa aceeasi formula, dupa stabilirea
unui sens de parcurgere a lui C (este posibil
ca ambele sensuri de parcurgere ale lui C sa
satisfaca denit ia unui C-drum).
Observat ii: 1
0
Din denit ia data, rezulta ca
daca P este drum de crestere relativ la uxul
x, atunci x
1
= x

r(P) este un ux de valoare


v(x
1
) = v(x)+r(P) si de cost a(x)+r(P) a(P).
2
0
Daca C este un C-drum nchis relativ la
x, atunci x
1
= x

r(C) este un ux de val-


oare v(x
1
) = v(x) si de cost a(x
1
) = a(x) +
r(C) a(C).
Daca a(C) < 0 atunci x
1
este un ux de aceeasi
valoare ca si x, dar de cost strict mai mic.
275
Teorema. 8. Un ux de valoare v este de
cost minim daca si numai daca nu admite C-
drumuri nchise de cost negativ.
Demonstrat ie: Necesitatea este evidenta din
observat ia anterioara.
Sucient a. Fie x un ux de valoare v, care nu
admite C- drumuri nchise de cost negativ.
Fie x

un ux de valoare v, de cost minim


(exista !) astfel nct
(x, x

) = min(x, x

) [ x

ux de val. v si cost minim


unde (x, x

) = [ij [ x
ij
,= x

ij
[.
Daca (x, x

) = 0 rezulta x = x

si deci x este
de cost minim.
Daca (x, x

) > 0, e ij astfel nct x


ij
,=
x

ij
. Presupunem 0 x
ij
< x

ij
c
ij
(altfel,
rat ionamentul este similar). Din legea de con-
servare a uxurilor rezulta ca
jk E astfel nct 0 x
jk
< x

jk
c
jk
, sau
kj E astfel nct 0 x

kj
< x
kj
c
jk
.
276
j
i
x < x
x < x
x < x
x < x
*
*
*
C
*
ij
ij
k
jk
jk
t
tk
tk
v
vj
vj
Repetnd acest rat ionament, deoarece numarul
vrfurilor este nit, se va obt ine C, un C-drum
nchis relativ la x n R.
Considernd sensul invers de parcurgere pe C
se obt ine un C-drum C

, nchis relativ la x

.
Deoarece a(C) 0 din ipoteza, iar a(C

) =
a(C), rezulta, din necesitatea teoremei (x

este de cost minim), ca a(C) = 0.


Modicnd uxul x

cu (C

) pe C

, unde
(C

) = min
_
min
kj direct n C

x
kj
x

kj
, min
kj invers n C

jk
x
jk
_
se obt ine un ux x

cu v(x

) = v(x

) = v,
a(x

) = a(x

) +(C

) a(C

) = a(x

), deci de
277
cost minim, dar, cu (x, x

) < (x, x

),
contradict ie.
Deci (x, x

) = 0, si demonstrat ia estencheiata.
Teorema. 9. Daca x este un ux de valoare
v si de cost minim iar P
0
este un drum de
crestere, astfel nct
a(P
0
) = mina(P) [ Pdrum de crestere relativ la x,
atunci x
1
= x

r(P
0
) este un ux de valoare
v(x
1
) = v +r(P
0
) si de cost minim.
Linia demonstrat iei este urmatoarea :
presupunnd prin reducere la absurd ca x
1
nu
este de cost minim, atunci x
1
admite un C-
drumnchis C de cost negativ. Cum x era ux
de cost minim rezulta ca E(C) E(P
0
) ,= .
Daca ij E(C) E(P
0
), atunci va rezulta ca
P
0
C ij cont ine un drum de crestere relativ
la x de cost mai mic dect P
0
.
278
Un drum de crestere de cost minim poate de-
pistat cu ajutorul algoritmilor de drum minim.
Daca x este un ux n R si a : E R este
funct ia de cost atunci considernd a
ij
=
daca ij / E (caz n care x
ij
= 0), construim
a
ij
=
_

_
a
ij
daca x
ij
< c
ij
si x
ji
= 0,
mina
ij
, a
ji
daca x
ij
< c
ij
si x
ji
> 0,
a
ji
daca x
ij
= c
ij
si x
ji
> 0,
+ daca x
ij
= c
ij
si x
ji
= 0.
Un drum de pondere minima de la s la t n
raport cu ponderile a
ij
corespunde unui drum
minim de crestere n R relativ la uxul x.
Un circuit de pondere negativa n raport cu
ponderile a
ij
corespunde unui C-drumnchis n
R relativ la x, de cost negativ.
Rezulta, urmatorul algoritm pentru rezolvarea
problemei uxului de cost minim, obt inut prin
combinarea mai multor algoritmi clasici
(Klein,Busacker,Gowan, etc.).
279
Algoritm generic de rezolvare a problemei uxului
de cost minim

0: Se considera x = (x
ij
) un ux cu valoarea v

v;
x poate uxul nul sau un ux y determinat
cu ajutorul algoritmului de ux maxim si apoi
considernd x = (
v
v(y)
y)
1: while ( circuite de pondere < 0 relativ la a
ij
) do
determina un astfel de circuit;
modica uxul pe acest circuit

2: while v(x) < v do


aplica un algoritm de drum minimn raport cu
ponderile a
ij
pentru depistarea unui
C-drum P de cost minim;
x x

min(r(P), v v(x))

Complexitatea pasului 2 este O(n


3
v), daca se pleaca de
la uxul nul. Complexitatea pentru pasul 2 este O(n
3
v),
daca se pleaca de la uxul nul. Se poate dovedi ca pasul
1 se poate implementa astfel ca numarul iterat iilor sa
e O(nm
2
logn).
280
VI. Reduceri polinomiale pentru
probleme de decizie pe grafuri.
Denit ie. Spunem ca problema de decizie
P
1
: I
1
da, nu se reduce polinomial la
problema de decizie P
2
: I
2
da, nu si notam
aceasta prin P
1
P
2
, daca exista o funct ie
: I
1
I
2
polinomial calculabila, astfel nct,
i I
1
P
1
(i) = P
2
((i)).
Funct ia se va da indicand un algoritm care
construieste pentru orice instant a i
1
I
1
, n
timp polinomial n raport cu [i
1
[, o instant a
i
2
I
2
cu proprietatea ca P
1
(i
1
) = da daca si
numai daca P
2
(i
2
) = da.
Se observa ca relat ia de reducere polinomiala
este o relat ie tranzitiva pe mult imea prob-
lemelor de decizie (datorita nchiderii mult imii
funct iilor polinomiale la compunere).
Din punct de vedere algoritmic, construct ia din spatele
oricarei reduceri polinomiale este interesanta evident iind
modul n care prima problema poate rezolvata ecient
cu ajutorul unui oracol care rezolva a doua problema.
281
Vom considera cunoscut faptul ca SAT 3SAT
unde
SAT
Instant a: U =u
1
, . . . , u
n
o mult ime nita de var. booleene.
C = C
1
C
2
. . . C
m
o formula n forma
conjunctiva peste U:
C
i
= v
i
1
v
i
2
. . . v
i
k
i
i = 1, m, unde
i
j
1, . . . , n a. . v
i
j
= u

sau v
i
j
= u

.
Intrebare: Exista o atribuire t : U A, F a. . t(C) = A ?
3SAT este cazul particular al lui SAT n care
ecare clauza C
i
are exact trei literali (k
i
= 3),
un literal v
i
j
ind, asa cum este descris mai
sus, o variabila sau negat ia ei.
Problema SAT este celebra datorita teoremei
lui Cook (1971): SAT este NPcompleta.
282
1. Mult imi stabile
SM
Instant a: G = (V, E) graf si k N.
Intrebare: Exista S mult ime stabila n G a. . [S[ k ?
Teorema. 1. (Karp 1972) 3SAT SM.
Demonstrat ie: Fie U = u
1
, u
2
, . . . , u
n
,
(n N

), C = C
1
. . . C
m
(m N

) cu
C
i
= v
i
1
v
i
2
v
i
3
i = 1, m, (unde v
i
j

1, . . . , n astfel nct v
i
j
= u

sau v
i
j
= u

),
reprezentnd datele unei instant e oarecare a
problemei 3SAT.
Vom construi n timp polinomial n raport cu
m + n, un graf G si k N astfel nct ex-
ista o atribuire t a valorilor de adevar sau fals
pentru variabilele booleene din U care sa faca
adevarata formula C, daca si numai daca exista
o stabila S n graful G astfel nct [S[ k.
283
Graful G va construit astfel:
(1) Pentru orice i 1, . . . , n consideram gra-
furile disjuncte T
i
= (u
i
, u
i
, u
i
u
i
).
(2) Pentru orice j = 1, m consideram grafurile
disjuncte
Z
j
= (a
j1
, a
j2
, a
j3
, a
j1
a
j2
, a
j2
a
j3
, a
j3
a
j1
) .
(3) Pentru orice j = 1, m consideram mult imea
de muchii
E
j
= a
j1
v
j1
, a
j2
v
j2
, a
j3
v
j3
unde v
j1
v
j2
v
j3
este factorul C
j
.
Consideram V (G) =
n
i=1
V (T
i
)
m
j=1
V (Z
j
) si
E(G) =
n
i=1
E(T
i
)
m
j=1
(E(Z
j
) E
j
).
Evident, construct ia este polinomiala n raport
cu m + n (G are 2n + 3m vrfuri si n + 6m
muchii).
Consideram k = n +m.
284
Exemplu: U = u
1
, u
2
, u
3
, u
4
;
C = (u
1
u
3
u
4
)(u
1
u
2
u
4
)(u
2
u
3
u
4
);
k = 4 +3 = 7.
1
u u u
u u u u
u
1
2 2
3 3
4 4
-
- - -
a
a
a
a a
a
a
a
a
11
12
13
21
22
31
32
33
23
Sa presupunem ca raspunsul la problema
SM pentru instant a G si k astfel construite
este da. Deci S S
G
astfel nct [S[ k.
Cum orice mult ime stabila poate avea cel mult
un vrf din orice V (T
i
) si din orice V (Z
j
) (i =
1, n , j = 1, m) rezulta ca avem [S[ = k si deci
[S V (T
i
)[ = 1, [S V (Z
j
)[ = 1 i = 1, n si
j = 1, m.
285
Consideram t : U A, F prin
t(u
i
) =
_
_
_
A daca S V (T
i
) = u
i

F daca S V (T
i
) = u
i
.
Atunci, j = 1, m avem t(C
j
) = A (si deci
t(C) = A).

In adevar, j = 1, m daca C
j
= v
j1
v
j2
v
j3
si
S V (Z
j
) = a
jk
(k 1, 2, 3) atunci, deoarece
a
jk
v
jk
E rezulta ca v
jk
/ S.
Daca v
jk
= u

, atunci u

/ S deci u

S si din
denit ia lui t avem t(u

) = A, adica t(v
jk
) = A
ceea ce implica t(C
j
) = A.
Daca v
jk
= u

, atunci u

/ S implica u


S, deci t(u

) = A, adica t(v
jk
) = A, ceea ce
implica t(C
j
) = A.
Reciproc, daca raspunsul la problema 3SAT
este da, atunci exista o atribuire t : U A, F
astfel nct t(C
j
) = A j = 1, m.
286
Consideram n graful G mult imea stabila S
1
,
S
1
=
i=1,n
V

i
, unde
V

i
=
_
_
_
u
i
daca t(u
i
) = A
u
i
daca t(u
i
) = F .
Atunci, j = 1, m, cum t(C
j
) = A, rezulta
ca exista k
j
1, 2, 3astfel nct t(v
jk
j
) = A.
Consideram S
2
=
j=1,m
a
jk
j
.
Evident, S
2
este stabila n G. Am construit
S
1
S
G
cu [S
1
[ = n, S
2
S
G
cu [S
2
[ = m.
Consideram S = S
1
S
2
. Evident, [S[ = n +
m = k (deci [S[ k) si n plus S este mult ime
stabila n G (deci raspunsul la SM pentru
intrarea G, k este da).
Faptul ca S este mult ime stabila n G rezulta
astfel: daca v, w S astfel nct vw E(G)
atunci o extremitate este din S
1
si cealalta din
S
2
.
287
Presupunnd v S
1
avem doua cazuri de con-
siderat
a) v = u

, w = a
jk
j
1, . . . , n , j
1, . . . , m , k
j
1, 2, 3 si v
jk
j
= u

. Cum
t(v
jk
j
) = A rezulta t(u

) = A deci u

/ S
1
,
contradict ie.
b) v = u

, w = a
jk
j
1, . . . , n , j
1, . . . , m , k
j
1, 2, 3 si v
jk
j
= u

. Cum
t(v
j
k
j
) = A, rezulta t(u

) = A deci t(u

) = F
ceea ce implica u

/ S
1
, contradict ie.
Cu aceasta teorema este complet demonstrata.
Sa observam ca reducerea lui SAT la SM este
complet similara, singura deosebire ind ca gra-
furile Z
i
sunt grafuri complete cu k
i
varfuri.
288
2. Colorarea varfurilor.
COL
Instant a: G = (V, E) graf si p N

.
Intrebare: Exista o p-colorare a varfurilor lui G?
Teorema. 2. 3SAT COL.
Aceasta teorema evident iaza complexitatea prob-
lemelor de colorare a vrfurilor unui graf.
Vom demonstra chiar mai mult: xnd p = 3
n enunt ul lui COL, reducerea polinomiala a lui
3SAT este nca posibila !
289
Lema. 1. Fie H graful:
v
v
v
v
1
2
3
4
a) Daca c este o 3-colorare a lui H astfel nct
c(v
1
) = c(v
2
) = c(v
3
) = a 1, 2, 3 atunci n
mod necesar c(v
4
) = a.
b) Daca c : v
1
, v
2
, v
3
1, 2, 3 satisface
c(v
1
, v
2
, v
3
) ,= a atunci c poate extinsa
la o 3-colorare c a lui H cu c(v
4
) ,= a.
Demonstrat ia lemei se poate face examinnd
lista 3-colorarilor lui H.
290

In cele ce urmeaza, vom desemna (pentru sim-


plitate) graful H astfel:
v
v
v
v
1
2
3
4
h
Demonstrat ia teoremei 2. Consideram datele
unei instant e ale problemei 3SAT:
U = u
1
, . . . , u
n
o mult ime de variabile booleene (n N

) si C =
C
1
C
2
. . . C
m
(m N

) o formula astfel nct i = 1, m C


i
=
v
i
1
v
i
2
v
i
3
, unde j = 1, 3 astfel nct v
i
j
= u

sau v
i
j
= u

.
Vom construi un graf G, astfel nct, considernd
p = 3n COL, vom obt ine ca G este 3-colorabil
daca si numai daca raspunsul la 3SAT este da,
adica exista t : U A, F, astfel nct t(C) =
A.

In plus, construct ia lui G se va face n timp
polinomial, parcurgnd urmatoarele etape:
291
1. i = 1, n consideram grafurile disjuncte
(V
i
, E
i
) unde V
i
= u
i
, u
i
si E
i
= u
i
u
i
.
2. j = 1, m, pentru C
j
= v
j
1
v
j
2
v
j
3
, con-
sideram grafurile:
v
v
v
a
1
2
3
j
h
j
j
j
j
unde v
j
k
(k = 1, 3) snt vrfurile de la pasul 1,
corespunzatoare literalilor v
j
k
, grafurile h
j
snt
disjuncte si a
j
snt vrfuri distincte.
3. Consideram a, un vrf diferit de toate cele
construite n pasii 1 si 2 si unim a cu vrfurile
a
j
j = 1, m.
4. Consideram b un vrf nou, unit cu u
i
si u
i
i = 1, n si de asemenea, cu vrful a.
292
Graful G astfel construit are un numar liniar de
vrfuri n raport cu n +m.
Exemplu: U = u
1
, u
2
, u
3
, u
4
,
C = (u
1
u
2
u
3
)(u
1
u
3
u
4
)(u
2
u
3
u
4
)
Graful G va :
u
u
u
u
u u u
1 1
2
2 3 4 4
u
- -
-
-
h h
h
1 2
3
3
a
a
a
1
2
3
a
b
Presupunem ca raspunsul la 3SAT este da.
Deci t : U A, F astfel nct t(C) = A, deci
t(C
j
) = A j = 1, m.
Construim o 3-colorare C a grafului G.
293
Denim mai nti c(u
i
) si c(u
i
) i = 1, n astfel:
c(u
i
) = 1 si c(u
i
) = 2, daca t(u
i
) = A si
c(u
i
) = 2 si c(u
i
) = 1, daca t(u
i
) = F.
Se observa ca daca v este un literal (u

sau
u

), atunci vrful v este colorat c(v) = 2 daca


si numai daca t(v) = F.
Deci j = 1, m nu avem c(v
j
1
) = c(v
j
2
) =
c(v
j
3
) = 2.
Folosind lema 1,b) rezulta ca putem extinde n
ecare graf h
j
colorarea c astfel nct c(a
j
) ,= 2,
deci c(a
j
) 1, 3.
Rezulta ca atribuind c(a) = 2 si c(b) = 3, c
este o 3- colorare a lui G.
294
Reciproc, presupunem ca G este 3-colorabil.
Putem presupune (eventual renumerotnd cu-
lorile) ca c(b) = 3 si c(a) = 2.
Va rezulta ca c(u
i
), c(u
i
) = 1, 2 si c(a
j
)
1, 3 i = 1, n, j = 1, m.
Din lema 1 a) rezulta ca nu vom avea c(v
j1
) =
c(v
j2
) = c(v
j3
) = 2 j = 1, 3.
Deci j = 1, m v
jk
astfel nct c(v
jk
) = 1.
Denim t : U A, F prin
t(u
i
) = A c(u
i
) = 1.
Conform observat iei anterioare, vom avea ca
t(C
j
) = A j = 1, m, deci t(C) = A, adica
raspunsul la 3SAT este da.
295
3. Colorarea muchiilor
Consideram urmatoarea problema de decizie.
HOL
Instant a: G = (V, E) graf 3-regulat.
Intrebare: Exista o 3-colorare a muchiilor lui G?
Teorema. 3. (Holyer 1981) 3SAT HOL.
Lema. 2. Fie H graful desenat mai jos.
v
v
v
u
1
2
3
6
5
4
x
y
z
t
v
v
v
v
7

In orice 3-colorare c a muchiilor lui H, avem


c(x) = c(y), [c(z, t, u)[ = 3 sau
c(z) = c(t), [c(x, y, u)[ = 3 .
296
Demonstrat ie Fie c o 3-colorare a lui H.
a) presupunem c(x) = c(y). Eventual, dupa
o renumerotare a culorilor vom avea c(x) =
c(y) = 1 si c(v
1
v
7
) = 2, c(v
1
v
2
) = 3.
a1).c(u) = 1. Avem urmatorul sir de implicat ii:
c(v
2
v
4
) = 2,c(v
2
v
5
) = 1,c(v
4
v
6
) = 3,c(v
3
v
6
) =
2,c(v
3
v
5
) = 3, c(t) = 2,c(v
6
v
7
) = 1,c(z) = 3.
a2).c(u) = 2. Avem urmatorul sir de implicat ii:
c(v
2
v
4
) = 1,c(v
2
v
5
) = 2,c(v
4
v
6
) = 3,c(v
3
v
6
) =
2,c(v
3
v
5
) = 3, c(t) = 1,c(v
6
v
7
) = 1,c(z) = 3.
a3).c(u) = 3. Muchia v
2
v
4
poate avea culorile
1 sau 2.
a3.1.)c(v
2
v
4
) = 1. Avem atunci, c(v
2
v
5
) =
2,c(v
4
v
6
) = 2,c(v
3
v
6
) = 3, si nu putem atribui
c(v
3
v
5
).
a3.2.)c(v
2
v
4
) = 2. Avem atunci, c(v
2
v
5
) =
1,c(v
4
v
6
) = 1, c(v
6
v
7
) = 3, c(z) = 1,c(v
3
v
6
) =
2,c(v
3
v
5
) = 3, c(t) = 2.
b) Argument similar, daca c(z) = c(t).
297
Sa observam can graful H muchiile etichetate
nu au precizata una din extremitat i.

In construct ia
pe care o vom face, aceste extremitat i nepre-
cizate vor identicate 2 cte 2; cu alte cu-
vinte, perechi de astfel de muchii vor iden-
ticate. Vom reprezenta simplicat graful H
astfel:
u
x
y
z
t
Daca graful H este subgraf ntr-un graf care
admite o 3- colorare a muchiilor, vom inter-
preta perechile de muchii (x, y) si (z, t), ca
reprezentnd valorea adevar, daca snt la fel
colorate, respectiv, valoarea fals, daca snt
colorate diferit.
Lema 2 si aceasta interpretare justica denumirea de
componenta inversoare pentru H (daca (x, y) este in-
trare n H atunci (z, t) este iesire si H transforma
adevar n fals si fals n adevar).
298
Denim graful 2H, considernd doua compo-
nente inversoare H carora le identicam o pereche
de muchii etichetate.
u
x
y
z
t
z
t
u
y
x

Pentru orice n 2, n N, denim graful H


n
astfel: 1. H
2
se obt ine identicnd muchiile u
si u

din 2H:
u
1
u
2

2. n > 2 H
n
se construieste astfel:
299
-consideram n copii izomorfe disjuncte ale lui
2H, 2H
i
i = 1, n, avnd perechile de muchii
libere (x
i
, y
i
), (x

i
, y

i
), (u
i
, u

i
).
-pentru i = 1, n1 identicam perechile (u
i
, u

i
)
(x

i+1
, y

i+1
).
-identicam (u
n
, u

n
) (x

1
, y

1
).
x
x
x
x
y
y
y
y
1
1
2
2
3
3
4
4
H
n
are n perechi de intrare (x
i
, y
i
) i = 1, n, si
este construit din 2n componente H.
300

In orice 3-colorare c a lui H


n
avem
a) c(x
1
) = c(y
1
) c(u
1
) = c(u

1
) (din lema 2 si
construct ia lui 2H), c(x

2
) = c(y

2
) (din iden-
ticarea de la construct ia lui H
n
) c(x
2
) =
c(y
2
) (lema 2) c(u
2
) = c(u

2
) . . . c(x
n
) =
c(y
n
) .
b) c(x
1
) ,= c(y
1
) c(x

1
) ,= c(y

1
) (lema 2)
c(u
n
) ,= c(u

n
)(din identicarea de la construct ia
lui H
n
) c(x
n
) ,= c(y
n
)(din lema 2, prin re-
ducere la absurd) c(x

n
) ,= c(y

n
) c(u
n1
) ,=
c(u

n1
) . . . c(x
2
) ,= c(y
2
).
Rezulta de aici can orice 3-colorare a muchi-
ilor lui H
n
(n 2) toate perechile de muchii
de intrare reprezinta aceeasi valoare de adevar.
Pentru n = 1 se poate construi H
1
cu o singura
pereche de intrare, care sa poata reprezenta
oricare din cele 2 valori de adevar. Am dovedit
301
Lema. 3. Pentru orice n N

se poate con-
strui n timp polinomial graful H
n
avnd n perechi
de muchii de intrare, cu proprietatea ca n
orice 3-colorare a muchiilor lui H
n
, toate cele
n perechi reprezinta aceeasi valoare de adevar
(sau, n orice pereche de intrare cele doua muchii
au culori diferite, sau, n orice pereche de in-
trare cele doua muchii snt la fel colorate).
Lema. 4. Fie F graful
a d
b
c
1
2
3

In orice 3-colorare c a muchiilor lui F, macar


una din cele 3 perechi de muchii de intrare
are muchiile la fel colorate (reprezinta valoarea
adevar).
302
Demonstrat ia este imediata si rezulta prin re-
ducere la absurd: daca exista o 3-colorare a
muchiilor lui F, astfel nct n cele 3 perechi
muchiile snt colorate diferit, atunci c(a) =
c(b), c(b) = c(c) si c(c) = c(d) (s-a utilizat lema
2), deci c(a) = c(d) contrazicnd faptul ca c
este colorare a muchiilor. Notam ca exista
colorari c cu proprietatea din enunt .
Demonstrat ia teoremei 3. Fie U = u
1
, . . . , u
n

(n N

), C = C
1
. . . C
m
(m N

), C
i
=
v
i
1
v
i
2
v
i
3
cu v
i
j
literali (v
i
j
= u

sau v
i
j
= u

)
reprezentnd datele unei probleme 3SAT.
Vom construi un graf 3-regulat G cu propri-
etatea ca

(G) = 3 daca si numai daca exista


t : U adev, fals astfel nct t(C) = adev.
Construct ia se facen timp polinomial n raport
cu n si m si se poate descrie astfel:
303
1. Pentru ecare variabila booleana u
i
i = 1, n
se determina x
i
, numarul aparit iilor (negate sau
nu) ale lui u
i
n C si se considera cte o copie
disjuncta a grafului H
x
i
.
2. Pentru ecare clauza C
j
j = 1, m se con-
sidera cte o copie disjuncta F
j
a grafului F.
3. Pentru j = 1, m, e C
j
= v
j
1
v
j
2
v
j
3
.
Daca v
j
i
(i = 1, 3) este u

si reprezinta intrarea
cu numarul y a variabilei u

atunci perechea de
intrare cu numarul y din H
x

se identica cu
perechea de intrare numarul i din componenta
F
j
.
Daca v
j
i
este u

se plaseaza o componenta in-


versoare Hntre perechea i a lui F
j
si perechea
de intrare cu numarul y din H
x

, si se identica
corespunzator intrarile lui H cu cele precizate
mai sus.
304
4. Graful obt inut la 1-3 are anumite muchii
pentru care nu s-a precizat o extremitate. Con-
sideram o copie izomorfa disjuncta a sa si iden-
ticam perechile corespunzatoare de astfel de
muchii, din cele doua grafuri. Se obt ine un
graf G 3-regulat.
Construct ia lui G si lemele 3 si 4 simuleaza
algoritmul de calcul al valorii de adevar a lui
C ntr-o atribuire t xata si deci G admite o
3-colorare daca si numai daca C este sat-
isabila.
305
4. Probleme hamiltoniene
Denit ie: Fie G = (V (G), E(G)) un (di)graf.
Un circuit C al lui G se numeste circuit hamil-
tonian daca V (C) = V (G).
Un drum deschis D al lui G se numeste drum
hamiltonian daca V (D) = V (G).
Un (di)graf care are un circuit hamiltonian se
numeste (di)graf hamiltonian.
Un (di)graf care are un drum hamiltonian se
numeste (di)graf trasabil.
Teorema. 4. (Nash-Williams 1969) Prob-
lemele urmatoare snt polinomial echivalente:
CH : Dat G graf. Este G hamiltonian ?
TR : Dat G graf. Este G trasabil ?
DCH: Dat G digraf. Este G hamiltonian ?
DTR: Dat G digraf. Este G trasabil ?
BCH: Dat G graf bipartit. Este G hamiltonian ?
306
Demonstrat ie:
CH TR
Fie G un graf si v
0
V (G) un vrf xat al
sau. Construim (n timp polinomial) un graf H
astfel nct G este hamiltonian daca si numai
daca H este trasabil.
Fie V (H) = V (G) x, y, z si E(H) = E(G)
xv
0
, yz wy [ w V (G) wv
0
E(G).
v
N (v )
G
G
v
N (v )
G
o
o
o
o
x
y
z
H
Se observa ca H este trasabil daca si numai
daca are un drum hamiltonian D cu extremitat ile
x si z (care au gradul 1 n H). D exista n H
daca si numai daca n G exista un drum hamil-
tonian cu o extremitate v
0
si cealalta un vecin
al lui v
0
, deci daca si numai daca G este hamil-
tonian.
307
TR CH
Fie G un graf. Consideram H = G + K
1
. H
este hamiltonian daca si numai daca G are un
drum hamiltonian.
G
G+K
1
Echivalent a problemelor DCHsi DTR de demon-
streaza n mod similar.
CH DCH
Fie G un graf. Fie D digraful obt inut din G
nlocuind ecare muchie cu o pereche de arce
simetrice. Orice circuit hamiltonian n G in-
duce un circuit hamiltonian n D si reciproc.
308
DCH CH
Fie D = (V (D), E(D)) un digraf. Pentru orice
vrf v V (D) asociem un drum de lungime 3,
P
v
cu extremitat ile a
v
si b
v
P
v
= (a
v
, c
v
, d
v
, b
v
, a
v
c
v
, c
v
d
v
, d
v
b
v
).
Pentru orice arc vw E(D) consideram muchia
b
v
a
w
. Fie G graful cu V (G) =
vV (D)
V (P
v
)
si E(G) =
vV (D)
E(P
v
) b
v
a
w
[ vw E(D).
Evident, G se poate construi n timp polinomial
n raport cu numarul de vrfuri ale lui D.
x
v
w
a
b
D
b
b
b
b
b
a
a
a
a
a
x
x
v
v w
w
a
a
b
b
G
Se observa ca orice circuit C al lui D induce un circuit
n G si reciproc orice circuit al lui D este generat de un
circuit al lui G. Rezulta: D este hamiltonian daca si
numai daca G este hamiltonian.
309
Sa observam ca daca C este un circuit al lui
G, acesta este generat de un circuit C

al lui D
si n plus lungimea circuitului C, l(C) satisface
l(C) = 3l(C

)+l(C

) = 4l(C

); deci orice circuit


al lui G este de lungime para, adica G este
bipartit.
Rezulta ca, de fapt, am demonstrat si ca DCH
BCH.
Cum BCH CH este evidenta, rezulta ca teo-
rema este demonstrata.
Teorema. 5. (Karp 1972) SM CH.
Demonstrat ie: Fie G = (V, E) graf si j Z
+
datele unei probleme SM. Construim n timp
polinomial (n raport cu n = [V [) un graf H
astfel nct: exista S stabila n G cu [S[ j
daca si numai daca H este hamiltonian.
310
Fie k = [V [ j. Putem presupune k > 0, altfel
luam drept H orice graf nehamiltonian.
i) Fie A = a
1
, a
2
, . . . , a
k
o mult ime de k vrfuri
distincte.
ii) Pentru orice e = uv E(G) consideram gra-
ful G

e
= (V

e
, E

e
) cu
V

e
= (w, e, i); w u, v, i = 1, 6 si
E

e
= (w, e, i)(w, e, i +1); w u, v, i = 1, 5
(u, e, 1)(v, e, 3), (u, e, 6)(v, e, 4), (v, e, 1)(u, e, 3),
(v, e, 6)(u, e, 4).
e
(v,e,1)
(v,e,6)
(v,e,2)
(v,e,3) (v,e,4)
(v,e,5)
(u,e,1)
(u,e,6)
(u,e,5) (u,e,4)
(u,e,3)
(u,e,2)
v
u
Graful G

e
a fost ales astfel nct, daca este sub-
graf al unui graf hamiltonian H si niciunul din
vrfurile (w, e, i) cu w u, v si i = 2, 5 nu are
alt vecin n H dect cele din G

e
,
311
atunci singurele posibilitat i de traversare de
catre un circuit hamiltonian al lui H a vrfurilor
din G

e
snt (a) (b) si (c) indicate n gura
urmatoare (orice alta parcurgere lasa un vrf
netraversat):
a
b
c
Deci, daca circuitul hamiltonian intra n G

e
printr-un vrf de tip u, ((u, e, 1) sau (u, e, 6))
atunci, va iesi tot printr-un vrf corespunzator
lui u.
312
(iii) Pentru ecare vrf u V , se considera,
( ntr-o ordine oarecare) toate muchiile lui G
incidente cu u: e
u
1
= uv
1
, e
u
2
= uv
2
, . . . , e
u
p
=
uv
p
, unde, p = d
G
(u).
Fie E

u
= (u, e
u
i
, 6)(u, e
u
i+1
, 1); i = 1, p 1 si
E

u
= a
i
(u, e
u
1
, 1), a
i
(u, e
u
p
, 6); i = 1, k.
e
e
e
u
v
v
v
1
2
p
1
2
p
(u,e ,1)
(u,e ,6)
(u,e ,1) (u,e ,6) (u,e ,1)
(u,e ,6)
1
2
p u
u
u u
u
u
a a
1 k
p
1
2
Graful H va avea
V (H) = A
eE
V

e
si
E(H) =
eE
E

e

uV
(E

u
E

u
).
Avem [V (H)[ = k +12 [E[; [E(H)[ = 14 [E[ +
2k [V
0
[+2 [E[[V
0
[ , unde V
0
V este mult imea
vrfurilor neizolate din G; deci H se poate con-
strui n timp polinomial n raport cu [V [.
313
Exemplu:
G k=2
a
a
1
2
1
2
3
4
1
1
2
2
2
2
4 4
3
3
4
4
1. Daca H este hamiltonian, atunci exista C
un circuit hamiltonian n H. Cum A este o
mult ime stabila n H, A va descompune cir-
cuitul Cn exact k drumuri disjuncte (cu except ia
extremitat ilor): D
a
i
1
a
i
2
, D
a
i
2
a
1
3
, . . . , D
a
i
k
a
i
1
.
Fie D
a
i
j
a
i
j+1
un astfel de drum (j + 1 = 1 +
(j(mod k)) ).
Din construct ia lui H, rezulta ca primul vrf
care urmeaza lui a
i
j
pe acest drum va (v
i
j
, e
v
i
j
1
, 1)
sau (v
i
j
, e
v
i
j
p
, 6) unde p = d
G
(v
i
j
) v
i
j
V .
314

In continuare, D
a
i
j
a
i
j+1
va intran componenta
G
e
1
sau G
e
p
din care va iesi tot printr-un vrf
corespunzator lui v
i
j
. Daca vrful urmator nu
este a
i
j+1
, se intra ntr-o componenta core-
spunzatoare urmatoarei muchii incidente cu v
i
j
si va iesi din aceasta, tot printr-un vrf core-
spunzator lui v
i
j
.
a
a
1
2
1
2
3
4
1
1
2
2
2
2
4 4
3
3
4
4
315
Rezulta ca drumului D
a
i
j
a
i
j+1
i se poate
asocian mod unic vrful v
i
j
V si ca prima si
ultima muchie a acestui drum snt a
i
j
(v
i
j
, e
v
i
j
t
, x),
a
i
j+1
(v
i
j
, e
v
i
j
t

, x

) cu t = 1 si t

= d
G
(u), x = 1,
x

= 6 sau t = d
G
(u), t

= 1, x = 6, x

= 1.
Aceasta implica faptul ca v
i
j
snt distincte.
Fie V

= v
i
1
, v
i
2
, . . . , v
i
k
. Cum C este hamil-
tonian n H, rezulta ca e E exista un drum
D
a
i
j
a
i
j+1
care trece prin G

e
deci exista v V

incident cu e. Rezulta ca S = V V

este sta-
bilan G si [S[ = j. Deci am obt inut ca daca H
este hamiltonian, n G exista o mult ime stabila
de cardinal j, prin urmare raspunsul la SM este
da.
2. Presupunem ca raspunsul la SM este da,
deci n G exista S
0
stabila cu [S
0
[ j. Exista
atunci S S
0
stabila cu [S[ = j.
316
Fie V

= V S = v
1
, v
2
, . . . , v
k
. Consideram
n H pentru ecare muchie e = uv E:
- cele doua drumuri din G

e
situat ia (a), daca
u, v V

,
- drumul din G

e
situat ia (b) daca u V

, v / V

- drumul din G

e
situat ia (c) daca u / V

, v V

.
Daca la reuniunea acestor drumuri adaugam
muchiile
a
i
(v
i
, e
v
i
1
, 1),
(v
i
, e
v
i
1
, 6)(v
i
, e
v
i
2
, 1), . . . , (v
i
, e
v
i
p1
, 6)(v
i
, e
v
i
p
, 1),
(v
i
, e
v
i
p
, 6)a
i+1
, (cu p = d
G
(v
i
)) pentru i = 1, k,
se obt ine un circuit hamiltonian n H.
317
5. Problema comisului voiajor.
Dat G = (V, E) un graf si o funct ie de pon-
dere d : E R
+
, sa se determine un circuit
hamiltonian H
0
n G astfel nct suma ponder-
ilor muchiilor lui H
0
sa e minima.
Daca graful G reprezinta ret eaua rutiera ntre
o mult ime V de localitat i, iar funct ia d avnd
interpretarea d(uv) = distant a pe ruta directa
dintre localitat ile u si v, si se xeaza un cen-
tru v
0
V , atunci circuitul hamiltonian H
0
reprezinta cel mai economic mod de vizitare
a localitat ilor din V de catre un comis voiajor
ce pleaca din centrul v
0
si se ntoarce n acelasi
loc, dupa ce a vizitat ecare localitate exact o
data.
Problema este interesanta, nu pentru rezolvarea acestei
aplicat ii, mai mult sau mai put in importanta, ci pentru
ca ea apare n numeroase probleme de optimizare dis-
creta, motivate, de exemplu, de construirea circuitelor
integrate pe scara mare.
318

In cele ce urmeaza, vom considera o forma


echivalenta a ei
CV Dat n Z
+
(n 3) si d : E(K
n
) R
+
,
sa se determine H
0
circuit hamiltonian n gra-
ful complet K
n
cu d(H
0
) minim printre toate
circuitele hamiltoniene ale lui K
n
.
Observat ii 1
0
. d(H
0
) =

eE(H
0
)
d(e).
2
0
. Daca graful pentru care se cere rezolvarea
nu este complet, se introduc muchiile lipsa,
atribuindu-le drept ponderi, M R
+
cu M >
[V [ max
eE
d(e).
Notam aici, can enunt ul problemei ne-am lim-
itat numai la cazul simetric, o problema sim-
ilara se poate considera si pentru G digraf oare-
care.
3
0
.

In studiul complexitat ii acestei probleme
vom considera ca d(e) Z
+
.
319
Problema de decizie asociata va
DCV
Instant a: n Z
+
(n 3), d : E(K
n
) Z
+
si B Z
+
Intrebare: Exista H
0
circuit hamiltonian n K
n
astfel nct d(H
0
) B ?
Teorema. 6. CH DCV .
Demonstrat ie: Fie G = (V, E), ([V [ = n)
reprezentnd datele unei probleme CH. Con-
struimn timp polinomial o problema DCV cu
proprietatea ca n K
n
exista un circuit hamil-
tonian de pondere totala care nu depaseste B
daca si numai daca G este hamiltonian.
Fie
d(vw) =
_
_
_
1 daca vw E(G)
2 daca vw E(G).
si consideram B = n.
320
Atunci n K
n
exista un circuit hamiltonian de
pondere n daca si numai daca G are un cir-
cuit hamiltonian.
pondere 1
pondere 2
G
Rezulta, de aici, dicultatea rezolvarii proble-
mei CV.
321
O solut ie pentru abordarea problemei CV, ar
aceea de a considera algoritmi A, care pentru
datele unei probleme CV vor oferi n timp poli-
nomial (n raport cu n) un circuit hamiltonian
H
A
, care va aproxima solut ia optima H
0
.
Masuri ale ecient ei unei astfel de euristici
A pot considerate numerele:
R
A
(n) = sup
d:E(K
n
)R
+
d(H
0
),=0
d(H
A
)
d(H
0
)
R
A
= sup
n3
R
A
(n).
Evident, s-ar dori ca aceste numere sa e nite.

In cazul general, condit ia ca R


A
sa e nit este
la fel de dicila cu aceea a rezolvarii eciente
exact a problemei CV.

In adevar, are loc
Teorema. 8. Daca exista un algoritm aprox-
imativ A cu timp de lucru polinomial pentru
CV, astfel nct R
A
< , atunci CH se poate
rezolva n timp polinomial.
322
Demonstrat ie: Fie A un algoritm cu timp de
lucru polinomial si cu R
A
< . Exista deci
k Z
+
astfel nct R
A
k.
Fie G = (V, E) un graf arbitrar, intrare pentru
CH. Daca n = [V [ atunci denim d : E(K
n
)
Z
+
prin
d(uv) =
_
_
_
1 daca uv E
kn daca uv / E
Evident, G este hamiltonian daca si numai daca
solut ia optima H
0
a lui CV astfel construit sat-
isface d(H
0
) = n.
Aplicam A pentru rezolvarea problemei CV. Se
obt ine n timp polinomial o solut ie H
A
.
Daca d(H
A
) kn, atunci d(H
A
) = n si H
A
=
H
0
.
Daca d(H
A
) > kn, atunci d(H
0
) > n.

In adevar,
presupunnd ca d(H
0
) = n, avem
d(H
A
)
d(H
0
)
k,
deci d(H
A
) kd(H
0
) = kn, contradict ie.
323
Rezulta ca G este hamiltonian daca si numai
daca d(H
A
) kn, si cum timpul de lucru al
lui A este polinomial, rezulta ca CH se poate
rezolva n timp polinomial.
pondere 1
pondere 7k
G
Observat ie. Enunt ul teoremei se poate for-
mula echivalent si astfel:
Daca P ,= NP, atunci nu exista un algoritm
aproximativ A polinomial si cu R
A
< .
324
VII. Abordari ale unor probleme
NP-dicile pe grafuri.
1. Euristici
Se proiecteaza algoritmi ecient i care, desi nu
rezolva problema, ofera solut ii aproximative,
care se pot analiza si uneori se pot folosi n
metaeuristici (de exemplu, cele care imita pro-
cese din natura). Pentru unele euristici se pre-
cizeaza si instant e ale problemelor pentru care
ele funct ioneaza corect.
Partizanii unor astfel de abordari apeleaza la
asa numita no free lunch theorem (Wolpert
and Macready, 1994).
all non-repeating search algorithms have the
same mean performance when averaged uni-
formly over all possible objective functions f :
X Y
325
1.1 Colorarea varfurilor unui graf
Algoritmul greedy de colorare
Un mod simplu si natural de a colora un graf,
cu nu foarte multe culori, este dat de urmatorul
algoritm:
pornind de la o ordine xata a varfurilor lui G,
v
1
, v
2
, . . . , v
n
, parcurgem aceasta lista, colorand
ecare varf v
i
cu prima culoare disponibila, adica
cu cea mai mica culoare (numar ntreg pozitiv)
nefolosita de nici unul dintre vecinii lui v
i
, deja
ntalnit i pana n acel moment.
Acesta metoda poarta denumirea de algoritmul greedy
de colorare, datorita alegerii, de ecare data,a celei mai
mici culori care s-ar putea folosi.
Fie G = (V, E), cu V = 1, 2, . . . , n si o
permutare a lui V (ce corespunde unei ordonari
a mult imii varfurilor).
Algoritmul construieste colorarea c ce utilizeaza
(G, ) culori,
c : 1, 2, . . . , n 1, 2, . . . , (G, ).
326
Algoritmul greedy-color
- c(
1
) 1; (G, ) 1; S
1

1
;
- for i 2 to n do
- j 0;
- repeat
- j j +1;
- determina primul varf (conform ordonarii
- ), v din S
j
a. .
i
v E(G);
- if v exista then
- first(
i
, j) v
- else
- first(
i
, j) 0;
- c(
i
) j;
- S
j
S
j

i
;
-
- until first(
i
, j) = 0 or j = (G, );
- if first(
i
, j) ,= 0 then
- c(
i
) j +1;
- S
j+1

i
;
- (G, ) j +1;
-
-
327
Sa observam ca folosind algoritmul greedy nu
vom obt ine niciodata mai mult de 1 + (G)
culori.
Rezulta ca (G) 1 +(G).

Insa (G) se poatendeparta oricat de mult de


(G) si exista grafuri si permutari pentru care
algoritmul poate sa greseasca la fel de mult.
Un astfel de exemplu este urmatorul, unde gra-
ful G este obt inut din graful bipartit complet
K
n,n
, avand mult imea de varfuri 1, 2, . . . , n
1

, 2

, . . . , n

, din care se elimina muchiile


11

, 22

, . . . , nn

.
Fixand ordinea 1, 1

, 2, 2

, . . . , n, n

algoritmul va
obt ine colorarea c cu c(1) = c(1

) = 1, c(2) =
c(2

) = 2, . . . , c(n) = c(n

) = n avand deci n
culori; nsa, cum G este bipartit, (G) = 2.
328
1
5
1
5
2
2
3
3
4 4
pi: 1, 1, 2, 2, 3, 3, 4, 4, 5, 5
Este usor de vazut ca, pentru orice graf G,
exista totusi permutari pentru care algoritmul
ofera o colorare optimala.

Intr-adevar daca S
1
, S
2
, . . . , S
(G)
sunt clasele
de colorare corespunzatoare unei colorari opti-
male, atunci pentru orice permutare care
pastreaza ordinea claselor (adica daca i < j,
v S
i
si w S
j
atunci v se aa naintea lui w
n permutare), executand algoritmul greedy, se
vor obt ine (G) culori.
329
Teorema. 1. Daca pentru orice vw E si
orice j < minc(v), c(w) astfel ncat first(v, j) <
first(w, j) (n ordonarea ) avem ca vfirst(w, j)
E atunci (G, ) = (G).
Condit ia din enunt poate vericata n timp
liniar n raport cu numarul de muchii ale gra-
fului si poate reprezenta un ultim pas al algo-
ritmului.
first (j ,v)
first (j ,w)
S
j
v
w
S
c (v)
S
c (w)

In demonstat ia teoremei se arata ca, atunci cand condit ia


este ndeplinita, (G, ) = (G) si prin urmare, n acest
caz, se obt ine si numarul de clica al grafului .
Pe de alta parte, exista grafuri pentru care aceasta
condit ie nu va ndeplinita de nici o permutare.
330
Algoritmul Dsatur { Degree of Saturation}
Acest algoritm ( Brelaz, 1979 ) este o metoda
secvent iala dinamica de colorare.
Ideea este de colora varfurile pe rand, alegand
de ecare data varful cu un numar maxim de
constrangeri privitoare la culorile disponibile aces-
tuia.
Aceasta abordare estentr-un fel opusa primeia
(cea geedy) deoarece se aleg varfuri care formeaza
clici mari n raport cu varfurile deja alese
(spre deosebire de mult imi stabile mari n cazul
greedy).
Daca G este un graf si c o colorare part iala a
varfurilor lui G, denim gradul de saturat ie al
unui varf v, notat d
sat
(v), ca ind numarul de
culori diferite din vecinatatea acestuia.
331
Algoritmul DSatur
- ordoneaza varfurile n ordinea descrescatoare a gradelor lor;
- atribuie unui varf de grad maxim culoarea 1;
- while exista varfuri necolorate do
- alege un vf. necol. cu gr. de satur. maxim; daca acesta
- nu-i unic, alege un vf. de grad maximn subgr.necolorat;
- coloreaza varful ales cu cea mai mica culoare posibila;
-
4
1
5
2
3
6
Numarul de culori
gasite este chiar numarul
cromatic
Teorema. 2. Algoritmul DSatur garanteaza
gasirea numarului cromatic pentru grafurile bi-
partite.
332
1.2 Problema comisului voiajor
Cele mai performante euristici se bazeaza pe
principiul optimizarii locale:
- se porneste cu un circuit hamiltonian ales
aleator sau obt inut cu o euristica de tip con-
struct ie (tour-construction heuristic), de ex-
emplu greedy;
- sencearca repetat imbunatat iri locale, trecand
de la solut ia curenta la o solut ie vecina din
spat iul solut iilor ( neighborhood search).
Cele mai cunoscute modicari locale sunt asa
numitele 2-opt, 3-opt sau combinat ii ale aces-
tora care au condus la faimosul algoritm Lin-
Kernighan.
Figura urmatoare sugereaza cele doua operat ii
2-opt si 3-opt.
333
c
a b
d c d
a b
2-opt
a b
e
f
d
c
doua operatii 3-opt posibile
Pentru reprezentarea circuitului hamiltonian se utilizeaza
structura de date Tour care trebuie sa suporte (ecient)
urmatoarele 4 operat ii:
Next(a) : ntoarece varful urmator lui a pe circuit;
Prev(a) : ntoarece varful dinaintea lui a pe circuit;
Between(a, b, c) : ntoarce true daca la traversarea cir-
cuitului din a se ntalneste mai ntai b si apoi c;
Flip(a, b, c, d) : Parametrii verica a = Next(b) si d =
Next(c). Se actualizeaza circuitul prin nlocuirea
muchiilor ab si cd cu bc si ad. Se actualizeaza ori-
entarea circuitului (pointerii Next si Prev) n mod
corespunzator.
334
Operat ia 3-opt se realizeaza cu ajutorul a doua
sau trei Flip. Pentru evitarea formarii de cir-
cuite disjuncte este nevoie de funct ia Between.
Operat ia mai complicata -opt, utilizata de al-
goritmul Lin-Kernighan se exprima ca un 3-opt
si o secvent a de 2-opt.
Principala probleman implementarea operat iei
Flip este de a determina ecient sirul de schimba-
ri ale pointerilor Next si Prev (inversarea unuia
din cele doua drumuri; care din ele ?).
Un algoritm -opt se bazeaza pe conceptul de
-optimalitate:
Un tur este -optimal (sau simplu -opt) daca
nu este posibil sa se obt ina un tur mai scurt (de
cost mai mic) prin nlocuirea unei mult imi de
muchii ale sale cu alta mult ime de muchii.
Observat ie: Daca un tur este -optimal atunci
el este

-optimal pentru orice

, 2

.
De asemenea, un tur cu n varfuri este optimal
daca si numai daca este n-optimal.
335
Numarul operat iilor necesare testarii tuturor
-schimbarilor posibile creste rapid pentru n
mare.

Intr-o implementare naiva, testarea unei
-schimbari necesita O(n

) operat ii. Ca ur-


mare, cele mai folosite valori sunt 2, 3
(dar se cunosc si abordari cu = 4, 5).
E dicil sa se estimeze ce valoare a lui tre-
buie aleasa pentru ca sa se obt ina cel mai bun
compromis ntre timpul de execut ie si calitatea
solut iei modicate.
Lin si Kernighan au abordat aceasta problema
prin considerarea unei metode numita variable
-opt: algoritmul va schimba valoarea lui n
timpul execut iei.
La ecare iterat ie sencearca valori crescatoare
pentru pentru a obt ine un tur mai scurt.
336
Fie T turul curent. La ecare iterat ie a al-
goritmului se cauta mult imile de muchii X =
x
1
, . . . , x
r
si Y = y
1
, . . . , y
r
astfel canlocind
X cu Y n T, sa se obt ina un tur mai bun.
Aceasta interschimbare o numim r-opt move.
Cele 2 mult imi se construiesc element cu element. Init ial
sunt vide si n pasul i se adauga x
i
la X si y
i
la Y .
Criteriile de selectare ale acestor muchii, urmaresc ecient a
algoritmului si n acelasi timpmbunatat irea turului curent:
-Criteriul de schimb secvent ial: x
i
si y
i
sunt
adiacente si la fel x
i+1
si y
i+1
. Daca t
1
este
una din extremitat ile lui x
1
, atunci x
i
= t
2i1
t
2i
,
y
i
= t
2i
t
2i+1
si x
i+1
= t
2i+1
t
2i+2
.
t
t
t
t
x
i
x
i+1
2i
2i-1
2i+2
2i+1
y
i
y
i+1
Deci x
1
, y
1
, x
2
, y
2
, x
3
, . . . , x
r
, y
r
formeaza muchiile unui drum.
Pentru schimbul secvent ial se impune si ca acest drum
sa e nchis : y
r
= t
2r
t
1
.
337
-Criteriul de admisibilitate: se va alege x
i
=
t
2i1
t
2i
astfel ca daca t
2i
se va uni cu t
1
, congu-
rat ia care rezulta sa e tur. Se aplica pentru
i 3 si garanteaza ca este posibil sa nchidem
un tur. Este introdusn algoritm pentru reduc-
erea timpului de execut ie si simplicarea imple-
mentarii.
-Criteriul castigului: se cere ca y
i
sa e ales
astfel ca sa existe un castig; G
i
trebuie sa e
pozitiv; daca g
i
= d(x
i
) d(y
i
) este castigul
interschimbarii lui x
i
cu y
i
, atunci G
i
= g
1
+g
2
+
+ g
i
. Rat iunea alegerii acestui criteriu este
ca daca suma unei secvent e de numere este
pozitiva, atunci exista o permutare circulara a
acestei secvent e astfel ca orice suma part iala
este pozitiva.
-Criteriul dijunctivitat ii: se impune ca mult imile
X si Y sa e disjuncte. Aceasta simplica im-
plementarea, reduce timpul de execut ie si da
un criteriu efectiv de oprire.
338
Linia algoritmului Lin & Kernighan
1. Genereaza (random) un tur init ial T;
2. i 1; Alege t
1
;
3. Alege y
1
= t
1
t
2
T;
4. Alege y
1
= t
2
t
3
, T a.. G
1
> 0; If , goto 12;
5. i ++;
6. Alege x
i
= t
2i1
t
2i
T a..
(a) daca t
2i
e unit cu t
1
se obt ine un tur T

si
(b) x
i
,= y
s
pentru tot i s < i
If T

e mai bun ca T then e T = T

si goto 2;
7. Alege y
i
= t
2i
t
2i+1
, T a..
(a) G
i
> 0,
(b) y
i
,= x
s
pentru tot i s < i si
(c) x
i+1
exista.
If y
i
exista then goto 5;
8. If mai alte alegeri pt. y
2
then i 2 si goto 7;
9. If mai alte alegeri pt. x
2
then i 2 si goto 6;
10 If mai alte alegeri pt. y
1
then i 1 si goto 4;
11 If mai alte alegeri pt. x
1
then i 1 si goto 3;
12 If mai alte alegeri pt. t
1
then goto 2;
13 Stop (sau goto 1).
339

I n descrierea anterioara alege nseamna se-


lectarea unei alternative nencercate deja (pen-
tru turul curent). De exemplu n pasul 3 avem
doua posibilitat i de a alege o muchie de pe tur
incidenta cu t
1
.

I n pasul 6 exista doua alegeri pentru x


i
. Pen-
tru un y
i1
(i 2) numai una dintre acestea va
face posibilanchiderea turului (prin adaugarea
lui y
i
). Cealalta alegere va conduce la aparit ia
a doua subtururi disjuncte. Totusi pentru i = 2
este permisa o astfel de alegere neadmisibila:
t
t
t
t
x
1
x
2
2
1
3
4
y
1
y
2
Daca y
2
va ales astfel ca t
5
sa e ntre t
2
si
t
3
, turul va putea nchis n urmatorul pas.
340
t
t
t
t
x
1
x
2
2
1
3
4
y
1
y
2
x
3
t
5
Atunci, t
6
poate ales n ambele part i ale lui
t
5
.
Daca nsa, y
2
va ales astfel ca t
5
sa e ntre
t
4
si t
1
, atunci exista doar o singura alegere
pentru t
6
(ntre t
4
si t
5
) si t
7
trebuie sa se
ae ntre t
2
si t
3
. Dar atunci t
8
trebuie sa
e de cealalta parte a lui t
7
; algoritmul alege
alternativa cu d(t
7
t
8
) maxima.
t
t
t
t
x
1
x
2
2
1
3
4
y
1
y
2
t
5
x
3
t
6
t
7
x
4
341
Pasii 8-12 ai algoritmului cauzeaza backtracking-
ul. El este permis numai daca nu se obt ine o
mbunatat ire si numai la nivelele 1 si 2.
Algoritmul se termina cu un tur dupa ce toate
valorile posibile ale lui t
1
au fost examinate fara
mbunatat ire.
Numeroase alte modicari ale metodei de baza
au fost examinate. De exemplu, Lin si Kernighan
limiteaza cautarea lui y
i
= t
2i
t
2i+1
la vecinii de
pe tur ai lui t
2i
la distant a cel mult 5.
Unele reguli au fost alese pentru salvarea tim-
pului de execut ie, limitarea cautarii, iar altele
pentru direct ionarea cautarii.
Se poate consulta articolul : The Traveling
Salesman Problem: A Case Study in Lo-
cal Optimization David S. Johnson Lyle A.
McGeoch, Local Search in Combinatorial Op-
timization, E. H. L. Aarts and J. K. Lenstra
(eds.), John Wiley and Sons, London, 1997,
pp. 215-310.
342
O alta euristica populara pentru problemele n
care funct ia de distant a satisface inegalitatea
triunghiulara, este data de Christodes.
Spre deosebire de cazul general cand am demon-
strat ca nu se poate spera la o euristica poli-
nomiala A cu R
A
nita, daca P ,= NP, n acest
caz se poate demonstra urmatoarea
Teorema. ( Christodes,1973) Fie CV cu d
satisfacnd
v, w, u V (K
n
)distincte d(vw) d(vu)+d(uw).
Exista un algoritm aproximativ A pentru CV
care satisface R
A
=
3
2
si are timp de lucru poli-
nomial.
Demonstrat ie:
Consideram urmatorul algoritm A:
343
1
0
. Se determina T
0
mult imea muchiilor unui
arbore part ial de cost minimn K
n
(costul
muchiei e ind d(e) ). Problema se rezolva
n timp polinomial cu algoritmul lui Prim.
2
0
. Se determina M
0
un cuplaj perfect n sub-
graful indus de vrfurile de grad impar ale
arborelui T
0
si de cost minim. Problema se
rezolva n timpul O(n
3
) utiliznd algoritmul
lui Edmonds.
3
0
. Se considera multigraful obt inut din <
T
0
M
0
>
K
n
, prin duplicarea muchiilor din
T
0
M
0
.

In acest multigraf exista un par-
curs Eulerian nchis, ale carui vrfuri snt
(v
i
1
, v
i
2
, . . . , v
i
1
). Eliminnd orice aparit ie mul-
tipla a unui vrf n acest sir cu except ia
primului si ultimului vrf, se obt in vrfurile
unui circuit hamiltonian H
A
n K
n
cu muchi-
ile H
A
= (v
j
1
v
j
2
, v
j
2
v
j
3
, . . . , v
j
n
v
j
1
) (Acest pas
necesita O(n
2
) operat ii).
344
Arborele T
o
Cuplajul M
o
Graf Eulerian
Turul H
1
2
3
4
5
6
7
8
9
10
11
A
345
H
A
este solut ia aproximativa a problemei CV.
Fie m =
n
2
si H
0
solut ia optima. Vom arata
(cf. Cornuejols si Nemhauser) ca
n 3 d(H
A
)
3m1
2m
d(H
0
)
Presupunem ca H
0
= v
1
v
2
, v
2
v
3
, . . . , v
n
v
1
(even-
tual, schimbnd numerotarea vrfurilor). Fie
A = v
i
1
, v
i
2
, . . . , v
i
2k
vrfurile de grad impar
ale lui < T
0
>
Kn
, i
1
< i
2
< . . . < i
2k
.
Daca H = v
i
1
v
i
2
, v
i
2
v
i
3
, . . . , v
i
2k1
v
i
2k
, v
i
2k
v
i
1
,
avem din inegalitatea triunghiulara, d(H) d(H
0
),
prinnlocuirea ponderii ecarei corzi d(v
i
j
v
i
j+1
)
cu suma ponderilor muchiilor de pe circuitul H
0
subntinse de v
i
j
v
i
j+1
.
Pe de alta parte, H este circuit de lungime
para, deci este reuniunea a doua cuplaje per-
fecte n [A]
K
n
, M
1
M
2
.
Presupunem ca d(M
1
) d(M
2
).
346
H
o
H
M
1
M
2
H
1
H
2
347
Din alegerea lui M
0
, avem d(M
0
) d(M
1
)
1
2
(d(M
1
) +d(M
2
)) =
1
2
d(H)
1
2
d(H
0
).
Fie R
+
astfel nct d(M
0
) = d(H
0
).
Evident, 0 <
1
2
.
Partit ionam H
0
n H
1
H
2
, punnd n H
i
toate
muchiile lui H
0
subntinse de o coarda din M
i
(v
i
j
v
i
j+1
M
i
v
i
j
v
i
j
+1
, . . . , v
i
j+1
1
v
i
j+1
H
i
).
Din inegalitatea triunghiulara obt inem:
d(H
i
) d(M
i
) i = 1, 2.
Macar unul din H
1
sau H
2
are cel mult m =
n
2
muchii.
Presupunem ca H
1
. Deoarece d(H
1
) d(M
1
) d(M
0
) =
d(H
0
), rezulta ca exista e H
1
: d(e)

m
d(H
0
).
Fie T arborele part ial obt inut din H
0
prin nlatu-rarea
unei muchii de pondere maxima. Avem
d(T) = d(H
0
) max
eH
0
d(e) d(H
0
)

m
d(H
0
).
Cum T
0
este arbore part ial de cost minimn K
n
, rezulta
d(T
0
) d(H
0
)(1

m
).
Folosind inegalitatea triunghiulara,
d(H
A
) d(T
0
) + d(M
0
) d(H
0
)(1

m
) + d(H
0
) =
(1 +
(m1)
m
)d(H
0
).
Cum
1
2
se obt ine d(H
A
)
3m1
2m
d(H
0
) pentru n 3.
348
2. Metode care imita natura
In ultimii 30 de ani s-au dezvoltat numeroase
metaeuristici inspirate din comportamentul unor
sisteme biologice sau zice ale lumii reale.
Metaeuristica simulated annealing.
Una din metaeuristicile populare utilizate pen-
tru rezolvarea problemelor de optimizare NP-
dicile este calirea simulata, metoda inspirata
din termodinamica , inventata independent de
Kirkpatrick, Gelatt si Vechi n 1983 si de

Cerny
n 1985.
Ca orice metoda Monte Carlo, repetarea al-
goritmului cu diferit i parametri de start ofera
sansa imbunatat irii solut iilor gasite, care nu
sunt n general, si solut ii optime.
349

In termodinamica , se poate interpreta calirea


(intilnita tradit ional n prelucrarea metalelor n
erariile cu forja , baros si nicovala ) ca un pro-
ces stohastic ce determina o aranjare a atom-
ilor care minimizeaza energia totala a unui corp.
La temperaturi nalte, atomii se misca liber si se muta cu
rapiditaten pozit ii care cresc energia totala. Pe masura
ce temperatura este scazuta, atomii se apropie gradual
de o dispunere laticeala regulata si numai ocazional si
maresc energia. Aceste cresteri ocazionale de energie
joaca un rol crucial n calire : ele permit iesirea din
minimele locale printr-o crestere temporara de energie.
La temperaturi nalte, astfel de salturi apar cu mare
probabilitate, iar la temperaturi joase ele apar rar. Tem-
peratura este scazuta lent pentru a ment ine echilibrul
termal. Cand atomii sunt n echilibru la temperatura
T, probabilitatea ca energia lor totala sa e E este
proport ionala cu e

E
kT
, unde k este constanta lui Bolz-
mann.
350

In consecint a, probabilitatea ca energia sa e


E +dE poate exprimata,
Pr(E +dE) = Pr(E) e

dE
kT
,
adica probabilitatea de crestere a energiei scade
odata cu temperatura.
Calirea simulata este o metoda computat ionala
care imita modul natural de determinare a unei
congurat ii care minimizeaza energia unui sis-
tem. Atunci cnd se doreste minimizarea unei
funct ii f : D R, vom interpreta domeniul
de denit ie al funct iei, D, ca ind mult imea
congurat iilor posibile ale sistemului, iar funct ia
f ca ind energia acestuia.
O variabila ctiva T, asociata procesului de
cautare, va juca rolul temperaturii iar constanta
lui Bolzmann va considerata 1.
351
Algoritm de calire simulata
1. Se considera un plan de calire:
- temperatura init iala T
start
- congurat ia init iala x
start
D
- temperatura nala T
min
- o funct ie de reducere lenta a temperaturii
decrease (T)
- nr. maxim de ncercari de mbunatat ire a solut iei
la ecare prag de temperatura attempts
- nr. maxim de schimbari ale solut iei
la ecare prag de temperatura changes.
2. T T
start
; x
old
x
start
while T > T
min
do
na 0; nc 0
while na < attempts and nc < changes do
genereaza o solut ie noua x
new
; na ++;
E f(x
old
) f(x
new
);
If E < 0 then x
old
x
new
; nc ++
else
genereaza q (0, 1) un nr. aleator
if q < e

E
T
then x
old
x
new
; nc ++

decrease(T)

3. return x
old
352
Planul de calire se stabileste adeseori prin ex-
perimente (tuning ) asupra clasei de probleme
la care se aplica. Modul n care se permite,
la un anumit nivel de temperatura , ca unele
solut ii noi care nu micsoreaza valoarea funct iei
sa e considerate (cu scopul parasirii minimelor
locale) poarta denumirea inventatorului : schema
Metropolis.
Pentru aplicarea calirii simulate pentru rezolvarea
problemei comisului voiajor, se porneste cu un
tur ales aleator, iar trecerea de la o solut ie
curenta la o solut ie vecinan spat iul solut iilor se
realizeaza de obicei cu ajutorul unei 2-move.
Se poate lua T
start
= O(

n), attempts = 100n,


changes = 10n, decrease(T) = 0.95T si T
min
=
O(1).
353
VIII. GRAFURI PLANARE
1. Proprietat i de baza ale grafurilor planare
Denit ie. Fie G = (V, E) un graf si S o suprafat a
n R
3
. Spunem ca G este reprezentabil pe S
daca exista G

= (V

, E

) un graf astfel nct:


a) G

= G

.
b) V

e o mult ime de puncte distincte din S.


c) Orice muchie e

este o curba simpla


cont inutan S care uneste cele doua extremitat i.
d) Orice punct al lui S este sau vrf al lui G

,
sau prin el trece cel mult o muchie a lui G

.
G

se numeste reprezentare a lui Gn S.


Daca S este un plan atunci G se numeste pla-
nar iar G

o reprezentare planara a lui G.


Daca S este un plan si G

este un graf care


satisface b) c) si d) de mai sus atunci G

se
numeste graf plan.
354
Lema. 1. Un graf este planar daca si numai
daca este reprezentabil pe o sfera.
Demonstrat ie. Fie G planar si G

o reprezentare
planara a sa n planul . Consideram un punct
x al lui si S o sfera tangenta la n x.
Fie y punctul diametral opus al lui x pe sfera.
Denim : S considernd pentru orice
punct M al planului , (M) cel de-al doilea
punct de intersect ie al dreptei My cu sfera S.
Evident este o biject ie si deci (G

) este
reprezentarea lui G pe sfera ( este proiect ia
stereograca).
x
y
pi
S
G

355
Reciproc, daca G este reprezentabil pe o sfera
S: se alege un punct y pe sfera, se considera
punctul x diametral opus lui y pe sfera, se con-
struieste un plan tangent sferei S n punctul
x si se deneste : S considernd pen-
tru orice punct M al sferei, (M) intersect ia
dreptei yM cu planul . Imaginea prin a
reprezentarii lui G pe sfera va o reprezentare
planara a lui G.
Denit ie. Fie G un graf plan. Dacandepartam
punctele lui G (vrfurile si muchiile sale) din
plan se obt ine o reuniune de regiuni conexe
(orice doua puncte se pot uni printr-o curba
simpla cont inuta n regiune) ale planului, care
se numesc fet ele lui G.
Evident, orice graf plan are un numar nit de
fet e, dintre care una singura este nemarginita
si se numeste fat a exterioara a lui G.
356
Frontiera unei fet e este mult imea muchiilor lui
G cont inute n nchiderea acestei fet e.
Orice circuit al lui Gmparte punctele planului
n doua regiuni conexe, deci orice muchie a
unui circuit al grafului G se aa n frontierele
a doua fet e.
Un graf plan, mpreuna cu mult imea fet elor
sale se numeste harta planara (uneori, n aceasta
denit ie se impune ca graful sa e 2-conex;
atunci fet ele hart ii planare se numesc t ari si
doua t ari snt vecine daca frontierele lor au
macar o muchie comuna; aceasta corespunde
aspectelor intuitive de la hart ile geograce).
Unui graf planar i se pot asocia reprezentari
planare diferite.

In gura alaturata snt desen-
ate trei reprezentari planare diferite ale aceluiasi
graf:
357
1
5
2
3 4
6
8
7
6
8 7
1
5
2
4
3
1
6
2
3 7
5
4 8
f1
f2
f3
f4
f5 f1
f2
f3
f4
f5
f1
f2
f3
f4
f5
Un instrument util n caracterizarea si recunoasterea
grafurilor planare este urmatoarea observat ie:
Lema. 2. Orice reprezentare planara a unui
graf poate transformata ntr-o reprezentare
diferita astfel nct o fat a specicata a sa sa
devina fat a exterioara.
Demonstrat ie: Fie G

o reprezentare planara a lui G si F


o fat a a lui G

. Consideram G
0
o reprezentare pe sfera
a lui G

(construita, de exemplu, ca n lema 1) si e


F
0
fat a corespunzatoare a lui F (proiect ia stereograca
transforma orice fat a tot ntr-o fat a). Alegem un punct
y din interiorul fet ei F
0
, consideram x punctul diametral
opus pe sfera lui y si efectuam proiect ia stereograca
pe planul tangent sferei n punctul x. Graful plan
G

astfel obt inut va avea fat a exterioara (F


0
) care are
aceeasi frontiera cu fat a F din reprezentarea G

.
358
Este aproape evident ca orice doua reprezentari
planare ale aceluisi graf au acelasi numar de
fet e. Acest lucru este mai bine precizat de
urmatoarea teorema.
Teorema. 1. (Formula lui Euler) Fie G =
(V, E) un graf plan conex cu n vrfuri, m muchii
si f fet e. Atunci
f = mn +2
Demonstrat ie: Induct ie dupa numarul fet elor
lui G. Daca f = 1, atunci G nu are circuite
si cum este si conex, rezulta ca G este arbore,
deci m = n 1 si prin urmare teorema are loc.

In pasul inductiv, presupunem teorema adevara-


ta pentru orice graf plan si conex cu mai put in
de f( 2) fet e. Exista macar o muchie e, care
nu este punte (altminteri G ar arbore si ar
avea o singura fat a). Rezulta ca e apart ine
frontierei a exact doua fet e ale lui G. Con-
sideram G
1
= G e. Din alegerea lui e, G
1
este conex. Evident G
1
este graf plan.
359
Numarul fet elor lui G
1
este f
1
= f 1 (cele
doua fet e ale lui G vor genera n G
1
o singura
fat a); n plus G
1
are n
1
= n vrfuri si m
1
= m1
muchii.
Pentru G
1
are loc ipoteza inductiva, deci f
1
=
m
1
n
1
+2.
Substituind valorile lui f
1
, m
1
si n
1
se obt ine
f 1 = (m1) n +2, adica f = mn +2.
Observat ii: 1
0
Oricarui poliedru convex din
R
3
i se poate asocia un graf planar cu acelasi
numar de vrfuri si muchii (se reprezinta vrfurile
si muchiile poliedrului pe o sfera si se executa
proiect ia stereograca).
Figura urmatoare cont ine grafurile planare aso-
ciate poliedrelor platonice:
360
Tetraedrul
Hexaedrul
(Cubul) Octoedrul
Dodecaedrul Icosaedrul
Steinitz si Rademacher (1934) au aratat ca un
graf planar este graful asociat unui poliedru
convex daca si numai daca este 3-conex. Relat ia
din teorema 1, este cunoscuta ca formula polie-
drala a lui Euler si precizeaza numarul fet elor
poliedrului convexn funct ie de numarul vrfurilor
si muchiilor sale.
361
2
0
. Din punct de vedere algoritmic, teorema
1 are drept consecint a imediata faptul ca orice
graf planar este rar, numarul muchiilor este
de ordinul numarului de vrfuri. Va rezulta ca
orice traversare n ordinul O([V [ +[E[) a lui G
este de fapt n O([V [) operat ii.
Corolar. 1. Fie G un graf planar, conex, cu
n( 3) vrfuri si m > 2 muchii. Atunci
m 3n 6.
Demonstrat ie. Fie G

o reprezentare planara
a lui G. Daca G

are o singura fat a, atunci G

este arbore, m = n1 (G

are acelasi numar de


vrfuri si muchii ca si G), si pentru n 3 ine-
galitatea are loc. Daca G

are macar doua fet e,


atunci ecare fat a F are n frontiera muchiile
unui circuit C(F), si ecare astfel de muchie
apart ine la exact doua fet e. Orice circuit al
grafului are macar 3 muchii, deci
362
2m

F fat a n G

(nrul muchiilor circ. C(F))

F
3 = 3f = 3(mn +2),
inegalitate, evident, echivalenta cu cea din enunt .
Corolar. 2. Daca G este un graf bipartit,
conex si planar cu m > 2 muchii si n vrfuri,
atunci m 2n 4.
Demonstrat ie: Acelasi rat ionament ca mai sus,
cu observat ia ca orice circuit are macar 4 muchii
pentru ca, graful ind bipartit, numarul muchi-
ilor oricarui circuit este par.
Corolar. 3. Daca G este un graf planar conex,
atunci G are un vrf de grad cel mult 5.
363
Demonstrat ie: Daca G are mai mult de 2 muchii
aplicam consecint a 1 astfel: e G

o reprezentare
planara a lui G cu n vrfuri si m muchii; notam
cu n
i
numarul vrfurilor de grad i (1 i
n 1) din G

; atunci

n1
i=1
i n
i
= 2m 2(3n 6) = 6(

i
n
i
) 12,
deci

i
(i 6)n
i
+12 0
Cum pentru i 6 tot i termenii sumei snt
nenegativi, rezulta ca exista i
0
, 1 i
0
5,
astfel nct n
i
0
> 0, ceea ce trebuia demon-
strat.
Observat ie: Grafurile K
5
si K
33
nu snt planare.
Primul graf violeaza inegalitatea din corolarul
1, cel de al doilea pe cea din corolarul 2.
364
Fie G = (V, E) un graf si v V (G) astfel
nct d
G
(v) = 2 si vw
1
, vw
2
E, w
1
,= w
2
.
Consideram h(G) = (V \ v, E \ vw
1
, vw
2

w
1
w
2
). Se observa ca G este planar daca si
numai daca h(G) este planar.
(Daca w
1
w
2
/ E(G) atunci pe curba simpla ce
uneste w
1
si w
2
ntr-o reprezentare planara a lui
h(G) se introduce un nou vrf v; daca w
1
w
2

E(G), n una din fet ele reprezentarii planare a
lui h(G) se plaseaza sucient de aproape de
curba w
1
w
2
un vrf nou v si se uneste cu
w
1
si w
2
. Reciproc, n reprezentarea planara
a lui G stergem punctul v si cele doua muchii
vw
1
si vw
2
le nlocuim cu reuniunea lor. Daca
w
1
w
2
E(G) atunci se sterge si curba w
1
w
2
).
Vom nota cu h

(G) graful obt inut din G aplicndu-


i repetat transformarea h, pna cnd graful curent
nu mai are vrfuri de grad 2. Din observat ia an-
terioara rezulta ca G este planar, daca si numai
daca h

(G) este planar.


365
Denit ie. Doua grafuri G
1
si G
2
se numesc
homeomorfe daca si numai daca h

(G
1
)

= h

(G
2
).
Teorema. 2. (Kuratowski 1930) Un graf este
planar daca si numai daca nu are subgrafuri
homeomorfe cu K
5
sau K
33
.
Necesitatea teoremei este evidenta: daca un
graf este planar atunci orice subgraf al sau este
planar. Daca ar exista un subgraf G

al lui G
homeomorf cu K
33
sau K
5
, cum aceste doua
grafuri am aratat ca nu snt planare si cum
h

(G

) este planar daca si numai daca G

este
planar rezulta ca G

si deci G nu este planar,


contrazicnd alegerea lui G.
Sucient a se demonstreaza prin induct ie dupa
numarul de muchii.
366
2. Desenarea unui graf planar
Fie G un graf planar. Se pune problema trasarii
lui n plan. Este aproape evident ca se pot
aproxima curbele simple ce unesc vrfurile, cu
linii poligonale, astfel nct sa nu se violeze
condit ia de planaritate. Are loc, totusi, un
rezultat mai tare demonstrat de Fary n 1948
(si independent de Wagner si Stein):
Orice graf planar are o reprezentare planara cu
toate muchiile segmente de dreapta
(reprezentarea Fary).
Aceasta teorema a deschis o serie de rezul-
tate referitoare la desenarea grafurilor planare.
Pentru un mediu grac, care permite pozit ionarea
n puncte de coordonate ntregi si trasarea de
segmente ce unesc aceste puncte, este desigur
important sa se demonstreze existent a unei
reprezentari Fary cu vrfuri n puncte de co-
ordonatentregi, si n acelasi timp aria suprafet ei
ocupate de reprezentare sa e polinomiala n
raport cu numarul n de vrfuri ale grafului.
367
Descriem unul dintre rezultatele de acest tip:
Teorema. 3. (Fraysseix, Pach, Pollack (1988))
Orice graf planar cu n vrfuri are o reprezentare
planara cu vrfuri de coordonate ntregi n
[0, 2n4] [0, n2] si cu muchii segmente de
dreapta.
Notam ca demonstrat ia care urmeaza poate
baza unui algoritm de complexitate O(nlogn)
pentru obt inerea acestei reprezentari.
Lema. 3. Fie G un graf planar si G

o reprezen-
tare planara a sa. Daca C

este un circuit al
lui G

ce trece prin muchia uv E(G

) atunci
exista w V (C

) astfel nct w ,= u, v si w nu
este extremitatea nici unei corzi interioare a lui
C

.
368
Demonstrat ie: Fie v
1
, v
2
, ..., v
n
vrfurile circuit-
ului C

ntr-o parcurgere a sa de la u la v
(v
1
= u, v
n
= v). Daca C

nu are corzi inte-


rioare lema este demonstrata. Altfel, alegem
perechea (i, j) astfel nct v
i
v
j
este coarda in-
terioara a lui C

si
ji = minkl [ k > l+1, v
k
v
l
E(G

), v
k
v
l
coarda interioara .
Atunci v
i+1
nu e incident cu nici o coarda in-
terioara (v
i+1
v
p
cu i + 1 < p < j nu e coarda
interioara caci s-ar contrazice alegerea perechii
(ij) si v
i+1
v
l
cu l < i sau l > j, nu este coarda
interioara datorita existent ei coardei v
i
v
j
si a
planaritat ii).
v =u
1
v
v
v
i
j
i+1
v = v
n
369
Vom demonstra teorema 4 n ipoteza supli-
mentara ca G este maximal planar : orice
muchie i s-ar adauga se obt ine un graf nepla-
nar (sau multigraf).
Sa observam ca orice fat a a unui graf maximal
planar este un C
3
(altminteri n reprezentarea
lui G cu fat a exterioara marginita de un C
n
cu
n 4 se pot introduce muchii fara a pierde
planaritatea grafului).
Ipoteza nu este restrictiva: de la o reprezentare
a lui G ca o harta planara (ce se obt ine aplicnd
de exemplu algoritmul de testare a planaritat ii)
se trece la o harta cu toate fet ele triunghiului
prin insert ia n timp liniar de corzi n circuite.
La desenarea grafului obt inut, muchiile ctive
introduse nu se vor trasa.
Lema. 4. Fie G maximal planar cu n 4
vrfuri si G

o reprezentare planara a sa cu
fat a exterioara u, v, w. Exista o etichetare a
vrfurilor lui G

: v
1
, v
2
, ..., v
n
astfel nct v
1
=
u, v
2
= v, v
n
= w si pentru orice k, 4 k n
avem:
370
( i) subgraful G

k1
= [v
1
, . . . , v
k1
]
G
, este
2-conex si fat a sa exterioara este determinata
de circuitul C

k1
ce cont ine uv.
(ii) n subgraful G

k
, vrful v
k
este n fat a ex-
terioara a lui G

k1
si N
G

k
(v
k
) v
1
, . . . , v
k1

este un drum de lungime 1 de pe circuitul


C

k1
\ uv.
Demonstrat ie: Fie v
1
= u, v
2
= v, v
n
= w, G

n
=
G, G

n1
= Gv
n
. Sa observam ca N
G

n
(v
n
) este
un circuit ce cont ine uv (este sucient, pen-
tru a demonstra aceasta sa ordonam N
G
(w)
dupa abscisele vrfurilor si sa folosim planari-
tatea maximala).
v =u
1
v =w
n
v =v
2
v
k
C
k - 1
Rezulta ca pentru k = n (i) si (ii) au loc.
371
Daca v
k
a fost ales (k n) atunci n G

k1
=
G

v
n
, . . . , v
k
vecinii lui v
k
determina un cir-
cuit C

k1
ce cont ine uv si margineste fat a ex-
terioara a lui G

k1
. Din lema 3, rezulta ca
exista v
k1
pe C

k1
astfel nct v
k1
nu este
incident cu o coarda interioara a lui C

k1
.
Din construct ie, rezulta ca v
k1
nu este in-
cident nici cu corzi exterioare lui C

k1
si cu
aceasta alegere, se observa ca G

k2
va cont ine
un circuit C

k2
cu proprietat ile (i) si (ii).
Notam ca etichetarea precizata n lema 4 se
poate construi n O(n) considernd o reprezentare
a lui G cu liste de adiacent a ordonate circular,
prin xarea vrfurilor v
1
, v
2
si v
n
si apoi con-
sidernd pentru ecare k k 3 un vrf v
k
cu
proprietatea ca arcele cu o extremitate v
k
si
cealalta n v
1
, . . . , v
k1
formeaza un segment
continuun lista circulara a lui A(v
k
) (existent a
unui asemenea vrf ind asigurata de lema 4 ).
372
Demonstrat ia teoremei 4. Asa cum am mai
observat, se poate presupune G maximal pla-
nar cu n( 4) vrfuri. Fie G

o reprezentare
planara a lui G, cu vrfurile v
1
, v
2
, . . . , v
n
, fat a
exterioara u, v, w si etichetarea vrfurilor satis-
face condit iile din lema 4.
Vom construi o reprezentare Fary a lui G cu
vrfurile puncte de coordonate ntregi.

In pasul k( 3) al construct iei dispunem de o


astfel de reprezentare a lui G
k
, si n plus snt
satisfacute condit iile:
(1) v
1
are coordonatele x
v
1
= 0 si y
v
1
= 0; v
2
are coordonatele x
v
2
= i 2k 4, y
v
2
= 0;
(2) Daca w
1
, w
2
, . . . , w
m
snt vrfurile circuitu-
lui ce margineste fat a exterioara a lui G
k
n or-
dinea parcurgerii lor de la v
1
la v
2
(w
1
= v
1
, w
m
=
v
2
) atunci
x
w
1
< x
w
2
< . . . < x
w
m
.
373
(3) Muchiile w
1
w
2
, w
2
w
3
, . . . , w
m1
w
m
snt seg-
mente de dreapta paralele cu prima sau a doua
bisectoare a axelor de coordonate.
Condit ia (3) asigura ca i < j daca prin w
i
se
duce o paralela la prima bisectoare si prin w
j
o paralela la a doua bisectoare,intersect ia lor
este un punct de coordonate ntregi.
Construim G

k+1
. Fie w
p
, w
p+1
, . . . , w
q
vecinii
lui v
k+1
n G

k+1
(cf. lemei 4) 1 p < q m.
w =
1
v =u
1
v =v
2
w =
m
w
w
w
w
w
w
w
w
2
3
p
p+1
p+2
q-2
q-1
q
P
374
Paralela prin w
p
la prima bisectoare intersecteaza
paralela prin w
q
la a doua bisectoare, ntr-un
punct P. Daca din punctul P se pot trasa
segmentele Pw
i
p i q astfel nct ele sa
e distincte, atunci putem lua v
k+1
= P si
obt inem reprezentarea Fary pentru G
k+1
cu
vrfuri de coordonatentregi, satisfacnd condit iile
(1) (2) si (3).
Daca segmentul w
p
w
p+1
este paralel cu
prima bisectoare, atunci translam cu o unitate
la dreapta toate vrfurile grafului G
k
, care au
abscisa x
w
p+1
. Efectuam apoi o translat ie
cu o unitate la dreapta a tuturor vrfurilor cu
abscisa x
w
q
. Sa observam ca acum toate
segmentele P

w
i
cu p i q snt distincte, seg-
mentele w
i
w
i+1
cu i = q, m1 au pantele 1 si
de asemenea w
p
P

si P

w
q
(unde P

este punc-
tul obt inut prin intersect ia paralelelor la prima
(respectiv a doua) bisectoare, duse prin w
p
si
w
q
). Luam v
k+1
= P

si pasul k al construct iei


este terminat.
375
Condit iile (1)- (3) snt evident satisfacute. Cu
aceasta teorema este demonstrata.
Sa observam ca determinarea vrfurilor care se
vor transla n pasul k, poate organizata ast-
fel nct sa nu necesite n total O(n
2
) operat ii
ci numai O(nlogn), utiliznd structuri conven-
abile de date.
3. Grafuri plane - versiunea combinato-
riala.
Vom considera n cele ce urmeaza doar grafuri
conexe cu macar doua varfuri.

In versiunea combinatoriala un graf este un


triplet G = (E, ,

), unde E este o mult ime


de cardinal par,

este o involut ie pe E (per-
mutare de ordin 2) fara puncte xe, si este
o permutare pe E.
376
Elementele lui E sunt gandite ca arce; o muchie
(neorientata) este reprezentata ca o pereche
e, e E de arce, inverse unul altuia.
Aplicat ia

inverseaza direct ia.
Se doreste ca aplicat ia sa dea o orientare a
muchiilor din jurul unui varf (n sens contrar
acelor de ceasornic).
Varfurile sunt ciclii permutarii . (Un ciclu
al permutarii este o submult ime nevida a lui
E nchisa n raport cu si minimala cu aceasta
proprietate).
Daca notam cu V mult imea ciclilor permutarii
atunci denim
t : E V prin t(e) = unicul ciclu al lui ce cont ine
e (extremitatea init iala a arcului e)
t : E V prin t(e) = unicul ciclu al lui ce cont ine
e (extremitatea nala a arcului e)
Se observa ca e t(e) = h(e) si h(e) = t(e).
377
Daca vom considera permutarea

: E E denita de

(e) = (e), atunci o fat a a lui G este un ciclu al per-


mutarii

.
Intuitiv, pentru a calcula

(e), inversam e pentru a


obt ine e si apoi ne rotim (n sensul acelor de ceasor-
nic) n jurul extremitat ii init iale a lui e. Numarul fet elor
lui G se noteaza cu f.
O componenta conexa a lui G este o orbita a lui E
n grupul de permutari generat de si

: o mult ime
nevida minimala cu proprietatea ca este nchisa la
si

.
Fie G un graf cu m =
1
2
[E[ muchii (neorientate), n = [V [
varfuri, f fet e, si c componente conexe. Caracteristica
Euler a lui G se deneste ca ind
(G) = 2c +mn f.
Un graf G se numeste graf plan daca (G) = 0.
Se poate demonstra ca pentru un graf conex n denit ia
tradit ionala, cele doua not iuni de grafuri plane coincid
(graful neorientat construit asa cum am descris mai sus
atasat unui graf n forma combinatoriala este graf plan
conform denit iei tradit ionale si invers,
daca pentru un graf tradit ional plan conex se construieste
conform unei orientari inverse acelor de ceasornic a
muchiilor si

corespunzatoare, graful combinatorial
obt inut este plan n noua denit ie).
378
4. Teorema separatorului
Denit ie Daca G = (V, E) este un graf plan
maximal (cu toate fet ele triunghiuri) atunci
dualul sau este graful G

= (V

, E) unde V

sunt fet ele grafului G iar muchiile lui G

se
obt in din muchiile grafului G, asociindu-i ecarei
muchii e E cele doua fet e n frontira carora
se afla e.
G
G
*
Lema. 1. Fie G = (V, E) este un graf plan
maximal conex , G

= (V

, E) dualul sau si
E

E. Atunci (V, E

) este arbore part ial al lui


G daca si numai daca (V

, E E

) este arbore
part ial al lui G

.
379
Teorema. 1. (Tarjan & Lipton, 1979)
Fie G un graf planar cu n varfuri. Exista o
partit ie a lui V (G) n clasele disjuncte A, B, S
astfel ncat:
1. S separa A de B n G: GS nu are muchii
cu o extremitate n A si cealalta n B.
2. [A[
2
3
n, [B[
2
3
n.
3. [S 4

n.
Aceasta partit ie se poate aa n timpul O(n).
Demonstrat ie. Consideram graful conex si de
asemenea consideram ca dispunem de o reprezen-
tare planara (obt inute cu un algoritm liniar).
Alegem un varf s si executam o parcurgere bfs
din s numerotand varfurile (n ordinea ntalnirii
lor n aceasta parcurgere) si atribuind ecarui
varf v nivelul sau n arborele bfs construit.
380
Vom nota cu L(t), 0 t l + 1 mult imea
varfurilor de pe nivelul t (nivelul l +1 va in-
trodus n scopuri tehnice si este vid, ultimul
nivel este de fapt l).
Evident, ecare nivel este un separator n G
(avem muchii doar ntre nivele consecutive).
Fie t
1
nivelul de la mijloc, adica nivelul ce
cont ine varful numerotat bfs cu numarul de
ordine
n
2
. Mult imea L(t
1
) are o parte din pro-
prietat ile separatorului pe care l cautam:

t<t
1
L(t)

<
n
2

t>t
1
L(t)

<
n
2
.
Daca si L(t
1
) 4

n, teorema are loc.


Lema. 2. Exista nivelele t
0
t
1
si t
2
> t
1
a.
ncat [L(t
0
)[

n, [L(t
2
)[

n si t
2
t
0


n.
Se alege t
0
cel mai mare numar cu proprietat ile t
0
t
1
si
[L(t
0
)[

n (exista un astfel de nivel pentru ca [L(0)[ =
1). La fel, exista t
2
un cel mai mic numar astfel nc at
t
2
> t
1
si [L(t
2
)[

n (de aceea s-a luat [L(l +1)[ = 0).
Orice nivel strict ntre t
0
si t
2
are mai mult de

n varfuri
deci numarul acestor nivele este mai mic decat

n, altfel
am avea mai mult de n varfuri n graf.
381
Consideram
C =
t<t
0
L(t), D =
t
0
<t<t
2
L(t), E =
t>t
2
L(t).
C
D
E
s
t
t
t
0
1
2
Daca [D[
2
3
n atunci teorema are loc cu S =
L(t
0
) L(t
2
), A mult imea cu cele mai multe
elemente dintre C, D, E si B reuniunea celor-
lalte doua (nu uitam ca C si E au cel mult
n
2
elemente).
382
Consideram deci ca n
1
= [D[ >
2
3
n.
Daca vom gasi un separator de tipul
1
3

2
3
pen-
tru D cu cel mult 2

n varfuri, atunci , atunci


l vom adauga la L(t
0
) L(t
2
) pentru a obt ine
un separator de cardinal cel mult 4

n, reunim
mult imea cu cel mai mare numar de elemente
dintre C si E cu partea mica ramasa din D
pentru a obt ine A, iar partea mare ramasa n
D o reunim cu cealalta mult ime (mica ) dintre
C si E pentru a obt ine B.
Ne ocupam de construct ia separatorului pentru
D. Vom sterge toate varfurile grafului care nu-
s n D cu except ia lui s pe care-l unim cu toate
vrfurile de pe nivelul t
0
+1 (primul nivel ramas
n D). Graful obt inut l notam cu D si este
evident planar si conex.

In plus are un arbore
part ial T de diametru cel mult 2

n (orice varf
este accesibil din s pe un drum de lungime cel
mult

n asa cum am aratat n lema).
383
Acest arbore se construieste simplu pornind de
la ultimul nivel si adaugand pentru ecare varf
o muchie incidenta cu el si cu cealalta extrem-
itate pe nivelul precedent (nivelul 0 cont ine
doar s).
Putem presupune ca D este triangulat (altfel
se triangularizeaza n timp liniar). Construim
dualul sau D

, tot n timp liniar. Muchiile lui D


care nu-s pe arborele T vor numite t epi. Din
lema 1, rezulta ca t epii vor sect iona un arbore
part ial T

al lui D

. Consideram o fat a a lui D


drept radacina a lui T

si consideram muchiile
lui T

orientate dinspre radacina.


Fie e = uv un t ep. Exista un unic drum de la
u la v n T care mpreuna cu e determina un
circuit c(e).
Parcurgem t epii conform unei traversari dfs a
lui T

calculand urmatoarele informat ii pentru


ecare t ep, recursiv de la frunze n sus:
384
- I(e)- numarul varfurilor din interiorul lui c(e).
- [c(e)[- numarul varfurilor de pe circuitul c(e);
- o reprezentare ca lista a lui c(e).
Sunt posibile urmatoarele patru cazuri (ce core-
spund ntoarcerilor din parcurgerea dfs).
Cazul 1.
u v
x
e
Suntem ntr-o frunza e a lui T

(ce se deter-
mina numarand vecinii). Atunci:
- I(e) = 0;
- [c(e)[ = 3 (D e triangulat);
- c(e) = [u, x, v].
Cazul 2.
u v
c (e )
e
u

Avem calculata informat ia pentru t epul e

= u

v, e este
un t ep n acelasi triunghi ca si e

si u

este pe circuitul
c(e); ac. rezulta testand daca u nu-i pe lista c(e

).
Atunci:
385
- I(e) = I(e

);
- [c(e)[ = c(e

) +1;
- c(e) = [u] c(e

).
Cazul 3.
u v
e
u
e

Avem calculata informat ia pentru t epul e

=
u

v, e este un t ep n acelasi triunghi ca si e

si
u

nu este pe circuitul c(e); ac. rezulta testand


daca u e pe lista c(e

). Atunci:
- I(e) = I(e

) +1;
- [c(e)[ = c(e

) 1;
- c(e

) = [u]c(e) (deci c(e) se obt ine stergandu-


l pe u din lista c(e

).
Cazul 4.
u v
e
e
y
p
x
e"
c (e )
c (e )
"
Avem calculata informat ia pentru t epii e

= uy
si e = yv iar e este un t ep n acelasi triunghi
ca si e

, e.
386
Fie p drumul comun al lui c(e

) si c(e) si e x
celalalt capat al lui p n afara de y. Atunci:
- I(e) = I(e

)++I(e)+[p[ 1 (toate varfurile


lui p cu except ia lui x sunt n interiorul lui c(e));
- [c(e)[ = c(e

) +c(e) 2[p[ +1;


- c(e

) = c

[x] c unde c

este c(e

) cu p sters
si c este c(e) cu p sters.
Calculul lui [p[ si reprezentarea lui c(e) se obt in
scanand c(e

) si c(e) plecand din y panantalnim


ultimul varf comun care este x. Aceasta nu
afecteaza complexitatea de timp liniara.
Ramane de aratat ca exista un t ep e astfel ncat
I(e)
2n
1
3
n
1
(I(e) +c(e))
2n
1
3
.
Atunci se poate lua c(e) ca separator, varfurile
din interior drept o clasa, iar cele din interior
drept cealalta clasa.
Fie e primul t epntalnit lantoarcerea din frun-
zele lui T

catre radacina, care satisface pro-


prietatea ca I(e) +[c(e)[
n
1
3
.
387
Atunci mult imea varfurilor din exteriorul lui c(e)
este de cardinal n
1
(I(e) +[c(e)[)
2n
1
3
, deci
ceea ce ramane de aratat este ca I(e)
2n
1
3
.
Aceasta rezulta analizand cazurile 1-4 de mai
sus n care s-a ajuns la e:
1. I(e) = 0
2n
1
3
.
2. I(e)+[c(e)[ = I(e

)+[c(e

)[+1 <
n
1
3
+1
2n
1
3
(pentru n
1
3).
3. I(e) +c(e) = I(e

) +c(e

), deci e nu-i prima


muchie cu proprietatea ca I(e) +[c(e)[
n
1
3
.
4. I(e) +c(e) = I(e

) +I(e

) +[p[ 1 +c(e

) +
c(e

) 2[p[ +1 <
2n
1
3
[p[ <
2n
1
3
.
Cu aceasta teorema separatorului este complet
demonstrata.
Ilustram cum poate folosita teorema separa-
torului mpreuna cu o metoda de divide & im-
pera pentru a obt ine algoritmi exact i cu com-
portare subexponent iala pentru probleme NP-
hard pe grafuri planare.
388
Consideram problema testarii daca un graf pla-
nar dat admite o 3-colorare a varfurilor (prob-
lema cunoscuta ca ind NP-completa).
Pentru grafuri cu put ine varfuri (un numar con-
stant c) se poate testa n timpul O(3
c
) = O(1)
daca graful are o 3-colorare.
Pentru grafuri planare cu numarul n de varfuri
mai mare decat c, construimn timp liniar O(n),
asa cum ne asigura teorema separatorului, parti-
t ia A, B, C a mult imii varfurilor sale cu [A[, [B[
2n
3
si [C[ 4

n.
Pentru ecare din cele 3
[C[
= 2
O(

n)
funct ii
posibile denite pe C si cu valori n 1, 2, 3
se testeaza daca este 3-colorare a subgrafului
indus de C si daca poate extinsa la o 3-
colorare a subgrafului indus de AC n G si la
o 3-colorare a subgrafului indus de B C n G
(recursiv).
389
Timpul de lucru al acestui algoritm, T(n), va
satisface recurent a
T(n) =
_
O(1) daca n c;
O(n) +2
O(

n)
(O(

n) +2T(
2n
3
)) daca n > c.
Se obt ine T(n) = 2
O(

n)
, destul de bun pentru
probleme de dimensiuni rezonabile.
Este posibil nsa ca notat ia O(.) sa ascunda
constante mari !
Exista si alte abordari pentru obt inerea de al-
goritmi performant i pentru problemele dicile
pe grafuri planare. Descriemn continuare una
din ele.
390
Denit ie O t-descompunere a unui graf G =
(V (G), E(G)) este o pereche
(X
i
[i V (T), T), unde X
i
[i V (T) este o
familie de submult imi ale lui V (G) si T este un
arbore, astfel ncat:
1.
iV (T)
X
i
= V (G);
2. vw E(G) i V (T) astfel ncat v, w X
i
;
3. v V (G) mult imea varfurilor i[v X
i
in-
duce un subarbore n T .
Lat imea unei t-descompuneri X
i
[i V (T) se
deneste ca ind max
iV (T)
([X
i
[ 1).
t-lat imea unui graf G este lat imea minima a
unei t-descompuneri a lui G si se noteaza cu
tw(G).
391
Denit ie O b-descompunere a unui graf G =
(V (G), E(G)) este o pereche (T, ), unde T
este un arbore cu varfurile de gradul 1 sau 3
si este o biject ie de la mult imea varfurilor
pendante ale lui T la E(G).
Ordinul unei muchii e a lui T este numarul
varfurilor v V (G) astfel ncat exista varfurile
pendante t
1
, t
2
ale lui T n componente conexe
diferite ale lui T e cu (t
1
) si (t
2
) incidente
cu v.
Lat imea b-descompunerii (T, ) este ordinul
maxim al unei muchii a lui T.
b-lat imea unui graf G este lat imea minima
a unei b-descompuneri a lui G si se noteaza
cu bw(G). (daca [E(G)[ 1 se deneste b-
lat imea lui G ca ind 0; grafurile nule nu au
b-descompuneri; daca [E(G)[ = 1 atunci G are
o b-descompunere care consta dintr-un arbore
cu un nod, a carui lat ime se considera 0).
392
Teorema. 2. (Robertson & Seymour, 90)
Pentru orice graf conex G cu E(G) 3 avem
bw(G) tw(G) +1
3
2
bw(G).
Teorema. 3. (Fomin & Thilikos, 2003)
Pentru orice graf planar G avem
bw(G)
_
4.5[V (G)[ 2.122
_
[V (G)[.
Teorema. 4. (Fomin & Thilikos, 2003)
Fie o problema de optimizare care este re-
zolvabila pe grafuri cu b-lat imea cel mult l si
ordinul nn timpul f(l)g(n). Atunci pe grafurile
planare de ordin n problema este rezolvabila
n timpul O(f(2.122

n)g(n) +n
4
).
Demonstrat ia rezulta utilizand teorema ante-
rioara si un algoritm de complexitate O(n
4
) dat
de Robertson & Seymour pentru determinarea
unei b-descompuneri optimale a unui graf.
393
De exemplu, se stie ca problema determinarii
unei mult imi stabile de cardinal maximntr-un
graf cu t-lat imea l se poate rezolva n timpul
O(2
l
n). Deci, pentru grafuri cu b-lat imea cel
mult l se poate rezolva n O(2
3
2
l
n).
Obt inem ca problema determinarii unei mult imi
stabile de cardinal maximntr-un graf planar se
poate rezolva n timpul O(2
3.182

n
n +n
4
).
Timpii obt inut i sunt mai buni decat metodele
bazate pe teoremele de separare !
E N D
394
Seminarii
Setul de probleme 1
Problema 1. Un graf G se numeste rar daca numarul
sau de muchii m este mai mic decit
n
2
logn
, unde n reprezinta
numarul de virfuri. O justicare este aceea ca matricea
de adiacent a A a grafului, care ocupa n
2
locat ii de mem-
orie, poate intotdeauna reprezentata folosind O(
n
2
logn
),
locat ii de memorie astfel incit raspunsul la o intrebare
A(i, j) = 1 ? sa se faca in O(1). Descriet i o astfel de
schema de reprezentare. (4 puncte)
Problema 2. Diametrul unui graf este lungimea
maxima a unui drum de lungime minima intre doua vir-
furi ale grafului. Doua virfuri care sunt extremitat ile
unui drum minim de lungime maxima in graf se numesc
diametral opuse. Demonstrat i ca urmatorul algoritm
determina o pereche de virfuri diametral opuse intr-un
arbore T:
dintr-un virf oarecare se executa o parcurgere BFS a
lui T; e u ultimul virf vizitat;din virful u se executa o
395
parcurgere BFS a lui T; e v ultimul virf vizitat;
return u,v.
Este valabil algoritmul pentru un graf conex oarecare ?
(4 puncte)
Problema 3. Fie T un arbore un arbore binar cu
radacina. Un algoritm simplu de desenare a lui T poate
descris recursiv dupa cum urmeaza.
- Folosim ca suport o grila (liniatura unui caiet de mate);
virfurile se plaseaza in punctele de intersect ie ale grilei.
- Desenam subarborele sting; Desenam subarborele drept.
- Plasam cele doua desene unul linga altul la distant a
pe orizontala doi si cu radacinile la aceeasi inalt ime.
- Plasam radacina cu un nivel mai sus la jumatatea
distant ei pe orizontala dintre cei doi copii.
- Daca avem doar un copil plasam radacina cu un nivel
mai sus la distant a 1 fat a de copil (la stinga sau la
dreapta dupa cum este acesta).
Descriet i cum se poate asocia pentru ecare nod v al ar-
borelui T (folosind algoritmul de mai sus) coordonatele
(x(v), y(v)) reprezentind punctul de pe grila unde va
desenat.(3 puncte)
396
Problema 4. Intr-o sesiune de examene s-au inscris n
student i care trebuie sa sust ina examene dintr-o mult ime
de m discipline. Intrucit examenele se sust in in scris, se
doreste ca tot i student ii care dau examen la o disciplina
sa faca acest lucru simultan. De asemenea, regulamen-
tul de desfasurare a examenelor interzice ca un student
sa dea doua examene in aceeasi zi. Pentru ecare stu-
dent se dispune de lista disciplinelor la care doreste sa
e examinat.
Sa se descrie construct ia unui graf G care sa ofere raspunsul
la urmatoarele doua intrebari prin determinarea unor
parametri asociat i (care se vor preciza):
- care e numarul maxim de examene ce se pot organiza
in aceeasi zi ?
- care e numarul minim de zile necesare organizarii tu-
turor examenelor? (3 puncte)
397
Setul de probleme 2
Problema 1. Fie G = (S, T; E) un graf bipartit si
X S, T. Graful G se numeste X-lant daca varfurile
mult imii X pot ordonate X = x
1
, x
2
, . . . , x
p
(unde
p = [X[) astfel ncat N
G
(x
1
) N
G
(x
2
) . . . N
G
(x
p
).
a) Demonstrat i ca G este X-lant daca si numai daca
este X-lant , unde X = S, T X. (2 puncte)
b) Daca G (bipartit) este reprezentat cu ajutorul listelor
de adiacent a , are ordinul n si dimensiunea m, descriet i
un algoritm cu timpul O(n +m) care sa testeze daca G
este S-lant . (2 puncte)
Problema 2. Un graf G se numeste autocomplemen-
tar daca este izomorf cu complementul sau : G G.
a) Demonstrat i ca un graf autocomplementar este conex
si ca ordinul sau este multiplu de 4 sau multiplu de 4
plus 1.(2 puncte)
b) Demonstrat i ca pentru orice graf G exista un graf
autocomplementar H astfel incit G este subgraf indus
in H. (2 puncte)
c) Determinat i toate grafurile autocomplementare cu
cel mult 7 virfuri. (2 puncte)
398
Problema 3. O echipa de doi programatori L(azy)
si T(hinky) primeste ca sarcina sa determine un drum
intre 2 noduri date, care sa satisfaca anumite cerint e,
intr-un graf G dat, despre care se stie ca este rar :
[E(G)[ = O([G[). Programatorul L propune ca solut ie
generarea (cu backtracking) a tuturor drumurilor dintre
cele doua noduri si selectarea celui convenabil, motivand
ca intr-un astfel de graf nu pot exista prea multe dru-
muri intre doua noduri xate (sunt put ine muchii si deci
put ine posibilitat i de ramicare; de ex., intr-un arbore
exista exact un drum intre orice doua noduri xate).
Programatorul T nu-i de acord si da urmatorul con-
traexemplu: se considera graful H = K
2
P
n1
(n un
intreg mare); o pereche de virfuri de grad 2 adiacente
din H se uneste cu un virf nou x, iar cealalta pereche
de virfuri de grad 2 adiacente din H se uneste cu un virf
nou y; graful obt inut, G, are proprietat ile din problema
de rezolvat si totusi numarul drumurilor de la x la y in G
este prea mare. Ajutat i-l pe L sa int eleaga contraexem-
plul, desenind graful G, aratind ca este rar si estimind
numarul drumurilor de la x la y. (2 puncte)
399
Problema 4. Presupunem ca un turneu (di-
graf cu proprietatea ca orice 2 virfuri sunt unite
exact printr-un arc) are un circuit C de lungime
n 4.
Aratat i ca pentru orice virf x al lui C se pot
determina in timpul O(n), inca doua virfuri ale
lui C y si z astfel incit (x, y, z) este un circuit
de lungime 3. (2 puncte)
400
Setul de probleme 3
Problema 1. Fie G = (V, E) un graf cu n virfuri, m
muchii si cu matricea de adiacent a A. Dintre cele 2
m
orientari posibile ale muchiilor sale consideram una oare-
care si cu ajutorul ei construim matricea de incident a
virf-arc Q 0, 1, 1
nm
denita prin :
(Q)
ve
= 1, daca v este extremit. init iala a arcului e,
(Q)
ve
= 1, daca v este extremitatea nala a arcului e
(Q)
ve
= 0 in toate celelalte cazuri.
Demonstrat i ca matricea A+QQ
T
este o matrice diago-
nala si precizat i semnicat ia combinatorie a elementelor
ei. (3 puncte)
Problema 2. Fie G un graf oarecare si notam cu b(G)
graful obt inut din G prin inserarea cite unui nou nod pe
ecare muchie. Demonstrat i ca b(G) este un graf bipar-
tit. (2 puncte)
Demonstrat i ca G si H sunt izomorfe daca si numai
daca b(G) este izomorf cu b(H). Deducet i ca testarea
izomorsmului a 2 grafuri oarecare se reduce polino-
mial la testarea izomorsmului a 2 grafuri bipartite (2
puncte)
401
Problema 3. Graful paianjen cu n virfuri
este graful care se obt ine unind unul din vir-
furile de grad 1 ale grafului P
3
cu toate virfurile
unui graf oarecare cu n 3 virfuri, disjunct de
P
3
(n este un intreg pozitiv mare).
Daca G este un graf cu n virfuri reprezen-
tat prin matricea de adiacent a, aratat i ca se
poate testa daca este graf paianjen folosind
doar O(n) probe ale matricii de adiacent a.
(o proba este un acces la un element oarecare
al matricii, fara a-l memora explicit pentru uti-
lizari ulterioare). (4 puncte)
402
Problema 4. Asociem unui arbore binar T de ordin
n cu radacina r un drum P
3n
orientat procedind astfel:
ecarui nod v al lui T i se asociaza trei noduri cu acelasi
nume v pe care le desemnam prin v
1
, v
2
, v
3
; daca v nu
are in T descendent sting, atunci se introduce arcul v
1
v
2
in P
3n
; daca v nu are in T descendent drept, atunci se
introduce arcul v
2
v
3
in P
3n
; daca descendentul sting al
lui v in T este w, atunci se introduc in P
3n
arcele v
1
w
1
si w
3
v
2
; daca descendentul drept al lui v in T este w,
atunci se introduc in P
3n
arcele v
2
w
1
si w
3
v
3
.
Daca se parcurge drumul P
3n
de la extremitatea init iala
r
1
la extremitatea nala r
3
si se listeaza numele virfurilor
in ordinea parcurgerii lor se obt ine un sir in care numele
ecarui virf al lui T apare exact de trei ori.
Demonstrat i ca :
daca din acest sir se ret ine doar prima aparit ie a ecarui
nume se obt ine parcurgerea pre-order a arbrelui T;
daca din acest sir se ret ine doar a doua aparit ie a ecarui
nume se obt ine parcurgerea in-order a arbrelui T;
daca din acest sir se ret ine doar a treia aparit ie a ecarui
nume se obt ine parcurgerea post-order a arbrelui T.
(3 puncte)
403
Setul de probleme 3
Problema 1. Fie G = (V, E) un graf de ordin n si di-
mensiune m. O ordonare V = v
i
1
, . . . , v
i
n
a varfurilor lui
G se numeste d-marginita daca n digraful G

, obt inut
din G prin nlocuirea ecarei muchii v
i
j
, v
i
k
cu arcul
(v
i
minj,k
, v
i
maxj,k
), avem v V d
+
G

(v) d.
a) Descriet i un algoritm care primind la intrare G reprezen-
tat cu ajutorul listelor de adiacent a si d N

, testeaza
n timpul O(n + m) daca G are o ordonare d-marginita
(se vor argumenta corectitudinea si complexitatea). (2 puncte)
b) Utilizat i algoritmul de la punctul a) pentru a deter-
mina n timpul O(mlogn) parametrul
o(G) = mind N[ G are o ordonare d-marginita . ( 2 puncte)
c) Aratat i ca orice graf G admite o colorare a varfurilor
cu o(G) +1 culori. (2 puncte)
Problema 2. Demonstrat i algoritmic ca mult imea
muchiilor oricarui graf complet K
n
(n 2) poate
partit ionata n
n
2
submult imi, ecare dintre acestea
reprezentand mult imea muchiilor unui arbore (subgraf
al lui K
n
). Exemplu. K
5
,
5
2
= 3 :
(4 puncte)
404
Problema 3. Pentru un graf conex G se
executa urmatorul algoritm:
- Se init ializeaza o coada Q cu graful G.
- Cat timp coada Q nu-i vida:
- se extrage n H graful din capul cozii,
- se determina o mult ime de articulat ie A
V (H), minimalan raport cu incluziunea (nici o
submult ime proprie nu-i mult ime de articulat ie
n H), si daca V
1
, . . . , V
k
(k 2) sunt mult imile
de varfuri ale componentelor conexe ale grafu-
lui H A, atunci
- se adauga la Q grafurile [A V
1
]
H
, . . . , [A V
k
]
H
.
Se observa ca daca graful curent este complet atunci nu se adauga
nimic n coada Q.
a) Aratat i ca ecare graf introdus n coada
este conex.(2 puncte)
b) Demonstrat i ca numarul total al grafurilor
introdusen coada Q nu depaseste [G[
2
. (2 puncte)
405
Setul de probleme 3
Problema 1. Fie ( clasa grafurilor G cu pro-
prietatea ca orice arbore dfs al lui G este un
drum (pentru orice ordonare a varfurilor lui G
si orice ordonare a listelor de adiacent a aso-
ciate acestor varfuri, orice aplicare a unui dfs
genereaza un drum hamiltonian n G).
Demonstrat i ca
( = K
1
, K
2

n3
K
n
, C
n
, K
n,n
.
(1+3 puncte)
Problema 2. Fie D = (V, E) un digraf (fara bucle) de
ordin n cu mult imea varfurilor V = 1, 2, . . . , n. Con-
sideram urmatorul algoritm:
1. SK ;
for i = 1 to n do \\ stanga dreapta
if (,j SK astfel ncat ji E) then SK SK i;
2. for i = n to 1 do \\ dreapta stanga
if i SK (j SK astfel ncat ji E) then SK SK \ i;
3. output SK.
406
Demonstrat i ca SK este un seminucleu n D: SK este
nevida, stabila n G[D] (graful suport al digrafului D) si
orice varf din v V \ SK e accesibil n D, dintr-un varf
al lui SK, pe un drum de lungime cel mult 2.
Indicat i structurile de date si modul de folosire a aces-
tora pentru o implementare a algoritmului de mai sus n
timpul C(n +m) (m ind [E[).
(2+2 puncte)
Problema 3. Aratat i ca daca G = (S, T; E) este un
graf bipartit cu urmatoarele proprietat i:
- [S[ = n; [T[ = m (n, m N

);
- t T [N
G
(t)[ > k > 0;(pentru un k oarecare mai
mic decat n);
- t
1
, t
2
T daca t
1
,= t
2
atunci N
G
(t
1
) ,= N
G
(t
2
);
- t
1
, t
2
T daca t
1
,= t
2
atunci [N
G
(t
1
) N
G
(t
2
)[ = k,
atunci are loc inegalitatea m n. (2 puncte)
Problema 4.
Pentru n N

denim graful G
n
= (V, E) astfel:
V = (i, j)[1 i n, 1 j n,
(i, j)(k, l) E (pentru doua varfuri (i, j) si (k, l) dis-
tincte din V ) daca si numai daca i = l sau j = k.
Demonstrat i ca G
n
este universal pentru familia arborilor
de ordin n:
oricare ar T un arbore de ordin n exista A V astfel
ncat T

= [A]
G
n
.
(2+2 puncte)
407
Setul de probleme 4
Problema 1. Prezentat i (pe cel mult o pagina ) o
problema interesanta din domeniul IT care sa necesite
rezolvarea ecienta a unei probleme de drum minim intr-
un digraf asociat problemei init iale. (3 puncte)
Problema 2. Fie G = (V, E) un graf, s V un virf
oarecare al lui G iar t un alt virf, accesibil in G printr-
un drum din s. O mult ime A de muchii se numeste
st-inevitabila daca exista S V astfel incit s S, t , S
si A = e E[e = uv, u S v , S. Aratat i ca numarul
maxim de mult imi st-inevitabile disjuncte doua cite doua
este egal cu distant a in G de la s la t si ca se poate de-
termina o familie de astfel de mult imi cu ajutorul unui
bfs a lui G din s. (3 puncte)
Problema 3. Fie G = (V, E) un graf conex si v un
virf al sau cu proprietatea ca N
G
(v) ,= V v. Daca
pentru A V notam cu N
G
(A) =
aA
N
G
(a) A, se
observa ca exista mult imi de virfuri A care satisfac pro-
prietat ile : v A, [A]
G
este conex, N = N
G
(A) ,= si
R = V (A N) ,= (de exemplu, A = v).
408
a) Demonstrat i ca daca se considera o mult ime
A maximala (in raport cu incluziunea) satisfacind
proprietat ile enunt ate, atunci orice virf din R
este adiacent cu orice virf din N.(2 puncte)
b) Daca, in plus, graful G este C
k

k4
-free,
atunci mult imea N de la punctul a) are propri-
etatea ca este clica in graful G.(2 puncte)
c) Deducet i ca singurele grafuri C
k

k4
-free,
regulate si conexe sunt grafurile complete.(2
puncte)
Problema 4. Aratat i ca se poate utiliza
o parcurgere dfs pentru a determina un cir-
cuit par intr-un graf 3-regulat oarecare. (2
puncte)
409
Setul de probleme 4
Problema 1. Fie T = (V, E) un arbore cu macar doua
varfuri reprezentat cu ajutorul listelor de adiacent a. Se
declara un varf oarecare r V radacina si se noteaza
cu d(v) (pentru orice varf v V ) lista descendent ilor
imediat i ai lui v n parcurgerea bfs din r (varfurilor pen-
dante le corespund liste vide). Consideram urmatorul
algoritm:
1. Se construiesc tablourile de intregi a[v] si b[v] (v V )
astfel: daca d(v) este vida, atunci a[v] 1 si b[v] 0;
daca d(v) este nevida si toate varfurile u din d(v) au
a[u] si b[u] calculate, atunci a[v] 1 +

ud(v)
b[u] si
b[v]

ud(v)
max(a[u], b[u]).
2. Se returneaza x max(a[r], b[r]).
Descriet i n pseudocod algoritmul de mai sus, argumentat i
complexitatea timp de O([V [) si demonstrat i ca valoarea
returnata x este numarul de stabilitate (T) al arborelui
T. (1+1+2 = 4 puncte)
Problema 2. Fie G = (V, E) un graf d-regulat de
ordin n care satisface urmatoarea proprietate:
exista > 0 astfel ncat pentru orice mult ime de varfuri
S V cu proprietatea ca [S[
n
2
, numarul muchiilor cu
o extremitate n S si cealaltan V S este cel put in [S[.
410
a) Grafurile complete au proprietatea de mai sus ?
(argumentat i raspunsul)
b) Daca si d sunt constante (nu depind de n), demonstrat i
ca diametrul lui G satisface
d(G) =C(logn).
(1+3 = 4 puncte)
Problema 3. Muchiile grafului conex G = (V, E) se
coloreaza arbitrar rosu si albastru.
a) Demonstrat i ca exista n G un parcurs Euleian nchis
fara muchii consecutive de aceeasi culoare daca si numai
daca pentru ecare varf v V al lui G numarul muchi-
ilor rosii incidente cu v este egal cu numarul muchiilor
albastre incidente cu v.
b) Daca graful G este complet si x, y, z sunt trei varfuri
distincte ale sale demonstrat i ca daca exista n G un
drum fara muchii consecutive de aceeasi culoare de la
x la y trecand prin z, atunci exista un drum cu aceeasi
proprietate care are ca prima muchie pe xz sau ca ultima
muchie pe zy. (1+1+2 = 4 puncte)
Problema 4. Fie G un graf si (G) gradul minim al
unui varf al sau. Descriet i un algoritm care, pentru
un arbore dat T cu k (G) muchii, sa construiasca
(n timp polinomial) un subgraf H al lui G astfel ncat
H

= T. (2 puncte)
411
Setul de probleme 5
Problema 1. Sa se arate ca un graf G este bipartit
daca si numai daca orice subgraf indus H al lui G satis-
face proprietatea 2(H) [H[ (3 puncte)
Problema 2. Demonstarat i ca intr-un graf bipartit G
cu n virfuri si m muchii avem inegalitatea 4m n
2
. (2
puncte)
Descriet i un algoritm care sa testeze daca un graf cu n
virfuri si m muchii este complementarul unui graf bipar-
tit in timpul O(n +m) (3 puncte)
Problema 3. Aratat i ca orice graf G cu m muchii
are un graf partial H bipartit si cu cel put in
m
2
muchii.(3
puncte)
Problema 4. Demonstrat i ca in orice graf conex G =
(V, E) exista o mult ime stabila S astfel incit graful bipar-
tit H = (S, V S; E

) este conex, unde E

= E1
2
(V S)
. Deducet i ca (G)
[G[1
(G)
pentru orice graf conex G.
(3 puncte)
412
Setul de probleme 6
Problema 1. Pentru d N

se considera graful G
d
=
K
2
K
2
... K
2
. .
d factori
.
Sa se determine ordinul, dimensiunea si diametrul lui G
d
.
(2 puncte)
Sa se arate ca G
d
este bipartit si sa se determine (G
d
).
(2 puncte)
Problema 2. Un graf cu cel put in trei virfuri se
numeste condent ial conex daca pentru orice trei virfuri
distincte a, b, c ale grafului exista un drum de la a la
b astfel incit niciunul dintre virfurile interne ale acestui
drum (daca exista astfel de virfuri) nu este c sau un
vecin al lui c. Un exemplu banal de graf condent ial
conex este graful K
n
cu n 3.
Demonstrat i ca un graf conex G = (V, E), cu cel put in
trei virfuri si care nu-i complet, este condent ial conex
daca si numai daca au loc urmatoarele doua condit ii :
1. Pentru orice virf v mult imea N(v) = w V [w ,=
v, vw , E este nevida si induce un graf conex.
2. Orice muchie a grafului este cont inuta intr-un C
4
indus in graf sau este muchia din mijlocul unui P
4
indus in graf.
(4 puncte)
413
Problema 3. In Problema 2-SAT se dau : o mult ime
de variabile boolene U = x
1
, x
2
, ..., x
n
si o mult ime de
clauze C = C
1
, C
2
, ..., C
m
, unde ecare clauza C
i
este
disjunct ia a doi literali C
i
= v
i
w
i
, literalii reprezentind
variabile sau negat iile acestora. Problemei i se asociaza
un digraf G cu V (G) = x
1
, x
2
, ., x
n
, x
1
, x
2
, ...., x
n
(adica
tot i literalii posibili) si in care pentru ecare clauza C
i
=
v
i
w
i
se adauga arcele v
i
w
i
si w
i
v
i
(folosind, evident,
convent ia referitoare la dubla negare). Demonstrat i ca
exista o atribuire a valorilor de adevar si fals pentru
variabilele booleene, astfel incit ecare clauza sa e
adevarata, daca si numai daca digraful G are poprietatea
ca pentru orice i 1, ..., n x
i
si x
i
apart in la compo-
nente tari conexe diferite. (4 puncte)
Argumentat i complexitatea timp de O(n + m) pentru
testarea proprietat ii de mai sus. (2 puncte)
414
Setul de probleme 7
Problema 1. Gossip Problem. Intr-un grup de n
doamne, ecare cunoaste o parte dintr-o birfa pe care
celelalte n-o cunosc. Ele comunica prin telefon si orice
apel telefonic intre orice doua doamne are ca efect fap-
tul ca ecare din ele va aa tot ce cunoaste cealalta.
(a) Descriet i o schema de a da telefoanele astfel incit
intr-un numar minim f(n) de apeluri telefonice, ecare
doamna va aa tot ce stiu celelalte.
Indicat ie: Aratat i ca f(2) = 1, f(3) = 3, f(4) = 4 si
pentru n > 4 f(n) = 2n 4 (usor, indicind scheme de
telefonare cu aceste numere de apeluri). Incercat i sa
argumentat i ca 2n 4 este chiar numarul minim.
(2 puncte pentru descrierea schemei, 1 punct pentru
demonstrarea optimalitat ii)
(b) Modelat i problema in limbajul teoriei grafurilor: schemei
de telefonare ii va corespunde un sir de muchii iar cunoasterea
comuna se va exprima printr-o conditit ie referitoare la
existent a unor drumuri speciale cu elemente din sirul
considerat (1 punct)
415
Problema 2. Fie D un digraf si doua funct ii denite
pe multimea arcelor sale, a : E(D) R
+
si b : E(D)
R

+
. Descriet i un algoritm ecient pentru determinarea
unui circuit C

in D astfel incit
a(C

)
b(C

)
= min
a(C)
b(C)
; C circuit in D
(4 puncte)
Problema 3. Fie A
1
, A
2
, ..., A
n
submult imi distincte
ale unei mult imi de n elemente S. Demonstrat i ca exista
un element x in mult imea S astfel incit A
1
x, A
2

x, ..., A
n
x sa e si ele distincte. (2 puncte)
Problema 4. Fie G un graf si c : E(G) R
+
o
funct ie de capacitate a muchiilor. Oricarui drum din
graf cu macar o muchie i se asociaza locul ingust ca
ind muchia sa de capacitate minima . Descriet i un
algoritm ecient care sa determine pentru doua virfuri s
si t distincte ale grafului drumul cu locul ingust cel mai
mare (dintre toate drumurile de la s la t in graful G).
(4 puncte)
416
Setul de probleme 7
Problema 1. Fie G = (V, E) un digraf de ordin n, a : E R
+
o funct ie de cost nenegativa, si s ,= t doua varfuri xate. Pentru
rezolvarea problemei P1 (a determinarii unui drum de cost a minim
de la s la t n G) se propune urmatorul algoritm:
1. for each i V do p
i
0;
i s;nainte(s) s;
2. while i ,= t do
if j V astfel ncat p
i
p
j
= a
ij
then
nainte(j) i; i j;
else
p
i
min
ijE
(a
ij
+p
j
); i nainte(i) ;
3. Costul unui drum de cost minim de la s la t este p
s
p
t
si un drum de cost minim se obt ine din:
t, nainte(t), nainte(nainte(t)), . . . , s.
a)Demonstrat i ca daca pasul 2 se termina atunci armat iile din
pasul 3 sunt corecte.(2 puncte)
b)Stabilit i complexitatea timp a algoritmului(2 puncte)
Problema 2. Fie T = (V, E) un arbore si w : V R
+
o funct ie de pondere nenegativa. Pentru orice subarbore
T

al lui T se deneste ponderea sa, w(T

), ca ind suma
ponderilor varfurilor sale.
Aratat i ca exista un varf v
0
V astfel ncat nici unul
din subarborii lui T v
0
nu are ponderea mai mare decat
1
2
w(T).(1 punct)
Descriet i un algoritm cu timpul O([V [) pentru gasirea lui
v
0
. (2 puncte)
417
Problema 3. Daca G si H sunt doua gra-
furi, notat ia G H semnica faptul ca exista
f : V (G) V (H) astfel ncat uv E(G)
avem ca f(u)f(v) E(H) (exista un morsm
de grafuri de la G la H).
Justicat i corectitudinea unui algoritm care sa
raspunda n timpul O(1) la ntrebarea: Are
loc C
n
C
m
? (n, m N, n, m 3; C
k
este
graful circuit de ordin k). (3 puncte)
Problema 4. Daca H este un graf, atunci
q(H) noteaza numarul componentelor conexe
de ordin impar ale lui H, iar (H) cardinalul
maxim al unui cuplaj al lui H . Demonstrat i ca
pentru orice graf G are loc relat ia:
max
SV (G)
(q(GS) [S[) = [V (G)[ 2(G) .
(Se presupune cunoscuta teorema lui Tutte)(4 puncte)
418
Setul de probleme 7
Problema 1. Determinat i numarul cuplajelor perfecte
ale grafului:
1 2 3 2n-1
2n
(3 puncte)
Problema 2.
a) Fie D = (V, E) un digraf aciclic cu n varfuri si m arce
si A, B V doua mult imi disjuncte, stabilen G(D) (gra-
ful suport al digrafului). Fie d(A, B) := mind(a, b)[a
A, b B (d(x, y)=distant a n D de la x la y = lungimea
celui mai scurt drum dintre x si y, daca acesta exista).
Descriet i un algoritm de complexitate C(n +m) pentru
aarea unei mult imi maximale 1 de drumuri disjuncte
(cu mult imile de varfuri disjuncte) de la A la B, ecare
de lungime d(A, B) (maximalitatea lui 1 este n raport
cu incluziunea, adica nu mai exista un alt drum de la A
la B care sa aiba lungimea d(A, B) si sa e disjunct de
orice drum din 1).
b) Aratat i cum poate folosit algoritmul de la a) pen-
tru implementarea algoritmului lui Hopcroft & Karp de
aare a unui cuplaj de cardinal maxim ntr-un graf bi-
partit.
(3+2 puncte)
419
Problema 3. Fie D = (V, E) un digraf cu mult imea de
varfuri V = 1, . . . , n si mult imea arcelor E =e
1
, . . . , e
m
.
Fie A = (a
ij
) /
nm
(1, 0, 1) matricea de incident a
a lui D (daca arcul e
j
iese din i atunci a
ij
= 1, daca arcul
e
j
intra n i atunci a
ij
= 1, altfel a
ij
= 0). Aratat i ca
pentru orice submatrice patrata B a lui A are loc:
det(B) 1, 0, 1.
(2 puncte)
Problema 4.

Intr-un graf fara varfuri izolate se con-
struieste un drum P astfel: se pleaca dintr-un varf oare-
care de start si apoi, din varful curent n care ne aam,
alegem un vecin diferit de varfurile deja vizitate. Atunci
cand nu mai este posibila nici o alegere, construct ia
lui P se ncheie. Evident, lungimea drumului P este
cel put in 1 si ea depinde de structura grafului si de
alegerile facute. Proprietarul grafului solicita o plata
pentru folosirea acestuia n procesul de construct ie a
drumului P. Aceasta plata se poate facenaintea ecarei
alegeri si, daca se plateste 1 RON se obt ine dreptul de
a face aceasta alegere, iar daca se platesc T >> 1 RONi
atunci se obt ine dreptul de a face gratuit toate alegerile
urmatoare. Dupa terminarea construct iei se poate com-
para suma platita, Apriori(P), cu cea care s-ar facut
daca s-ar cunoscut drumul P, notata Posteriori(P).
Gasit i o strategie de plata astfel ncat pentru orice graf
si orice drum construit P sa avem Apriori(P) (2
1/T)Posteriori(P).
(4 puncte)
420
Setul de probleme 8
Problema 1. Fie G un graf conex si o funct ie de cost
c : E(G) R. Vom numi taietura orice mult ime A
de muchii ale lui G cu proprietatea ca exista o bipartit ie
(S, V (G) S) a mult imii virfurilor lui G astfel incit A
este mult imea muchiilor lui G cu extremitat ile in clase
diferite ale bipartit iei.
a) Aratat i ca daca funct ia de cost are proprietatea ca
orice taietura are o unica muchie de cost minim, atunci
exista un unic arbore part ial de cost minim. (2 puncte)
b) Deducet i ca, daca funct ia de cost c este injectiva,atunci
G are un unic arbore part ial de cost minim. (1 punct)
c) Sunt adevarate reciprocele armat iilor a) si b) ? (1
punct)
Problema 2. Consideram o numerotare xata a
celor m > 0 muchii ale unui graf conex G = (V, E) de
ordin n. Pentru orice submult ime de muchii A con-
sideram x
A
GF
m
vectorul m-dimensional cu elemente
0,1 denit prin x
A
i
= 1 e
i
A (vect. caracteristic).
GF
m
este spat iul vectorial peste corpul GF (cu elem. 0
si 1, si operat iile de adunare si inmult ire modulo 2).
421
a) Demonstrat i ca mult imea vectorilor caracteristici ai
tuturor taieturilor grafului G, la care adaugam si vectorul
nul, formeaza un subspat iu vectorial X al lui GF
m
.(1
punct)
b) Demonstrat i ca vectorii caracteristici ai mult imilor
muchiilor circuitelor grafului G genereaza un subspat iu
vectorial U al lui GF
m
ortogonal pe X. (1 punct)
c) Aratat i ca dim(X) n 1 (1 punct)
d) Aratat i ca dim(U) mn +1(1 punct)
e) Deducet i ca dim(X) = n1 si ca dim(U) = mn+1.
(1 punct)
Problema 3. Aratat i ca orice arbore cu gradul maxim
t > 0 are cel put in t virfuri pendante. (2 puncte)
Problema 4. Fie T = (V, E) un arbore cu radacina r
(un virf oarecare) si cu parent(v) parintele nodului v V,
v ,= r. Un cuplaj M al lui T se numeste propriu daca
orice virf expus v (relativ la M ) in T are un frate w
(doua virfuri sunt frat i daca au acelasi parinte) astfel
incit w parent(v) M. a)Demonstrat i ca orice cuplaj
propriu este de cardinal maxim. (1 punct)
b)Aratat i ca pentru orice arbore cu n virfuri, dat prin
listele de adiacent a, se poate construi in timpul O(n) un
cuplaj propriu. (2 puncte)
422
Setul de probleme 8
Problema 1.
O procedura naiva de creare a unei ret ele sociale G =
(V, E) este urmatoarea:
Init ializare
G = (v, ) // v este creatorul ret elei
Aderarea la G (a unui nou membru v , V (G))
V V (G) v; E E(G)
if v has a friend in V (G) then E E vw[w V (G)
G (V, E)
a) Descriet i un algoritm ecient care, pentru un graf
dat G, sa decida daca este o ret ea sociala naiva (a fost
creat cu algoritmul de mai sus).
b) Administratorul ret elei a observat ca pentru orice
doi useri v si w ai ret elei G = (V, E) (v ,= w V ), se
poate raspunde n timp constant la o ntrebare vw E?
astfel: se asociaza grafului o valoare ntreaga pozitiva
x(G) si cate o valoare ntreaga pozitiva y(v) pentru
ecare varf v, astfel ncat pentru orice doua varfuri dis-
tincte v si w are loc vw E y(v) + y(w) > x(G).
Modicat i algoritmul de mai sus pentru a realiza aceasta
noua reprezentare a grafului (se ntret in doar mult imea
varfurilor V , x(G) si lista (y(v))
vV
).
(2+2 = 4 puncte)
423
Problema 2. Consideram urmatoarea euristica pentru
determinarea unui cuplaj de cardinal maximntr-un graf
bipartit G = (S, T; E):
function MMB(G = (S, T; E))
M =
while E ,= do
if u varf de grad 1 then e muchia incidenta cu u
else e o muchie incidenta cu un varf de grad maxim
M M e
se sterg extremitat ile muchiei e din G

return M
a) Demonstrat i ca algoritmul returneaza cuplajul de car-
dinal maxim daca G este arbore.
b) Demonstrat i ca daca G are un unic cuplaj perfect
M
0
, atunci algoritmul returneaza M
0
.
c) Aratat i ca pentru cuplajul M returnat are loc
[M[
(G)
2
. (2+2+2 = 6 puncte)
Problema 3. Fie G = (V, E) un graf conex si c : E R
o funct ie de cost cu valori reale asociate muchiilor.
a) Fie T
0
un arbore part ial al lui G cu proprietatea ca
pentru orice muchie e E(T
0
) exista un arbore part ial de
cost minim T

al lui G astfel ncat e E(T

). Rezulta ca
T
0
este arbore part ial de cost minim al lui G? (argumentat i
raspunsul)
424
(b) Pentru T T
G
denim b(T) = max
eE(T)
c(e). Se
doreste aarea unui arbore T
0
T
G
astfel ncat b(T
0
) =
min
TT
G
b(T). Daca aplicam algoritmul lui Prim pen-
tru aarea unui arbore part ial de cost minim T

, este
acesta o solut ie pentru problema data? (argumentat i
raspunsul)
(2+2 = 4 puncte)
425
Setul de probleme 9
Problema 1. Fie G = (S, T; E) un graf bipartit. Utilizat i
teorema lui Hall pe un graf convenabil pentru a demon-
stra ca pentru orice intreg k, cu 0 k [S[, graful G
are un cuplaj de cardinal cel put in [S[ k daca si numai
daca A S [N
G
(A)[ [A[ k. (2 puncte)
Problema 2. Numim cuplaj de grad maxim in graful
G, un cuplaj M cu suma gradelor virfurilor saturate de
M maxima printre toate cuplajele grafului.
a) Aratat i ca un cuplaj de grad maxim este de cardinal
maxim (2 puncte)
b) Dem. ca exista in graful G un cuplaj care sat-
ureaza toate virfurile de grad maxim daca si numai daca
orice cuplaj de grad maxim are aceeasi proprietate. (2
puncte)
c) Demonstrat i ca daca mult imea virfurilor de grad maxim
ale grafului G induce un graf bipartit, atunci G are un
cuplaj care satureaza toate virfurile de grad maxim. (2
puncte)
d) Deducet i ca mult imea muchiilor unui graf bipartit G
poate partit ionata in (G) cuplaje.(2 puncte)
426
Problema 3. Consideram urmatoarea prob-
lema de decizie:
Instant a: G = (V, E) un graf, k N, b N

.
Intrebare : Exista in G un subgraf H cu b
muchii, fara virfuri izolate si cu ordinul lui H
cel put in k ?
Aratat i ca problema se poate rezolva in timp
polinomial. (2 puncte)
Problema 4. Aratat i, utilizind teorema lui
Tutte, ca orice graf 2-muchie conex 3-regulat
are un cuplaj perfect. (2 puncte)
427
Setul de probleme 10
Problema 1. Fie G un graf conex cu n virfuri si T
G
familia arborilor sai part iali. Se considera graful H =
(T
G
, E(H)) unde T
1
T
2
E(H) [E(T
1
)E(T
2
)[ = 2.
a) Demonstrat i ca H este conex si are diametrul cel mult
n 1. (2 puncte)
b)Demonstrat i ca pentru orice funct ie de cost c pe mult imea
muchiilor grafului G, mult imea arborilor part iali de cost
c minim induce un subgraf conex in H. (2 puncte)
Problema 2. Fie H = (V, E) un digraf si ts E un arc
xat al sau. Se coloreaza toate arcele lui H cu galben,
rosu si verde arbitrar, cu singura condit ie ca arcul ts sa
e galben (se poate intimpla ca sa nu avem arce rosii
sau verzi). Demonstrat i algoritmic ca are loc exact una
din urmatoarele situat ii:
i) exista un circuit in graful G(H) (nu se t ine seama de
orientare) cu arce galbene sau verzi care cont ine arcul
ts si toate arcele galbene ale sale au aceeasi orientare.
ii) exista o partit ie (S, T) a lui V astfel incit s S, t T,
toate arcele de la S la T sunt rosii si toate arcele de la
T la S sunt rosii sau galbene.
(2 puncte)
428
Problema 3. Fie G = (V, E) un graf. O mult ime de
virfuri A V se numeste m-independenta daca exista un
cuplaj M al lui G astfel incit A S(M). Demonstrat i ca
daca A si B sunt mult imi m-independente si [A[ < [B[,
atunci b B A : A b este m-independenta
(mult imile m-independente maximale au acelasi cardi-
nal).(4 puncte)
Problema 4. Cuplaje stabile in grafuri bipartite
Fie graful complet bipartit K
n,n
= (B, F; E), unde B =
b
1
, b
2
, ..., b
n
si F = f
1
, f
2
, ..., f
n
. Daca M este un cuplaj
perfect in K
n,n
(ecare b este cuplat cu exact un f), vom
folosi notat ia : b
i
f
j
M f
j
= M(b
i
) b
i
= M(f
j
).
Vom presupune ca
b B are o ordonare a preferint elor sale pe F :
f
i
1
<
b
f
i
2
<
b
... <
b
f
i
n
si
f F are o ordonare a preferint elor sale pe B :
b
i
1
<
f
b
i
2
<
f
... <
f
b
i
n
.
Un cuplaj perfect M al lui K
n,n
se numeste stabil daca :
b B daca f <
b
M(b), atunci M(f) <
f
b si, de aseme-
nea,
f F daca b <
f
M(f), atunci M(b) <
b
f .
Sa se arate ca pentru orice ordonari ale preferint elor ex-
ista un cuplaj stabil si sa se construiasca unul in C(n
3
).
(4 puncte)
429
Setul de probleme 11
Problema 1. Se dispune de un algoritm care primind
la intrare un graf G si o funct ie de pondere nenegativa
pe mult imea muchiilor acestuia, returneaza un cuplaj
perfect in graful G de pondere minima (printre toate
cuplajele perfecte ale grafului; daca G nu are cuplaj per-
fect se anunt a acest lucru). Aratat i case poate utiliza
acest algoritm pentru determinarea ecienta a cuplaju-
lui de cardinal maxim intr-un graf oarecare. (3 puncte)
Problema 2. Aratat i ca se poate determina, intr-o
matrice cu elemente 0 si 1 data, o mult ime de cardinal
maxim de elemente egale cu 0 si care sa nu se gaseasca
pe aceeasi linie sau coloana, cu ajutorul unui algoritm de
ux maxim (pe o ret ea convenabil denita). (3 puncte)
Problema 3. Digraful G = (V, E) descrie topologia in-
terconectarii intr-o ret ea de procesoare. Pentru ecare
procesor v V se cunoaste incarcarea sa load(v) R
+
.
Se cere sa se determine (cu ajutorul unei probleme de
ux maxim) un plan de echilibrare statica a incarcarii
procesoarelor : se va indica pentru ecare procesor ce
cantitate de incarcare va trimite si la ce procesor ast-
fel incit, in nal, toate procesoarele sa aiba aceeasi
incarcare. (4 puncte)
430
Problema 4. Sa se determine uxul de valoare maxima
in reteaua din gura de mai jos (explicind funct ionarea
algoritmului lui Edmonds-Karp):
4
3
1
4
3
5
10
3
6
a c
t
s
b
d
(Etichetele arcelor reprezinta capacitat ile)
(4 puncte)
431
Setul de probleme 11
Problema 1. Consideram urmatoarele prob-
leme de decizie:
PERF Instant a: G un graf.
Intrebare: Are G un cuplaj perfect?
3PERF Instant a: G un graf cu gradul ecarui varf 3.
Intrebare: Are G un cuplaj perfect?
Demonstrat i ca PERF se reduce polinomial la
3PERF (4 puncte)
Problema 2. Demonstrat i ca nu exista nici
o permutare e
1
, e
2
, . . . , e
10
a muchiilor grafu-
lui complet K
5
, astfel ncat pentru orice i
1, . . . , 9 muchiile e
i
si e
i+1
nu sunt adiacente
n K
5
si, de asemenea, e
1
si e
10
nu sunt adia-
cente n K
5
. (2 puncte)
432
Problema 3. Un organizator al unei conferint e trebuie sa asigure
fet e de masa (curate) pentru ecare din cele D zile cat dureaza
conferint a.
Se cunoaste numarul M
i
al meselor de care e nevoie n ziua i a
conferint ei (i = 1, D). Se considera ca toate cele M
i
fet e de masa
se murdaresc la sfarsitul zilei i (i = 1, D).
Organizatorul are de alesntre a cumpara fet e de masa noi, la pret ul
unitar p, sau, n dimineat a zilei i, sa trimita la curat at fet e de masa
murdare (din zilele precedente; i 2). Curat atoria are doua tipuri
de servicii: serviciul rapid, prin care se returneaza fet ele de masa
curate la nceputul zilei i + 1 la un cost unitar c
1
, si serviciul lent
prin care returneaza fet ele de masa curate la nceputul zilei i +2 la
un cost unitar c
2
. Desigur, p > c
1
> c
2
.
Problema pe care si-o pune organizatorul este de a face o plani-
care a modului de cumparare si trimitere la curat atorie a fet elor de
masa, astfel ncat sa satisfaca toate cererile pe durata conferint ei,
la un pret minim.
(Se presupune ca nu exista fet e de mese n stoc, la nceputul
conferint ei, si ca valoarea acestora dupa terminarea conferint ei e
neglijabila).
Sa se formuleze problema organizatorului ca o problema de ux de
cost minim (justicare). (4 puncte)
Problema 4. O euristica naturala pentru colorarea varfurilor unui
graf G = (V, E) este urmatoarea:
a) Se alege o D-ordonare a lui G, adica o ordonare V = v
i
1
, v
i
2
, . . . , v
i
n

astfel ncat d
G
(v
i
1
) d
G
(v
i
2
) . . . d
G
(v
i
n
).
b) Se coloreaza greedy varfurile: lui v
i
1
i se atribuie culoarea 1 si
apoi pentru ecare varf v
i
j
, cu j = 2, . . . , n, se atribuie cea mai mica
culoare posibila (cel mai mic numar natural p cu proprietatea ca nu
a fost atribuit drept culoare unuia dintre vecinii sai deja colorat i).
433
Consideram urmatoarea problema de decizie:
3GCOL Instant a: G un graf.
Intrebare: Exista o D-ordonare a varfurilor lui G astfel ncat
euristica de mai sus da o 3-colorare a lui G ?
Demonstrat i ca problema
3COL Instant a: G un graf.
Intrebare: Admite G o 3-colorare ?
se reduce polinomial la 3GCOL. (4 puncte)
434
Setul de probleme 11
Problema 1. Fie R = (G, s, t, c) o ret ea (G digra-
ful suport, s V (G) intrarea, t V (G), t ,= s iesirea
si c : E(G) R
+
funct ia de capacitate). Presupunem
(fara a restrange generalitatea !) ca st si ts nu sunt arce
n G. Se dispune si de o funct ie de marginire inferioara
m : E(G) R
+
, satisfacand m(e) c(e) pe orice arc
e al lui G. Numim ux legal n R orice ux x n R cu
proprietatea ca x(e) m(e) e E(G).
a) Demonstrat i ca pentru orice ux legal x si orice
sect iune (S, T) n R are loc
v(x)

iS,jT,ijE(G)
c(ij)

iS,jT,jiE(G)
m(ji).
b) Se construieste din R ret eaua R astfel:
- se adauga la G o intrare noua s si o iesire noua t;
- pentru v V (G) se adauga arcul sv de capacitate
c(sv) =

uvE(G)
m(uv);
- pentru v V (G) se adauga arcul vt de capacitate
c(vt) =

vuE(G)
m(vu);
- se adauga arcele st si ts de capacitate c(st) = c(ts) =
;
- se deneste c pe arcele ij ale lui G ca ind c(ij) =
c(ij) m(ij).
435
Demonstrat i ca exista un ux legal n ret eaua R daca si
numai daca exista un ux de valoare M =

eE(G)
m(e)
n ret eaua R = (G, s, t, c) (G este digraful construit mai
sus, c este funct ia de capacitate denita mai sus).
c) Utilizand un ux legal de start (care se poate obt ine
ca la b)), indicat i cum se poate adapta algoritmul lui
Ford & Fulkerson pentru a obt ine un ux legal de valoare
maxima ntr-o ret ea n care pe ecare arc este precizata
capacitatea si marginea inferioara.
(2+2+2 puncte)
Problema 2. Daca H este un graf conex, A V (H)
o mult ime nevida de varfuri ale sale si w : E(H) 1
+
,
atunci se numeste arbore Steiner corespunzator tripletei
(H, A, w) un arbore T(H, A, w) = (V
T
, E
T
), subgraf al lui
H, cu proprietatea ca A V
T
si suma costurilor muchiilor
sale, s[T(H, A, w)] =

eE
T
w(e), este minima printre tot i
arborii subgrafuri ale lui H care cont in A.
a) Justicat i ca determinarea lui T(H, A, w) se poate
face n timp polinomial pentru cazul cand A = V (H)
sau [A[ 2.
436
b) Fie G = (V, E) un graf conex cu mult imea de varfuri
V = 1, . . . , n si A V . Pe mult imea muchiilor lui G
este data o funct ie de cost c : E 1
+
.
Consideram si graful complet K
n
cu mult imea de varfuri
V si cu funct ia de cost c : E(K
n
) 1
+
data de c(ij) =
min
[ P drumn G de la i la j ]
c(P) pentru orice ij E(K
n
).
Demonstrat i ca s[T(G, A, c)] = s[T(K
n
, A, c)] si ca din
orice arbore Steiner T(K
n
, A, c) se poate construi un ar-
bore Steiner T(G, A, c).
c) Aratat i ca exista un arbore Steiner T(K
n
, A, c) cu pro-
prietatea ca varfurile sale care nu-s din A au gradul cel
put in 3. Deducet i (folosind aceasta proprietate ) ca
exista ntotdeauna un arbore Steiner T(K
n
, A, c) cu cel
mult 2[A[ 2 varfuri.
((1+1)+(1+2)+(2+1) puncte)
437
Setul de probleme 12
Problema 1. Fie v valoarea uxului maxim in ret eaua
R = (G, c, s, t). Demonstrat i ca exista k st-drumuri in G,
P
1
, ...., P
k
(0 k [E(G)[), si numerele reale nenegative
v
1
, ..., v
k
, astfel incit x : E(G) R , denit pentru orice
arc ij prin x
ij
= 0 +
t:ijP
t
v
t
, este ux in R de valoare
maxima v. (4 puncte)
Problema 2. Numim GP-descompunere a grafului
graful complet K
n
orice mult ime , = B
1
, ...., B
k(,)
,
unde : ecare B
i
este un subgraf bipartit complet al lui
K
n
, orice doua grafuri B
i
si B
j
au mult imile de muchii dis-
juncte si
i=1,k(,)
E(B
i
) = E(K
n
). Aratat i ca orice GP-
descompunere , a lui K
n
satisfce inegalitatea k(,)
n 1. (4 puncte)
Problema 3. Fie G = (V, E) un graf si f : V V cu
proprietatea ca uv E : f(u)f(v) E. Demonstrat i
ca (G) [f(V )[. Este adevarat ca pentru orice graf
G = (V, E) exista funct ii f cu proprietatea de mai sus si
astfel incit [f(V )[ (G) +1 ? (4 puncte)
438
Problema 4. Fie G = (V, E) un graf. Nu-
mim partit ie speciala orice bipartit ie (S, T) a
lui V astfel incit subgraful indus de T in G este
neconex si subgraful indus de S in complemen-
tarul grafului G este neconex.
Aratat i ca graful circuit C
n
(n 3) nu are
partit ii speciale.
Descriet i un algoritm polinomial care sa testeze
daca un graf dat are partit ii speciale. (2 puncte)
439
Setul de probleme 13
Problema 1. Consiliul municipal al unui orasel a decis
sa elimine blocajele de circulat ie de pe strazile aces-
tuia prin introducerea sensului unic pe ecare strada.
Desigur, va trebui ca ntre orice doua locat ii sa ex-
iste (macar) un drum de acces dupa aceasta decizie.
Daca reprezentam graful strazilor folosind noduri pentru
intersect iile stradale si muchii conectand aceste noduri
corespunzator strazilor, o situat ie simplicata este data
de urmatoarea gura :
Desigur, graful real al strazilor este mult mai complicat
si de aceea a fost angajat un expert (student la info)
care, analizandu-l, a observat ca are proprietatea ca este
2-conex (orice intersect ie s-ar bloca, singurele locat ii
afectate sunt cele de pe strazile din acea intersect ie)
si a propus urmatorul algoritm de orientare a muchiilor
(xarea sensului unic pentru ecare strada):
440
1. Se alege un nod oarecare si se executa o parcurgere
dfs etichetand nodurile de la 0 la n1 (n e numarul
de noduri din graf) n ordinea ntalnirii lor;
2. Fiecare muchie (strada) este orientata de la nodul
cu eticheta mai mica la nodul cu eticheta mai mare
daca acea muchie face parte din arborele dfs con-
struit, si de la nodul cu eticheta mai mare la nodul
cu eticheta mai mica, n caz contrar.
Aratat i ca algoritmul funct ioneaza corect pe graful din
gura de mai sus si apoi demonstrat i ca algoritmul este
corect (digraful obt inut este tare conex) pentru orice
graf 2-conex. (1+3 puncte)
Problema 2. Demonstrat i ca orice graf G conex are
un subgraf indus H astfel ncat :
1. H este conex;
2. [H[ = 2[S[ 1, unde S este o mult ime stabila a
grafului H;
3. v V (G) V (H) w V (H) astfel ncat vw E(G).
(2 puncte)
441
Problema 3. La sfarsitul unei zile de lucru, laborantul
a observat ca a disparut un mouse din laborator, desi la
vericarea de dimineat a nu lipsea. Din registrul salii a
rezultat can acea zi au intratn laborator doar urmatorii
sase student i: Ana, Barbu, Costica, Dan, Elena si Ion.
De asemenea, se stie ca ecare din ei a stat n laborator
un interval de timp si apoi a plecat (dar nu se cunosc
orele de venire sau plecare si nici ordinea n care cei
sase au accesat laboratorul). Decanul i-a anchetat, si a
obt inut urmatoarele marturii (sub juramant):
1. Ana a spus ca i-a vazut n laborator pe Barbu si Elena;
2. Barbu a spus ca i-a vazut n laborator pe Ana si Ion;
3. Costica a spus ca i-a vazut n laborator pe Dan si Ion;
4. Dan a spus ca i-a vazut n laborator pe Ana si Ion;
5. Elena a spus ca i-a vazut n laborator pe Barbu si Costica;
6. Ion a spus ca i-a vazut n laborator pe Costica si Elena.
Analizand raspunsurile, decanul (care stia teoria grafurilor)
a intuit ca exact unul (hot ul) dintre cei sase student i a
mint it, apoi, folosind deduct ia logica, l-a identicat si
i-a cerut sa aduca de urgent a mouse-ul napoi pentru a
nu-l exmatricula.
Stiind ca decanul a asociat ecarui student un interval
de timp (notat, A,B,..., dupa numele lor) si ca dintr-o
marturie X... spune ca i-a vazut pe Y... si Z... a dedus
ca intervalul X se intersecteaza cu Y si Z, evident iat i
inconsistent a din graful asociat intersect iilor acestor in-
tervale si cum se poate depista hot ul, n ipoteza ca exact
unul dintre cei sase student i a mint it.
(2+2 puncte)
442
Problema 4. Un grup de polit isti si desfasoara ac-
tivitatea n 8 locat ii a, b, . . . , h conectate prin strazi cu
sens unic de circulat ie, asa cum este descris n digraful
de mai jos. Se observa ca n ecare nod (locat ie) intra
doua arce si din ecare ies doua arce. De asemenea se
observa ca digraful corespunzator este tare conex.
a
b
c
d
h
e
g
f
Seful polit istilor a hotarat sa vopseasca strazile rosu si
oranj astfel ncat din ecare nod sa plece un arc rosu
si un arc oranj. Scopul acestei decizii a fost ca atunci
cand ntr-o locat ie oarecare se ntampla o infract iune,
sa-i adune operativ pe tot i polit istii n acel nod al digra-
fului transmit andu-le tuturor prin sistemul lor de radio-
recept ie mesajul Adunarea si un cuvant din r, o

(cuvant ce depinde doar de nodul n care loc infract iunea).


443
La primirea mesajului ecare polit istsi noteaza cuvantul
primit si l foloseste drept algoritm de deplasare astfel:
din nodul n care se aa pleaca pe strada rosie sau
pe strada oranj, dupa cum e prima litera (r sau o)
din cuvantul primit. Apoi, daca n-a ajuns la locul de
adunare (pe care-l recunoaste dupa prezent a sefului),
alege strada indicata de a doua litera a cuvantului si asa
mai departe.
Descriet i (ntr-un pseudocod prietenos) un algoritm care
sa depisteze o vopsire rosu-oranj a arcelor digrafului si,
corespunzator acesteia, a cate unui cuvant de rutare
pentru ecare nod de adunare ( sau sa decida ca nu
exista solut ie).
Pentru digraful din gura exista solut ii! Descriet i una
din ele si argumentat i ca merge (se poate implementa
algoritmul descris, sau se poate folosi o abordare try and
error).
(2+2 puncte)
444
Setul de probleme 14
Problema 1.

In problema P2 - a determinarii dru-
murilor de cost minim de la un varf dat, s, la toate
celelalte ale unui digraf G = (V, E) - se stie ca funct ia
de cost asociata arcelor satisface a : E 0, 1, . . . , C,
unde C este constanta ntreaga (adica nu depinde de
n =[V [ sau de m = [E[).
Sa se adapteze algoritmul lui Dijkstra pentru aceasta
situat ie, astfel ncat complexitatea timp sa e O(n +
m). Se vor descrie structurile de date folosite si modul
(argumentare !) n care se obt ine complexitatea liniara.
(2+2 puncte)
Problema 2. Pentru o instant a ( a problemei 2SAT
construim multigraful G
(
= (V ; E) ale carui muchii sunt
colorate R(osu) si B(leu), astfel:
1. V ; R ; B ;
2. for C ( do
if C = x

then V V x

, x

;R R x

;
if C = x

then V V x

, x

;B B x

;
if C = x

then
V V x

, x

, x
C
; R R x

x
C
; B B x
C
x

;
if C = x

then
V V x

, x

, x
C
; R R x

x
C
; B B x
C
x

3. E R B; output G
(
= (V ; E).
445
Observam ca V cont ine mult imea X a variabilelor booleene
care apar n 2-clauzele lui ( si pentru ecare 2-clauza
C ( compusa dintr-un literal pozitiv si unul negativ
(clauza mixta) se adauga un varf nou la V . Notat ia
R B semnica faptul ca muchiile e R B au multi-
plicitate 2 [extremitat ile lui e sunt unite printr-o muchie
R(osie) si una B(leu)].
Demonstrat i ca ( este satisabila daca si numai daca
exista S, T V astfel ncat: S T = , S T = V , nu
exista muchii R(osii) cu ambele extremitat i n S si nu
exista muchii B(leu) cu ambele extremitat i n T.
(2 +2 puncte)
Problema 3. Fie G = (V, E) un graf conex si c :
E R. Pentru un arbore part ial oarecare T = (V, E

)
al lui G, si doua varfuri oarecare v, w V , se noteaza
cu v

T
w unicul drum de la v la w n T si cu E(v

T
w)
mult imea muchiilor acestuia. Demonstrat i ca arborele
part ial T

= (V, E

) este arbore part ial de cost minim


daca si numai daca
e = vw E \ E

, e

E(v

T

w) are loc c(e) c(e

).
(1+1 puncte)
446
Problema 4. Fie G = (V, E) un graf conex fara punt i
si c : E R. Fie T = (V, E

) un arbore part ial al lui G de


cost minim si e E

o muchie oarecare a sa. T e are


exact doua componente conexe cu mult imile de varfuri
V
1
si V
2
. Muchia de cost minim (diferita de e) printre
toate muchiile lui G cu o extremitate n V
1
si cealata n
V
2
se noteaza cu rep
T
(e) (deoarece e nu e punte n G,
rep
T
(e) exista !).
a) Demonstrat i ca daca T

e arbore part ial de cost minim


n G si e este o muchie oarecare a lui T

atunci T

1
=
T

e + rep
T
(e) este arbore part ial de cost minim n
Ge (T

1
se obt ine din T

scot and muchia e si adaugand


muchia rep
T
(e) ).
b) Fie k N astfel ncat 2 k < [V [ si T
1
, . . . , T
k
arbori
part iali ai lui G astfel ncat c(T
1
) c(T
2
) . . . c(T
k
)
si pentru orice alt arbore part ial T al lui G avem c(T)
c(T
k
) (T
1
, . . . , T
k
sunt primii cei mai mici arbori part iali
ai lui Gn raport cu costul c).
Fie T

un arbore part ial de cost minim n G. Pentru


ecare muchie e a lui T

consideram ponderea w(e) =


c(rep
T
(e)) c(e). Sortam cele [V [ 1 muchii ale lui
T

crescator n raport cu ponderile w. Fie S mult imea


formata din ultimile [V [ k muchii din acest sir.
Demonstrat i ca S E(T
i
) i 1, . . . , k.
(2+2 puncte)
447
Setul de probleme 15
Problema 1. Demonstrat i ca numarul cuplajelor per-
fecte ale unui arbore este 0 sau 1 si ca un arbore are
un cuplaj perfect daca si numai daca prin ndepartarea
oricarui varf se obt ine o padure cu exact un arbore de
ordin impar. (2+2 puncte)
Problema 2. Fie R = (G, s, t, c) o ret ea si (S
i
, T
i
) (i =
1, 2) sect iuni de capacitate minima ale ei. Demonstrat i
ca si (S
1
S
2
, T
1
T
2
) si (S
1
S
2
, T
1
T
2
) sunt sect iuni
de capacitate minima n R. (3+1 puncte)
Problema 3. Fie G = (S, T; E) un graf bipartit si M un
cuplaj de cardinal maxim n G. Consideram urmatorele
mult imi de varfuri:
1. P = v ST[w E(M)si un drum alternat (relativ la M n G)
de lungime para de la w la v;
2. I = v ST[w E(M)si un drum alternat (relativ la M n G)
de lungime impara de la w la v;
3. N = v S T[ nu w E(M)si un drum alternat (relativ la
M n G ) de la w la v.
448
Demonstrat i ca :
a) Mult imile P,I si N sunt disjuncte doua cate doua si
sunt aceleasi pentru orice cuplaj de cardinal maxim M.
b)

In orice cuplaj de cardinal maxim al lui G ecare varf
din I este cuplat cu un varf din P si ecare varf din N
este cuplat cu un alt varf din N. Cardinalul maxim al
unui cuplaj al grafului este [I[ +
[U[
2
.
(2+2 puncte)
Problema 4. O rma de soft dispune de n pro-
gramatori, P
1
, P
2
, . . . , P
n
, pentru executarea a m lucrari,
L
1
, L
2
, . . . , L
m
. Se cunoaste pentru ecare programator
P
i
lista /
i
de lucrari pe care le poate executa si numarul
s
i
al lucrarilor din /
i
pe care le poate termina ntr-o
saptamana (s
i
[/
i
[). Fiecare lucrare poate execu-
tata de macar un programator.
Sa se descrie cum se poate determina numarul minim de
saptamani n care se pot termina toate lucrarile, folosind
uxurile n ret ele.
(2 puncte)
449
Setul de probleme 16
Problema 1. Fie G = (V, E) un graf cu n varfuri
v
1
, . . . , v
n
si c : E R
+
o funct ie de capacitate neneg-
ativa, care asociaza ecarei muchii e capacitatea c(e).
Se numeste sect iune n G orice partit ie cu doua clase
(S, T) a lui V . Capacitatea sect iunii (S, T) este c(S, T) =

eE, [eS[=1
c(e). O sect iune miniman G este o sect iune
(S
0
, T
0
) astfel ncat
c(S
0
, T
0
) = min
(S,T) sect iune n G
c(S, T).
a) Sa se arate ca se poate determina n timp polinomial
o sect iune minima n graful G rezolvand un numar poli-
nomial de probleme de ux maxim pe ret ele convenabil
alese.
b) Aratat i ca daca G = C
n
(graful circuit de ordin n 3)
cu toate muchiile de capacitate 1, atunci exista
n(n1)
2
sect iuni de capacitate minima. (2+2 = 4 puncte)
Problema 2.

In continuarea notat iilor de la problema
1, denim pentru orice pereche i, j 1, . . . , n, i ,= j,
c

i,j
= min
(S,T) sect iune n G cu v
i
S si v
j
T
c(S, T).
a)Demonstrat i ca pentru orice sir i
1
, i
2
, . . . , i
k
de k 3
elemente distincte din 1, . . . , n are loc
c

i
1
, i
k
minc

i
1
, i
2
, c

i
2
, i
3
, . . . , c

i
k1
, i
k
.
450
b) Se considera graful K
n
cu mult imea de varfuri 1, . . . , n
si funct ia de pondere pe muchiile sale c

denita mai
sus (notam ca c

i, j
= c

j, i
). Fie T

un arbore part ial de


pondere maxima al lui K
n
(n raport cu ponderea c

).
Demonstrat i ca i, j 1, . . . , n, i ,= j, daca P este
unicul drum de la i la j n T

, atunci
c

i, j
= min
eP
c

(e).
Observat ie: Rezulta ca exista un arbore cu mult imea de varfuri
V , cu ponderi pe muchii astfel ncat, pentru a determina capaci-
tatea minima a unei sect iuni n graful G care separa doua virfuri,
determinam muchia de pondere minima de pe drumul ce uneste
cele doua varfuri n arbore. (2+3 = 5 puncte)
Problema 3.
Se considera o competit ie sportiva ntre n echipe
e
1
, . . . , e
n
, n care ecare echipa disputa a 1 meci-
uri cu ecare dintre celelalte n 1 echipe (deci, ecare
echipa va juca a(n 1) meciuri n total). Orice meci se
termina cu victoria uneia dintre cele doua echipe partic-
ipante (nu exista remize). Se doreste sa se decida daca
este posibil ca, la nalul competit iei, ecare echipa e
i
sa castige un numar de c
i
meciuri (vectorul de ntregi
c[1. . . n] este intrarea problemei de decizie).
Aratat i ca problema se poate rezolvan timp polinomial cu ajutorul
uxurilor pe o ret ea convenabil denita. (3 puncte)
Problema 4.

In ret eaua R = (G, s, t, c), toate ca-
pacitat ile nenule sunt numere ntregi pozitive pare.
Demonstrat i ca exista un ux x de valoare maxima cu
proprietatea ca pe orice arc, daca uxul este nenul atunci
el este un numar pozitiv par. (2 puncte)
451
Setul de probleme 17
Problema 1. Fie G = (S, T; E) un graf bipartit cu
n =[V (G)[ varfuri si m = [E[ muchii.
a) Demonstrat i ca m
n
2
4
.
b) Demonstrat i ca, daca B
nm
este matricea de incident a
a lui G, atunci orice submatrice patrata C a lui B are
proprietatea ca det(C) 1, 0, 1.
c) Se orienteaza arbitrar muchiile lui G si se obt ine di-
graful

G. Demonstrat i ca exista K V (G) = S T
astfel ncat K e mult ime stabila n G si oricare ar
v V (G)K, exista u K cu proprietatea ca uv E(

G).
(2+2+2 = 6 puncte)
Problema 2. Fie G = (V, E) un graf de ordin n si
s, t V astfel ncat d
G
(s, t) >
n
2
. Demonstrat i ca exista
v V s, t cu proprietatea ca orice drum de la s la
t n graful G trece prin v. Descriet i un algoritm de
complexitate timp O(n + [E[) care sa determine acest
varf v.
(2+2 = 4 puncte)
452
Problema 3. a) Modicat i algoritmul BFS astfel ncat
pentru un graf G = (V, E) dat si s V sa determine
pentru orice varf v V numarul drumurilor de lungime
minima de la s la v, n timpul O([V [ +[E[).
b) Aceeasi problema pentru cazul n care G este digraf!
(2+2 = 4 puncte)
453
Setul de probleme 18
Problema 1. Fie G = (V, E) un graf conex cu n varfuri
si m muchii si e c : E R
>0
o funct ie de cost pe muchi-
ile sale.
a) Fie T = (V, E
T
) un arbore part ial al lui G cu propri-
etatea ca pentru orice muchie e E
T
exista un arbore
part ial de cost minim T

= (V, E
T
) astfel ncat e E
T
.
Adevarat sau fals? : T este arbore part ial de cost
minim (pentru raspunsul adevarat dat i o demonstrat ie,
pentru raspunsul fals dat i un contraexemplu).
b) Fie R si S doi arbori part iali ai lui G, R ,= S. Cum
se poate construi un sir de lungime minima de arbori
part iali T
0
, T
1
, . . . , T
k
astfel ncat T
0
= R, T
k
= S si ecare
arbore T
i
(i 1) se obt ine din precedentul, T
i1
, prin
stergerea unei muchii si adaugarea alteia? Care este
complexitatea timp a construct iei?
c) Pentru orice arbore part ial T = (V, E
T
) al lui G se de-
neste costul sau ca ind produsul costurilor muchiilor
sale: c(T) =

eE
T
c(e). Descriet i un algoritm cat mai e-
cient care sa determine T

, arbore part ial al lui G, astfel


ncat
c(T

) = max
Tarbore part ial al luiG
c(T).
(2+2+2 = 6 puncte)
454
Problema 2. Consideram urmatoarea problema de
decizie:
AGM Input: G = (V, E) graf, k N.
Question: Exista un arbore part ial al T al lui G
cu (T) k ?
Aratat i ca AGM P. (2 puncte)
Problema 3. Fie G = (V, E) un graf 3-regulat, conex
si fara punt i.
a) Fie uv E o muchie oarecare a lui G ca n gura de
mai jos. Se elimina cele doua varfuri u si v, iar vecinii
lor se conecteaza prin muchii asa cum este indicat n
gura. Demonstrat i ca macar unul din grafurile G
1
uv
sau
G
1
uv
este 3-regulat, conex si fara punt i. Se noteaza cu
G

acest graf.
u
v
a b
c d


a b
c d
a b
c d


G G
1 2
uv uv
sau
G
b) Aratat i ca daca G

are un cuplaj perfect M, atunci


M se poate transforma ntr-un cuplaj perfect al lui G.
c) Deducet i ca pentru orice graf 3-regulat, conex si fara
punt i se poate construi un cuplaj perfect. Ce com-
plexitate timp are construct ia, daca G are n varfuri ?
(2+2+2 = 6 puncte)
455
Setul de probleme 19
Problema 1. Se considera ret eaua R = (G, c, s, t) cu
digraful G = (V, E) avand n varfuri si m arce, c : E Z
+
si C Z
+
, C = max
eE
c(e).
a) Demonstrat i ca valoarea maxima a unui uxn ret eaua
R este cel mult m C.
b) Aratat i ca x ux n R, dat K Z
+
, se poate depista
un drum de crestere P de capacitate reziduala (P) cel
put in K (daca el exista), n timpul O(m).
c) Consideram urmatorul algoritm
SC-MAX-FLOW(R)
C = max
eE
c(e)
x 0 // x este uxul curent din ret ea
K 2
1+logC
while K 1 do
while x are un dr. de crest. P cu (P) K do
x x (P)
K K/2
return x
1. Demonstrat i ca algoritmul SC-MAX-FLOW(R) de
mai sus construieste un ux x de valoare maxima n R.
2. Demonstrat i ca, dupa ecare iterat ie a buclei while
exterioare, valoarea maxima a unui ux n R este cel
mult v(x) +m K.
3. Demonstrat i ca pentru ecare valoare a lui K, numarul
iterat iilor buclei while interioare nu depaseste 2m. Deducet i
ca algoritmul are complexitatea O(m
2
logC).
(2+2+1+2+2 = 9 puncte)
456
Problema 2. Consideram urmatoarea problema de
decizie:
MIN-SECTIUNE-UNIC

A
Input: R = (G, c, s, t), ret ea.
Question: Exista n R o unica sect iune de capacitate
minima?
Aratat i ca MIN-SECT IUNE-UNIC

A P. (2 puncte)
Problema 3. a) Fie G = (V, E) un graf si v V un
varf cu gradul d
G
(v) = p 4. Fie N
G
(v) = u
1
, . . . , u
p
.
Construim graful H astfel: (1) se sterg din G muchiile
vu
1
, . . . , vu
p
; (2) se adauga la G circuitul C
2p
cu varfurile
v
1
, . . . , v
2p
; (3) se adauga la graful obt inut muchiile v
2i1
u
i
pentru i 1, . . . , p, si muchia vv
2p
(vezi gura de mai
jos). Demonstrat i ca (H) = (G) +p.
v
u
u u
1
2
p
G
v v
v
v
v
v
v
1
2
3
4
2p-1
2p
u
u
u 1
2
p
H
b) Fie SM3 problema de decizie obt inuta din SM (vezi
pag. 283 din curs) prin restrict ionarea instant ei la un
graf cu gradul maxim cel mult 3. Demonstrat i ca SM
SM3.
(1+2 = 3 puncte)
457