P. 1
AG06-07allinone

AG06-07allinone

|Views: 2|Likes:
Published by Fedot Sereoja

More info:

Published by: Fedot Sereoja on Sep 13, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/12/2014

pdf

text

original

ALGORITMICA

GRAFURILOR
C. Croitoru
2006-2007
Motivat ¸ie: Grafurile sunt considerate cele
mai utilizate ”structuri” abstracte din Infor-
matic˘a .
Scop: Familiarizarea student ¸ilor cu princi-
palele not ¸iuni ¸si rezultate din Teoria Grafurilor
¸si aplicarea acestora ˆın proiectarea unor algo-
ritmi eficient ¸i pentru diversele probleme de op-
timizare pe grafuri.
Cont ¸inut: Probleme, Algoritmi, Complexi-
tate; Vocabular al Teoriei Grafurilor; Probleme
de drum (parcurgeri, drumuri minime, conex-
iune); Arbori part ¸iali de cost minim (union-
find, complexitate amortizat˘a); Cuplaje; Flux-
uri; Reduceri polinomiale pentru probleme de
decizie pe grafuri; Abord˘ari ale problemelor NP-
hard pe grafuri; Grafuri planare.
1
Bibliografie:
- Manualul cursului :
CROITORU C., Tehnici de baz˘aˆın optimizarea
combinatorie, Editura Universit˘at ¸ii ”Al. I. Cuza“
Ia¸si, Ia¸si,1992.(Slide-urile sunt f˘acute utilizˆand
acest text).
- Se poate consulta ¸si capitolul 3 din
CROITORU C., Introducere in proiectarea al-
goritmilor paraleli, Editura Matrix Rom, Bu-
cure¸sti, 2002.
- TOMESCU I., Probleme de combinatorica ¸si
teoria grafurilor, Editura did ¸si ped, Bucure¸sti,
1981.
- DIESTEL R., Graph Theory, Electronic Edi-
tion
-T.H. CORMEN, C.E. Leiserson, R.L. Rivest,
C. Stein: Introduction to Algorithms , The
MIT Press 2001, 2nd edition
2
0. Probleme,Algoritmi,Complexitate
Vom considera o problem˘a (computat ¸ional˘a)
ca fiind o aplicat ¸ie
1 : I →O,
(I mult ¸imea intr˘arilor problemei, mult ¸imea instant ¸elor
problemei; O mult ¸imea ie¸sirilor, r˘aspunsurilor, solut ¸iilor)
care pentru fiecare intrare i ∈ I ofer˘a o ie¸sire
1(i) ∈ O.
Dac˘a O = ¡da, nu¦ atunci 1 se va numi prob-
lem˘a de decizie, 1(i) ∈ ¡da, nu¦ va fi r˘aspunsul
(la ˆıntrebarea pus˘a de 1), iar forma uzual˘a de
prezentare a problemei va fi:
1 Intrare: i ∈ I.
Intrebare: descriere ... ?
Exemplu:
Compus Intrare: n ∈ N n ≥ 2.
Intrebare: Exist˘a p, q ∈ N p, q ≥ 2 ¸si n = pq?
3
Un alt tip de probleme care apar frecvent sunt
cele de c˘autare :
mult ¸imea O cont ¸ine pentru fiecare i ∈ I m˘acar
o solut ¸ie acceptabil˘a ˆın raport cu un anumit
criteriu precizat, iar problema cere g˘asirea unei
astfel de solut ¸ii.
O clas˘a special˘a de astfel de probleme este
cea a problemelor de optimizare, care sunt de
maximizare sau minimizare. Exemple:
Drum Intrare: G un graf, a, b dou˘a vˆarfuri ale lui G.
Ie¸sire: P un drumˆın G de la a la b (dac˘a ∃).
DrMin Intrare: G graf, a, b vˆarfuri ˆın G,
o funct ¸ie de lungime a muchiilor lui G.
Ie¸sire: P

un drumˆın G de la a la b cu suma
lungimilor muchiilor minim˘a, printre
toate drumurile de la a la b ˆın G.
MaxCut Intrare: G graf,
o funct ¸ie de lungime a muchiilor lui G.
Ie¸sire: O bipartit ¸ie (S, T) a mult ¸imii vˆarfurilor
grafului G cu suma lungimilor muchiilor
dintre cele dou˘a clase maxim˘a.
4
Oric˘arei probleme de optimizare i se poate aso-
cia o problem˘a de decizie (care ne va da informat ¸ii
asupra dificult˘at ¸ii ei computat ¸ionale). Pentru cele
dou˘a probleme de optimizare de mai sus, avem:
DrMin-D Intrare: G graf, a, b vˆarfuri ˆın G, k ∈ N,
o funct ¸ie de lungime a muchiilor lui G.
ˆ
Intrebare: Exist˘a P drumˆın 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: Exist˘a (S, T) bipartit ¸ie a mult ¸imii
vˆarfurilor lui G cu suma lungimilor
muchiilor dintre cele dou˘a clase ≥ k ?
Vom considera ˆın continuare doar probleme de
decizie.
Pentru a fi rezolvate cu ajutorul calculatorului
problemele sunt codificate.
Vom considera Σ o mult ¸ime finit˘a fixat˘a nu-
mit˘a alfabet, Σ

mult ¸imea tuturor cuvintelor
peste Σ.
5
Obiectele care apar ˆın descrierea unei prob-
leme (numere rat ¸ionale, grafuri, funct ¸ii, ma-
trici etc.) vor fi reprezentate cu ajutorul unor
cuvinte w ∈ Σ

. Lungimea cuvˆantului w se va
nota cu [w[. Orice mult ¸ime de cuvinte peste Σ,
deci o submult ¸ime a lui Σ

se nume¸ste limbaj
(peste Σ).
Problemele de decizie au forma Dat un anu-
mit obiect, are el o anumit˘a proprietate? Cum
obiectele le reprezent˘am cu ajutorul cuvintelor
ˆınseamn˘a c˘a problema se reduce la ˆıntrebarea
Dat un cuvˆant, are el o anumit˘a proprietate?
Vom considera problem˘a de decizie o funct ¸ie
P : Σ

→ ¡da, nu¦.
Limbajul asociat problemei P este
P
−1
(da) = ¡w[w ∈ Σ

¸si P(w) = da¦.
6
Vom considera c˘a un algoritm este o funct ¸ie

A : Σ

→¡da, nu, nedecidabil¦.
Limbajul L ⊆ Σ

este acceptat de algoritmul A
dac˘a L = ¡w[w ∈ Σ

¸si A(w) = da¦.
Limbajul L ⊆ Σ

este decis de algoritmul A
dac˘a ∀w ∈ L : A(w) = da ¸si ∀w ,∈ L : A(w) = nu.
Limbajul L ⊆ Σ

este acceptat de algoritmul
A ˆın timp polinomial dac˘a L este acceptat de
A ¸si ∃k ∈ N astfel ˆıncˆat pentru orice w ∈ L
algoritmul A evalueaz˘a A(w) = da ˆın timpul
C([w[
k
).
Limbajul L ⊆ Σ

este decis de algoritmul A
ˆın timp polinomial dac˘a ∃k ∈ N astfel ˆıncˆat
pentru orice w ∈ Σ

algoritmul A evalueaz˘a
A(w) = da, dac˘a w ∈ L ¸si A(w) = nu, dac˘a
w ,∈ L, ˆın timpul C([w[
k
).

Prefer˘am un mod informal de prezentare a not ¸iunilor
de algoritm ¸si timp de execut ¸ie
7
Clasa de complexitate P:
P = ¡L ⊂ Σ

[∃A alg. a.ˆı. L e decis de A
ˆın timp polinomial¦.
Dac˘a P e o problem˘a de decizie, atunci ea
este rezolvabil˘a ˆın timp polinomial dac˘a lim-
bajul L = P
−1
(da) satisface L ∈ P. Se noteaz˘a
aceasta (cam abuziv) P ∈ P.
De exemplu, problema DrMIN-D este rezolv-
abil˘aˆın timp polinomial dac˘a funct ¸ia de lungime
(specificat˘aˆın intrarea ei) este cu valori neneg-
ative. Dac˘a se permit ¸si valori negative, atunci
nu se cunoa¸ste 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. Dac˘a not˘am
P
t
= ¡L ⊂ Σ

[∃A alg. a.ˆı. L e acceptat de A
ˆın timp polinomial¦,
se observ˘a imediat c˘a P ⊆ P
t
¸si nu e dificil s˘a
se arate ¸si incluziunea invers˘a, deci P = P
t
.
2. Se verific˘a u¸sor c˘a dac˘a P ∈ P atunci ¸si Σ

\ P ∈ P.
8
Verificare ˆın timp polinomial.
Un algoritm de verificare este o funct ¸ie
A : Σ

Σ

→¡da, nu, nedecidabil¦.
Pentru A(x, y), x este intrarea iar y este certi-
ficatul.
Limbajul L ⊆ Σ

este verificat de algoritmul de
verificare A dac˘a
L = ¡w[w ∈ Σ

¸si ∃y ∈ Σ

a. ˆı. A(w, y) = da¦.
Clasa de complexitate NP:
NP = ¡L ⊆ Σ

[ ∃A algoritm de verificare
cu timp de lucru polinomial a.ˆı.
L = ¡x ∈ Σ

[ ∃y ∈ Σ

, ∃k ∈ N a. ˆı.
[y[ = C([x[
k
) ¸si A(x, y) = da¦
¦.
Dac˘a P e o problem˘a de decizie, atunci ea este
problem˘a (din) NP dac˘a limbajul L = P
−1
(da)
satisface L ∈ NP.
9
Observat ¸ie. NP este mnemonic pentru Nede-
terminist Polinomial ¸si nu pentru NePolinomial.
Un argument c˘a nu e bine s˘a asimil˘am NP cu
nepolinomial este ¸si faptul c˘a P ⊆ NP.
Justificarea este imediat˘a: Dac˘a L ∈ P, atunci exist˘a A :
Σ

→¡da, nu, nedecidabil¦ algoritm care decide Lˆın timp
polinomial. Consider˘am A
t
: Σ

Σ

→¡da, nu, nedecidabil¦,
satisf˘acˆand A
t
(x, x) = A(x) pentru orice x ∈ Σ

. Se vede
u¸sor c˘a L este verificat de A
t
ˆın timp polinomial.
Din definit ¸iile de mai sus ar fi fost mai normal s˘a not˘am
VP (verificabil polinomial). Sintagma Nedeterminist
Polinomial se justific˘a dac˘a am considera algoritmi nede-
termini¸sti ˆın care controlul execut ¸iei este astfel ˆıncˆat
dup˘a fiecare pas este posibil s˘a se execute unul oare-
care dintre pa¸sii specificat ¸i ˆıntr-o mult ¸ime finit˘a de pa¸si
succesori. Un astfel de algoritm accept˘a un cuvˆant de
intrare dac˘a este posibil˘a o execut ¸ie care s˘a conduc˘a
la rezultatul da. Se poate ar˘ata c˘a aceasta definit ¸ie
a accept˘arii nedeterministe este echivalent˘a cu cea de
verificare dat˘a mai sus, ˆın care certificatul este utilizat
pentru efectuarea alegerilor corecte ale pa¸silor urm˘atori
ai unei execut ¸ii a algoritmului nedeterminist.
10
NP noteaz˘a clasa problemelor de decizie pen-
tru care r˘aspunsurile afirmative au certificate
care pot fi folosite pentru a demonstra succint
(ˆın timp polinomial) corectitudinea lor.
Intuitiv, NP este clasa tuturor problemelor de
decizie pentru care se poate verifica un r˘aspuns
pozitiv (da) rapid dac˘a ni se d˘a o solut ¸ie.
De exemplu, pentru problema MaxCut-D un r˘aspuns
afirmativ are drept certificat o partit ¸ie (S

, T

) a mult ¸imii
vˆarfurilor grafului (iar proprietatea c˘a suma lungimilor
muchiilor cu o extremitate ˆın S

¸si cealalt˘a ˆın T

nu
dep˘a¸se¸ste pragul k se face ˆın timp polinomial). Deci,
MaxCut-D ∈ NP.
Dac˘a am considera urm˘atoarea problem˘a de
decizie:
UnDrumIntrare: G un graf, a, b dou˘a vˆarfuri ale lui G.
ˆ
Intrebare: ∃ un unic drum de la a la b ˆın G?
11
Cum s-ar putea justifica un r˘aspuns da la o
problem˘a UnDrum? Dac˘a prezent˘am un drum
anume drept certificat, el nu ne asigur˘a c˘a nu
mai exist˘a ¸si altele. O demonstrat ¸ie succint˘a
(graful e mare) pare a nu exista. Deci nu ¸stim
dac˘a UnDrum ∈ NP.
Clasa de complexitate co-NP:
co-NP = ¡L ⊆ Σ

[ Σ

\ L ∈ NP¦.
O problem˘a de decizie P ∈ co-NP dac˘a
L = P
−1
(da) ∈ co-NP (echivalent, L = P
−1
(nu) ∈ NP).
Exemplu de problem˘a din co-NP:
NeHam Intrare: G un graf.
ˆ
Intrebare: Este adev˘arat c˘a ˆın G nu exist˘a
un circuit care s˘a treac˘a exact o dat˘a
prin fiecare vˆarf al s˘au?
Observat ¸ie. P ⊆ NP ∩ co-NP.
12
Reduceri polinomiale.
Fie L
1
, L
2
⊆ Σ

. Spunem c˘a L
1
se reduce poli-
nomial la L
2
, ¸si not˘am aceasta prin L
1
∝ L
2
,
dac˘a exist˘a f : Σ

→ Σ

o funct ¸ie polinomial
calculabil˘a astfel ˆıncˆat ∀w ∈ Σ

: w ∈ L
1
dac˘a
¸si numai dac˘a f(w) ∈ L
2
.
f se nume¸ste funct ¸ie de reducere ¸si algoritmul polinomial
F care calculeaz˘a f, algoritm de reducere polinomial˘a.
Observat ¸ii. 1. Dac˘a L ∈ P ¸si L
t
∝ L, atunci L
t
∈ P.
Fie A un algoritm polinomial care decide L ¸si F un al-
goritm de reducere polinomial˘a a lui L
t
la L. Atunci,
A
t
= A ◦ F este un algoritm polinomial care decide L
t
.
(∀x ∈ Σ∗, A
t
(x) = da ⇔ A(F(x)) = da ⇔ F(x) ∈ L ⇔
x ∈ L
t
; A
t
e polinomial deoarece mult ¸imea polinoamelor
e ˆınchis˘a la operat ¸ia de compunere).
2.Relat ¸ia ∝ este tranzitiv˘a: L
1
∝ L
2
, L
2
∝ L
3
⇒L
1
∝ L
3
.
Limbajul L ⊆ Σ

este NP-dificil (engl. NP-hard)
dac˘a ∀L
t
∈ NP are loc L
t
∝ L.
Limbajul L ⊆ Σ

este NP-complet dac˘a
L ∈ NP ¸si L este NP-dificil.
13
Terminologia se transfer˘a pentru probleme de decizie:
Spunem c˘a problema de decizie P
1
se reduce
polinomial la problema de decizie P
2
, ¸si not˘am
P
1
∝ P
2
, dac˘a L
1
= P
−1
1
(da) ∝ L
2
= P
−1
2
(da).
Problema de decizie P este NP-dificil˘a dac˘a
∀P
t
∈ NP are loc P
t
∝ P.
Problema de decizie P este NP-complet˘a dac˘a
P ∈ NP ¸si P este NP-dificil˘a.
Folosind observat ¸ia 1 ¸si faptul c˘a P ⊆ NP rezult˘a urm˘atoarea
Teorem˘a Dac˘a P o problem˘a oarecare NP-
complet˘a satisface P ∈ P atunci P = NP.
Rezult˘a c˘a problemele NP-complete formeaz˘a submult ¸imea lui NP
care cont ¸ine cele mai dificile probleme. Dac˘a g˘asim un algoritm
polinomial pentru una dintre ele, putem construi un algoritm poli-
nomial pentru oricare alt˘a problem˘a din NP. Din p˘acate, de¸si nu
exist˘a o demonstrat ¸ie, oamenii cred c˘a, de fapt, aceste probleme
nu admit algoritmi polinomiali de rezolvare. Diagrama urm˘atoare
sugereaz˘a relat ¸iile care se crede c˘a exist˘aˆıntre aceste clase de com-
plexitate:
14
P
NP
NP-hard
NP-complete
Se obi¸snuie¸ste s˘a se spun˘a c˘a o problem˘a de optimizare
este NP-dificil˘a, dac˘a problema de decizie asociat˘a este
a¸sa. Pentru ca s˘a ne aliniem la definit ¸iile precedente,
vom spune c˘a o problem˘a oarecare P (nu neaparat de
decizie) este NP-dificil˘a dac˘a existent ¸a unui algoritm
polinomial pentru P implic˘a P = NP.
Comentariu metaforic: Saying that a problem is NP-
hard is like saying ‘If I own a dog, then it can speak
fluent English.’ You probably don’t know whether or
not I own a dog, but you’re probably pretty sure that I
don’t own a talking dog. Nobody has a mathematical
proof that dogs can’t speak English. Nevertheless, no
sane person would believe me if I said I owned a dog
that spoke fluent English. So the statement ‘If I own
a dog, then it can speak fluent 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. [Jeff Erickson, Univ. of. Illinois]
15
Singura clas˘a de complexitate pentru care nu
am sugerat un exemplu este cea a problemelor
NP − complete. Primul om care a demonstrat
existent ¸a unei astfel de probleme este Cook,
care ˆın 1971 a ar˘atat c˘a SAT ∈ NP, unde
SAT
Instant ¸˘a: U = ¡u
1
, . . . , u
n
¦ o mult ¸ime finit˘a de variabile
booleene.
C = C
1
∧ C
2
∧ . . . ∧ C
m
o formul˘a ˆın form˘a
conjunctiv˘a peste U:
C
i
= v
i
1
∨ v
i
2
∨ . . . ∨ v
i
k
i
∀i = 1, m, unde
∀i
j
∃α ∈ ¡1, . . . , n¦ astfel ˆıncˆat
v
i
j
= u
α
sau v
i
j
= u
α
.
Intrebare: Exist˘a o atribuire t : U →¡A, F¦ a. ˆı.
t(C) = A ?
Evaluarea lui t(C) se bazeaz˘a 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 c˘a se poate face ˆın timp polinomial.
16
Apartenent ¸a lui SAT la NP e clar˘a, un certifi-
cat pentru r˘aspunsul da este o atribuire t
0
care
poate fi verificat˘a ˆın timp polinomial.
O demonstrat ¸ie c˘a orice limbaj din NP se reduce poli-
nomial la SAT necesit˘a o abordare formal˘a 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 fiecare
clauz˘a C
i
are exact trei literali (k
i
= 3), un
literal v
i
j
fiind, a¸sa cum este descris mai sus, o
variabil˘a sau negat ¸ia ei.
Se poate ar˘ata u¸sor c˘a SAT ∝ 3SAT ¸si deci se
obt ¸ine c˘a 3SAT este NP-complet˘a (apartenent ¸a
la NP e clar˘a fiind o restrict ¸ie a lui SAT care e
din NP, iar tranzitivitatea relat ¸iei ∝ ˆımpreun˘a
cu teorema lui Cook termin˘a demonstrat ¸ia).
17
Schit ¸a de demonstrat ¸ie de mai sus este uzual˘a
ˆın demonstrat ¸iile de NP-completitudine ¸si o ex-
plicit˘am:
Pentru a ar˘ata c˘a o problem˘a de decizie P este
NP-complet˘a se procedeaz˘a astfel:
1. Se arat˘a c˘a L = P

1(da) satisface L ∈ NP.
2. Se selecteaz˘a un limbaj L
t
despre care ¸stim
c˘a este NP-complet.
3. Se ˆıncearc˘a construirea unui algoritm de
reducere F de la L
t
la L.
4. Se demonstreaz˘a c˘a F e algoritm de reducere.
5. Se arat˘a c˘a F este algoritm polinomial.
Pentru pasul 2 se poate consulta
http://www.nada.kth.se/~viggo/problemlist/
18
I. Vocabular al Teoriei grafurilor
1. Definit ¸ia unui graf
Un graf este o pereche G = (V (G), E(G)),
unde
- V (G) este o mult ¸ime finit˘a nevid˘a, iar
- E(G) este o submult ¸ime a mult ¸imii 1
2
(V (G))
a p˘art ¸ilor cu dou˘a elemente ale lui V (G).
V (G) se nume¸ste mult ¸imea vˆırfurilor grafului
G ¸si num˘arul elementelor sale
¸
¸
¸V (G)
¸
¸
¸, este ordinul grafului G;
E(G) este mult ¸imea muchiilor grafului G ¸si
num˘arul s˘au de elemente,
¸
¸
¸E(G)
¸
¸
¸, este dimen-
siunea grafului G.
Atunci cˆınd nu exist˘a posibilitatea confuziilor,
vom nota simplu, G = (V, E).
19
Dac˘a e = ¡u, v¦ ∈ E(G) este o muchie a gra-
fului G vom nota e = uv (pentru simplificarea
scrierii) ¸si vom spune c˘a:
• muchia e une¸ste vˆırfurile u ¸si v;
• vˆırfurile u ¸si v sunt adiacente ˆın G;
• muchia e este incident˘a cu vˆırfurile u ¸si v;
• vˆırfurile u ¸si v sunt vecine ˆın G;
• vˆırf. u ¸si v sunt extremit˘at ¸ile muchiei e.
Dac˘a v ∈ V (G), atunci mult ¸imea
N
G
(v) = ¡w[w ∈ V (G), vw ∈ E(G)¦
se nume¸ste vecin˘atatea vˆırfului v ˆın G.
Se mai noteaz˘a N
G
(v) = Γ
G
(v).
20
Remarc˘am faptul c˘a graful G poate fi definit
(ˆın mod echivalent) ca o pereche
_
V (G), Γ
G
_
unde
Γ
G
: V (G) →1
_
V (G)
_
asociaz˘a fiec˘arui vˆırf vecin˘atatea sa.
Dou˘a muchii e ¸si e
t
care au o extremitate co-
mun˘a se numesc adiacente.
Intuitiv, un graf G = (V (G), E(G)) poate fi
reprezentat (dup˘a cum sugereaz˘a ¸si numele
s˘au) cu ajutorul unei figuri plane format˘a dintr-
o mult ¸ime de mici forme geometrice aflat˘a
ˆın corespondent ¸˘a cu mult ¸imea de vˆırfuri V (G),
dou˘a forme fiind unite printr-o curb˘a simpl˘a
dac˘a ¸si numai dac˘a, perechea de vˆırfuri core-
spunz˘atoare lor este o muchie a grafului G.
Corespondent ¸a dintre vˆarfurile grafului ¸si fig-
urile geometrice considerate este vizualizat˘a
21
uneori cu etichete ata¸sate vˆarfurilor. De aseme-
nea, muchiile pot fi etichetate.
ˆ
In plus, sunt
utilizate diferite atribute grafice pentru expre-
sivitatea desenului, diagramei.
De exemplu,
figura ¸si
reprezint˘a acela¸si graf, de¸si lipsa etichetelor
face dificil˘a realizarea acestui fapt.
Urm˘atoarele trei reprezent˘ari 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
22
O mult ¸ime independent˘a de vˆırfuri (sau
mult ¸ime stabil˘a) ˆın G este o mult ¸ime S ⊆
V (G) de vˆırfuri cu proprietatea c˘a
1
2
(S) ∩ E(G) = ∅
(adic˘a o mult ¸ime de vˆırfuri neadiacente du˘a
cˆıte dou˘a ).
Cardinalul maxim al unei mult ¸imi stabile se
nume¸ste num˘arul de stabilitate sau num˘arul
de independent ¸˘a al grafului G ¸si se noteaz˘a
cu α(G).
De exemplu, ˆın graful G de mai jos mult ¸imea
¡a¦ este mult ¸ime stabil˘a (maximal˘a ˆın raport
cu incluziunea), dar num˘arul de stabilitate este
n, mult ¸imea ¡1, . . . , n¦ fiind stabil˘a de cardinal
maxim (n ≥ 1).
ˆ
In graful H s-au evident ¸iat
dou˘a mult ¸imi stabile care partit ¸ioneaz˘a mult ¸imea
vˆarfurilor, iar α(H) = 6.
1
a
n
2
G
a
1
2
3
b
c
d
4
5
6
e
H
23
Problema urm˘atoare este natural˘a, u¸sor de for-
mulat ¸si apare deseori ˆın diferite aplicat ¸ii:
P1 Intrare: G un graf.
Ie¸sire: α(G) ¸si un ”martor”:
S m.stabil˘a ˆın G, cu [S[ = α(G).
De¸si foarte simpl˘a (de formulat, la o prim˘a
vedere), problema este NP-dificil˘a. Problema
de decizie corespunz˘atoare,
SM Intrare: G un graf, k ∈ N.
Intrebare: Exist˘a S m.stabil˘a ˆın G,
cu [S[ ≥ k?
este NP-complet˘a (Karp, 1972). Probabil c˘a o
cauz˘a a dificult˘at ¸ii acestei probleme este faptul
c˘a dou˘a mult ¸imi stabile maximale (ˆın raport
cu incluziunea) pot avea raportul cardinalelor
oricˆat de mare (vezi graful G din figura de la
pagina precedent˘a).
24
O mult ¸ime independent˘a de muchii sau cu-
plaj ˆın graful G este o mult ¸ime de muchii nea-
diacente dou˘a cˆıte dou˘a . Cardinalul maxim al
unei mult ¸imi independente de muchii ˆın G se
nume¸ste num˘arul de muchie-independent ¸˘a
al grafului G ¸si se noteaz˘a ν(G).
Exemplu, pentru graful G:
num˘arul de muchie independent ¸˘a, ν(G) este 6,
un cuplaj cu acest num˘ar de muchii fiind pus
ˆın evident ¸˘a. Problema
P2 Intrare: G un graf.
Ie¸sire: ν(G) ¸si un ”martor”:
M cuplaj ˆın G, cu [M[ = ν(G).
25
este foarte asem˘an˘atoare cu P1 (este de fapt,
o restrict ¸ie a lui P1 pentru intr˘ari care sunt
line-grafuri) ¸si totu¸si s-a ar˘atat c˘a este ˆın P(
Edmons, 1965).
Diferent ¸a de complexitate provine, probabil,
din faptul c˘a raportul dintre cardinalele a dou˘a
cuplaje maximale ˆın raport cu incluziunea nu
poate dep˘a¸si 2.
Dac˘a G = (V (G), E(G))este un graf ¸si p ∈
N

, se nume¸ste p−colorare a (vˆırfurilor) lui
G o aplicat ¸ie c : V (G) → ¡1, . . . , p¦ cu pro-
prietatea c˘a c
−1
(i) este o mult ¸ime stabil˘a ˆın
G, ∀i ∈ ¡1, . . . , p¦ (remarc˘am c˘a, din definit ¸ia
mult ¸imilor stabile, ∅ este o mult ¸ime stabil˘a ).
Num˘arul cromatic al grafului G, notat χ(G),
este cea mai mic˘a valoare a lui p ∈ N

pentru
care G admite o p-colorare.
26
Exemplu:
ˆ
In graful G desenat mai jos, sunt
evident ¸iate 2 color˘ari una cu 5 culori ¸si una cu
4 culori. Se poate argumenta c˘a χ(G) = 4.
5-colorare
rosu= culoarea 1
galben= culoarea 2
verde=culoarea 3
albastru=culoarea 4
negru=culoarea 5
4-colorare
Problema urm˘atoare apare ˆın diverse situat ¸ii
practice (de exemplu ˆın problemele de orar,
sauˆın problemele de acoperire din wireless net-
works):
P3 Intrare: G un graf.
Ie¸sire: χ(G) ¸si un ”martor”:
o χ(G)-colorare a lui G.
27
Din problema P1 ¸stim c˘a mult ¸imile stabile ale
grafului sunt greu de ”st˘apˆanit”, ¸si cum prob-
lema P3 cere de fapt s˘a partit ¸ion˘am mult ¸imea
de vˆarfuri a grafului ˆıntr-un num˘ar cˆat mai mic
de mult ¸imi stabile, este normal ca ¸si aceast˘a
problem˘a s˘a fie NP-dificil˘a. Problema de de-
cizie
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?
este NP-complet˘a chiar dac˘a o restrict ¸ion˘am
la cazul particular k = 3. Exist˘a ˆıns˘a restrict ¸ii
ale problemei pentru care avem apartenent ¸˘a la
P (de exemplu, dac˘a G este un graf perfect).
O p−colorare a muchiilor lui G este o aplicat ¸ie
c : E(G) → ¡1, . . . , p¦ cu proprietatea c˘a c
−1
(i)
este un cuplaj al lui G, ∀i ∈ ¡1, . . . , p¦.
Indicele cromatic al grafului G, notat χ
t
(G),
este cea mai mic˘a valoare a lui p ∈ N

pentru
care G admite o p-colorare a muchiilor.
28
Exemplu: In graful de mai jos
este evident ¸iat˘a o 3-colorare a muchiilor; este
clar c˘a este ¸si optim˘a, ˆıntrucˆat muchiile inci-
dente ˆın acela¸si vˆarf trebuie s˘a aib˘a culori dis-
tincte. Problema
P4 Intrare: G un graf.
Ie¸sire: χ
t
(G) ¸si un ”martor”:
o χ
t
(G)-colorare a muchiilor lui G.
29
s-a dovedit a fi NP-dificil˘a, de¸si era de a¸steptat
ca (lucrˆand cu cuplaje, iar problema P2 fiind
din P) ca ea s˘a fie rezolvabil˘a polinomial.
Diferent ¸a fat ¸˘a de P3 (P4 este de fapt o restrict ¸ie
a lui P3 pe clasa line-grafurilor) este c˘aˆın timp
ce P3 s-a demonstrat c˘a nu poate fi u¸sor aprox-
imabil˘a (ˆın timp polinomial), problema P4 poate
fi rezolvat˘a ”aproximativ” cu o eroare de o uni-
tate (deci dac˘a se gre¸seste, atunci colorarea
obt ¸inut˘a are cel mult o culoare ˆın plus fat ¸˘a de
cea optim˘a).
Dou˘a grafuri, G = (V (G), E(G)) ¸si H =
(V (H), E(H)) se numesc izomorfe, ¸si not˘am
aceasta prin G

= H, dac˘a exist˘a o biject ¸ie
ϕ: V (G) →V (H)
cu proprietatea c˘a aplicat ¸ia
ψ: E(G) →E(H),
definit˘a pentru orice uv ∈ E(G) prin ψ(uv) =
ϕ(u)ϕ(v) este o biject ¸ie.
30
(deci, dou˘a grafuri sˆınt izomorfe dac˘a exist˘a o
biject ¸ieˆıntre mult ¸imile lor de vˆırfuri care induce
o biject ¸ie ˆıntre mult ¸imile lor de muchii).
Grafurile urm˘atoare sunt izomorfe, a¸sa cum se
sugereaz˘a ˆın figur˘a
a
b d
c e
1
2 4
3 5
G H
Problema urm˘atoare este util˘a ˆın multe prob-
leme de modelare discret˘a (de exempluˆın chimie)
ISO Intrare: G, H grafuri.
Intrebare: G

= H?
31
Nu s-a demonstrat dac˘a aceast˘a problem˘a este
sau nu NP-complet˘a (apartenet ¸a la NP este
clar˘a). Se pare c˘a face parte dintr-o clas˘a
de probleme aflat˘a ˆıntre P ¸si NP). Exemplul
urm˘ator arat˘a dificultatea problemei (cele dou˘a
grafuri au acela¸si ordin, aceea¸si dimensiune,
vˆarfurile au acela¸si num˘ar de muchii incidente,
¸si totu¸si ele nu-s izomorfe: in primul apar cir-
cuite de lungime 4, iar ˆın al doilea nu !)
G H
Dac˘a G = (V (G), E(G))este un graf, un auto-
morfism al lui G este o permutare a lui V (G)
32
( ϕ: V (G) → V (G), ϕ bijectiv˘a) cu proprietatea
c˘a induce o permutare a lui E(G)
( ψ: E(G) → E(G), ψ(uv) = ϕ(u)ϕ(v), ∀uv ∈
E(G), este bijectiv˘a ).
Mult ¸imea automorfismelor grafului G formeaz˘a,
ˆın raport cu operat ¸ia de compunere a aplicat ¸iilor,
un grup numit grupul automorfismelor gra-
fului G, notat Aut(G).
Aut(G) este tranzitiv dac˘a
∀v ∈ V (G), ¡w [∃ϕ ∈ Aut(G) : ϕ(v) = w¦ = V (G)
Exemplu:
0
1
2
3
4
5
6
33
2. Variat ¸ii ˆın definit ¸ia unui graf
a) Dac˘a ˆın definit ¸ia unui graf, se consider˘a
E(G) o multimult ¸ime pe 1
2
_
V (G)
_
, adic˘a este
dat˘a 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, simpl˘a dac˘a m(e) = 1,
multipl˘a dac˘a m(e) > 1.
Oric˘arui multigraf M i se poate asocia un graf
G(M), numit graful suport al lui M, obt ¸inut
prinˆınlocuirea fiec˘arei muchii multiple cu o sin-
gur˘a muchie cu acelea¸si extremit˘at ¸i.
Pictural, modific˘arile de reprezentare sunt ev-
idente; graful suport al multigrafului desenat
mai jos, este graful desenat pe pagina prece-
dent˘a.
0 1
2
3
4
5
6
34
b) Dac˘aˆın definit ¸ia unui graf se consider˘a E(G)
ca o multimult ¸ime pe mult ¸imea p˘art ¸ilor nevide
cu cel mult dou˘a elemente ale lui V (G), atunci
G se nume¸ste graf general sau pseudograf.
O muchie e ∈ E(G), e = ¡v¦ se nume¸ste bucl˘a
ˆın vˆırful v.
Exemplul urm˘ator arat˘a un graf general M ¸si
graful s˘au suport.
0 1
4
5
3 2
3
0 1
3 2
M
G(M)
Pentru evitarea confuziilor, uneori grafurile –
a¸sa cum le-am definit– se mai numesc ¸si grafuri
simple .
35
c) Un digraf este o pereche D = (V (D), A(D))
unde V (D) este o mult ¸ime finit˘a nevid˘a (mult ¸imea
vˆırfurilor digrafului D), iar
A(D) ⊆ V (D) V (D) este mult ¸imea arcelor
digrafului D.
Dac˘a a = (u, v) este arc ˆın D, not˘am a = uv ¸si
spunem c˘a
u ¸si v sˆınt adiacente;
a este incident din u ;
a este incident spre v;
u domin˘a pe v;
a este incident cu u spre exterior;
a este incident cu v spre interior;
u este extremitatea init ¸ial˘a a lui a ¸si v este
extremitatea final˘a a lui a.
Pictural, digrafurile se reprezint˘a la fel ca ¸si
grafurile, ad˘augˆınd curbei ce une¸ste dou˘a fig-
uri asociate vˆarfurilor o s˘ageat˘a pentru a pre-
ciza perechea de vˆırfuri corespunz˘atoare arcu-
lui desenat.
36
Exemplu:
0
1
2
3
4
5
6
7
8
99
O pereche de arce de forma vw ¸si wv se nume¸ste
pereche simetric˘a de arce.
Dac˘a D este un digraf, inversul s˘au D
t
este
digraful obt ¸inut din D prin ˆınlocuirea fiec˘arui
arc vw cu opusul s˘au wv.
Dac˘a D este un digraf, atunci ˆınlocuind fiecare
arc cu mult ¸imea de vˆırfuri care ˆıl formeaz˘a,
obt ¸inem, ˆın general, un graf general M(D).
Graful suport al acestuia se nume¸ste graful
suport al digrafului D.
37
Dac˘a M(D) este graf atunci D se nume¸ste graf
orientat (poate fi gˆındit ca obt ¸inut prin ”ori-
entarea” fiec˘arei muchii a grafului M(D)).
Un digraf complet simetric este un digraf ˆın
care fiecare pereche de vˆırfuri este unit˘a prin
exact o pereche de arce simetrice.
Un turneu este un digraf ˆın care orice dou˘a
vˆırfuri sˆınt unite prin exact un arc.
0
1
2
3
4
Dinamo
Rapid
Petrolul
Stiinta
Steaua
38
d) Grafurile infinite se obt ¸in prin ˆınl˘aturarea
condit ¸iei de finitudine a mult ¸imii de vˆırfuri ¸si
(sau) muchii. Acestea se consider˘a a fi num˘arabile,
iar tratarea lor utilizeaz˘a instrumente care nu
sunt neaparat combinatorii ( de exemplu, mecan-
isme generative). Un graf G local finit este
un graf infinit ˆın care N
G
(v) este finit˘a pentru
orice vˆırf v.
e) Hipergrafurile se obt ¸in renunt ¸ˆand la condit ¸ia
c˘a muchiile pot avea cel mult dou˘a vˆarfuri,
( se obt ¸in astfel hipermuchiile). Ele se mai
numesc sisteme finite de mult ¸imi ¸si vom ar˘ata
c˘a pot fi studiate via grafurile bipartite, de¸si
exist˘a rezultate combinatorii importante ¸si cu
aplicat ¸ii directe (de exempluˆın bazele de date)
ˆın formalismul care urmeaz˘a extinderea trat˘arii
grafurilor (din punct de vedere combinatoriu
sau algebric).
39
3. Grade
Dac˘a G = (V, E)este un graf ¸si v ∈ V un vˆırf
al s˘au, atunci valent ¸a sau gradul lui v ˆın G,
notat d
G
(v) sau ρ
G
(v) este
[¡e [ e ∈ E, e incident˘a cu v¦[.
Un vˆırf de grad 0 se nume¸ste izolat; un vˆırf
de grad 1 se nume¸ste pendant. Dac˘a toate
vˆırfurile lui G au aceea¸si valent ¸˘a ρ atunci G
se nume¸ste graf ρ−valent sau ρ−regulat. Un
graf 0−valent se nume¸ste graf nul. Un graf
3−valent se numeste graf trivalent sau cu-
bic. Un exemplu de graf trivalent este graful
lui Petersen:
Gradul maxim al unui vˆarf al grafului G se
noteaz˘a cu ∆(G), iar gradul minim δ(G) .
40
Concepte analoage se pot defini ¸si pentru di-
grafuri. Dac˘a v este un vˆırf al digrafului D
atunci valent ¸a interioar˘a sau gradul interior
notat ρ
in
(v) sau ρ

D
(v) sau d

D
(v), este num˘arul
arcelor incidente cu v spre interior; valent ¸a
exterioar˘a sau gradul exterior notat ρ
out
(v)
sau ρ
+
D
(v) sau d
+
D
(v), este num˘arul 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
41
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).
Dac˘aˆın plus, V (H) = V (G) atunci H se nume¸ste
graf part ¸ial al lui G (ˆın limba englez˘a, span-
ning subgraph).
Dac˘a A ⊆ V (G) atunci [A]
G
= (A, 1
2
(A) ∩
E(G)) se nume¸ste subgraf indusˆın G de mult ¸imea
de vˆırfuri A (se mai noteaz˘a ¸si G[A]).
ˆ
In figura urm˘atoare, H este subgraf al lui G iar
subgraful indus de mult ¸imea de vˆarfuri ¡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}]
42
Subgraful [V (G) \ A]
G
se noteaz˘a G−A ¸si este
subgraful lui G obt ¸inut prin ˆındep˘artarea
vˆırfurilor din A; ˆın particular, dac˘a A = ¡v¦,
atunci G−¡v¦ se noteaz˘a G−v.
Dac˘a E
t
⊆ E(G) atunci ¸E
t
)
G
= (V (G), E
t
) este
graful part ¸ial sect ¸ionat de E
t
ˆın G. G − E
t
este prin definit ¸ie ¸E(G) \ E
t
)
G
, iar G − e =
G−¡e¦ (e ∈ E(G)). Pentru G graful din figura
precedent˘a ¸si E
t
= ¡12, 14, 23, 25, 36, 59, 710, 810, 910¦,
obt ¸inem c˘a ¸E
t
)
G
este graful G
t
:
2
1 3
6 5 4
7 8
9
10
G’
Concepte similare se pot defini ˆın mod analog
pentru multigrafuri, grafuri generale sau digra-
furi.
43
5. Operat ¸ii cu grafuri
Dac˘a G = (V (G), E(G))este un graf, atunci :
-complementarul s˘au 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
t
[ e, e
t
∈ E(G), e ¸si e
t
adiacente ˆın G¦.
a
e
f
g
h
b
c
d
Graful initial Line-graful sau
a
b
c
h
g
f
d
e
44
-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 vˆırf
(z) pe o muchie (e = vw) este graful G
t
= (V (G) ∪
¡z¦, E(G) \ ¡vw¦ ∪ ¡vz, zw¦) (z / ∈ V (G), e ∈ E(G)).
v
w
v
z
w
Dou˘a grafuri obt ¸inute prin insert ¸ii succesive de vˆırfuri
pe muchiile aceluia¸si graf se numesc homeomorfe.
45
-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
Dac˘a H se poate obt ¸ine prin contract ¸ii suc-
cesive de muchii din graful G, se spune c˘a
G este contractibil la H.
Fie G = (V (G), E(G))¸si G
t
= (V (G
t
), E(G
t
))
dou˘a grafuri.
- Dac˘a V (G) = V (G
t
) atunci reuniunea celor
dou˘a grafuri ¸si intersect ¸ia lor se definesc
G∪ G
t
= (V (G), E(G) ∪ E(G
t
)),
G∩ G
t
= (V (G), E(G) ∩ E(G
t
)).
46
1
5
2
3 4
1
5
4
2
3
G
G’
Intersectia Reuniunea
-Dac˘a V (G)∩V (G
t
) = ∅ atunci G∪ G
t
= (V (G)∪
V (G
t
), E(G)∪E(G
t
)) se nume¸ste reuniunea
disjunct˘a a grafurilor G ¸si G
t
. Reuniunea
disjunct˘a a k grafuri izomorfe cu G se noteaz˘a kG.
1
5
2
3 4
a
e
d
b
c
G
G’
Reuniunea disjuncta
-Suma a dou˘a grafuri G ¸si G
t
este graful
G+G
t
= G∪ G
t
.
47
G
G’
G+G’
-Produsul cartezian al grafurilor G ¸si G
t
este
graful GG
t
cu V (GG
t
) = V (G)V (G
t
)
¸si
E(GG
t
) = ¡(v, w)(v
t
, w
t
)[v, v
t
∈ V (G), w, w
t
∈ V (G
t
)
v = v
t
¸si ww
t
∈ E(G
t
)sau
w = w
t
¸si vv
t
∈ E(G)¦
G:
G’
G x G’
48
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
49
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
50
Un subgraf complet (de ordin q) al unui graf G
se nume¸ste clic˘a ( q-clic˘a) a lui G.
Cardinalul maxim al unei clici a lui G se nume¸ste
num˘arul de clic˘a sau num˘arul de densitate
al lui G ¸si se noteaz˘a ω(G). Cum, evident
ω(G) = α(G), rezult˘a c˘a determinarea num˘arului
de clic˘a al unui graf ¸si a unei clici de cardinal
maxim este problema P1 pcu intrarea G.
Exemple:
omega
2
omega
4
omega
2
omega
5
omega
3
Un graf bipartit este un graf G cu propri-
etatea c˘a V (G) se poate partit ¸iona ˆın dou˘a
mult ¸imi independente ˆın G.
Dac˘a S ¸si T satisfac S ∪ T = V (G), S ∪ T = ∅
¸si S, T sˆınt independente ¸si nevide ˆın G, atunci
graful bipartit G se noteaz˘a G = (S, T; E(G)).
51
Deci, dac˘a G = (S, T; E(G)) este un graf bi-
partit, atunci ∀e ∈ E(G) are o extremitate ˆın S
¸si cealalt˘a ˆın T.
Dac˘a ∀v ∈ S ¸si ∀w ∈ T vw ∈ E(G), atunci
graful bipartit G = (S, T; E(G)) se nume¸ste
graf bipartit complet ¸si se noteaz˘a 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
52
O construct ¸ie invers˘a evident˘a, ne arat˘a c˘a ¸si
pentru orice graf bipartit se poate asocia un
hipergraf.
Un graf G = (V (G), E(G))se nume¸ste planar
dac˘a poate fi reprezentat ˆın plan astfel ˆıncˆıt
fiec˘arui vˆırf s˘a-i corespund˘a un punct al planu-
lui, iar muchiilor le corespund curbe simple ce
unesc punctele corespunz˘atoare extremit˘at ¸ilor
lor ¸si ˆın plus aceste curbe se interesecteaz˘a
(eventual) numai ˆın vˆırfuri. Un graf care nu-i
planar se num¸ste neplanar. Exemple minimale
de grafuri neplanare sˆınt grafurile K
5
¸si K
3,3
.
Planar Planar
K5 neplanar Planar
53
De¸si problema
PLAN Intrare: G un graf.
Intrebare: Este G planar ?
pare mult mai dificil˘a decˆat problema stabilei
maxime (P1 din cursul trecut), ea subsumˆand
not ¸iuni de topologie, s-a dovedit c˘a este din P
( Hopcroft & Tarjan , 1972, O(n +m)).
O modalitate uzual˘a de a defini clase de gra-
furi este de a interzice aparit ¸ia unor subgrafuri
induse, pentru grafurile acelei clase.
Dac˘a T este o mult ¸ime de grafuri, atunci un
graf G se nume¸ste T-liber (sau T-free) dac˘a
G nu are ca subgraf indus pe niciunul din-
tre grafurile lui T. De exemplu, clasa grafu-
rilor nule poate fi definit˘a ca fiind clasa gra-
furilor K
2
-free; clasa grafurilor ale c˘aror com-
ponente conexe sunt subgrafuri complete este
clasa grafurilor P
3
-free;
clasa grafurilor triangulate (sau cordale) este
clasa grafurilor (C
k
)
k≥4
-free.
54
7. Drumuri ¸si circuite
Fie G = (V (G), E(G))un graf.
Se nume¸ste mers (walk) de lungime r de la
v la w ˆın G un ¸sir de vˆırfuri ¸si muchii
(v =)v
0
, v
0
v
1
, v
1
, . . . , v
r−1
, v
r−1
v
r
, v
r
(= w);
v ¸si w se numesc extremit˘at ¸ile mersului.
Dac˘a muchiile mersului sˆınt distincte atunci
mersul se nume¸ste parcurs (trail) ˆın G de la v
la w.
Dac˘a vˆırfurile sˆınt distincte atunci mersul se
nume¸ste 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
55
Dac˘a v = w atunci mersul (parcursul) se nume¸ste
ˆınchis.
Dac˘a ˆıntr-un mers toate vˆırfurile sˆınt distincte,
cu except ¸ia extremit˘at ¸ilor, atunci mersul se nume¸ste
circuit (sau drumˆınchis).
Un circuit este par sau impar dup˘a cum lungimea
sa (num˘arul muchiilor) este par˘a sau impar˘a.
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
(dac˘a G are circuite) se nume¸ste grat ¸ia (girth)
grafului G ¸si se noteaz˘a cu g(G); lungimea celui
mai lung circuit al lui G se nume¸ste
circumferint ¸a lui G ¸si se noteaz˘a c(G).
56
Dac˘a v ¸si w sˆınt vˆırfuri ale lui G, lungimea
celui mai scurt drum de la v la w ˆın G se
nume¸ste distant ¸aˆın G de la v la w ¸si se noteaz˘a
d
G
(v, w).
Diametrul grafului G, notat d(G) este d(G) =
max¡d
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 reprezentˆand ret ¸eaua s˘a aib˘a
gradul maxim ∆(G) mic ( ¸restrict ¸ie tehnologic˘a) ¸si di-
ametrul d(G) micˆın raport cu num˘arul vˆarfurilor (restrict ¸ie
de calitate a interconect˘arii).
Definit ¸iile de mai sus se extind, ˆın mod evi-
dent,pentru digrafuri singura modificare fi-
ind aceea c˘a se ˆınlocuiesc muchiile cu arce.
57
Un graf este conex dac˘a exist˘a (m˘acar) un
drum ˆıntre orice dou˘a vˆırfuri ale sale; un graf
care nu este conex se nume¸ste neconex.
Orice graf G poate fi unic exprimat ca o reuni-
une disjunct˘a de subgrafuri induse, conexe ¸si
maximale cu aceast˘a proprietate; aceste sub-
grafuri se numesc componentele conexe ale
grafului G (mai precis, se pot defini 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) definit˘a prin :
v ρ w ⇔ exist˘a ˆın G un drum de la v la w ).
Graful din figura de mai sus are 4 componente conexe:
una cu 1 vˆarf, una cu 2 vˆarfuri ¸si dou˘a cu 5 vˆarfuri.
58
Concepte analoage se pot defini ¸si pentru di-
grafuri; dac˘a D este un digraf atunci :
• D este tare conex dac˘a ∀(v, w) ∈ V (D)
V (D) exist˘a un drumˆın D de la v la w;
• D este unilateral conex dac˘a ∀(v, w) ∈
V (D) V (D) exist˘a ˆın D un drum de la
v la w sau un drum de la w la v;
• D este conex dac˘a G(D), graful suport al
lui D, este conex.
Unilateral
conex
Tare conex Conex
59
Un graf conex care nu are circuite se nume¸ste
arbore. Un graf ale c˘arui componente conexe
sˆınt arbori se nume¸ste p˘adure.
Time to leave the trees !!!
Dac˘a G este un graf conex, un vˆırf v ∈ V (G) cu
proprietatea c˘a G−v este neconex se nume¸ste
vˆırf (punct) de articulat ¸ie; mai general, o
mult ¸ime A de vˆırfuri ale unui graf G se nume¸ste
mult ¸ime separatoare de vˆırfuri (mult ¸ime de
articulat ¸ie) dac˘a G−A este neconex.
Pct. de
articulatie
Fara pcte.
de articulatie
Multime de
articulatie
Fara multimi
de articulatie
60
Fie p un num˘ar ˆıntreg pozitiv;
un graf G cu m˘acar p vˆırfuri este p−conex dac˘a
G = K
p
sau are cel put ¸in p +1 vˆırfuri ¸si nu are
mult ¸imi separatoare de vˆırfuri de cardinal mai
mic decˆıt p.
Evident, G este 1-conex dac˘a ¸si numai dac˘a
este conex. Un graf 2-conex se mai nume¸ste
¸si bloc.
Num˘arul de conexiune al lui G, notat k(G),
este cel mai mare num˘ar natural p pentru care
G este p−conex.
k(G)=3
k(G)=4
61
Dac˘a G este un graf conex, o muchie e ∈
E(G) cu proprietatea c˘a G − e este neconex
se nume¸ste punte ˆın graful G; mai general,
o mult ¸ime A de muchii ale unui graf G se
nume¸ste mult ¸ime separatoare de muchii dac˘a
G−A este neconex.
Un graf G cu cel put ¸in p vˆırfuri este
p−muchie-conex dac˘a nu admite mult ¸imi sep-
aratoare de muchii de cardinal mai mic decˆıt p.
Num˘arul de muchie-conexiune al lui G, no-
tat λ(G), este cel mai mare num˘ar natural p
pentru care G este p−muchie-conex .
Punte
Multime separatoare
de muchii
lambda(G)=3
62
Un graf (sau digraf) se nume¸ste eulerian dac˘a
admite un parcurs ˆınchis care folose¸ste fiecare
muchie a grafului (respectiv, fiecare arc al di-
grafului).
Un (di)graf G se nume¸ste hamiltonian dac˘a
are un circuit care trece prin fiecare vˆırf.
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 test˘arii dac˘a un graf este
elerian este foarte simpl˘a (Euler 1736 : conex
¸si cu toate vˆarfurile de grad par), problema
HAM Intrare: G un graf.
Intrebare: Este G hamiltonian ?
63
este NP-complet˘a. Apartenent ¸a la NP este
evident˘a: un circuit hamiltonian, se poate in-
dica printr-o permutare a vˆarfurilor care poate
fi testat˘aˆın timp liniar.
ˆ
In schimb pentru prob-
lema
NH Intrare: G un graf.
Intrebare: Este adev˘arat c˘a G nu-i hamiltonian?
nu se cunoa¸ste o demonstrat ¸ie a apartenent ¸ei
la NP ( se observ˘a c˘a este din co-NP). Nu se
poate da o demonstrat ¸ie succint˘a c˘a graful de
mai jos nu e hamiltonian:
3-conex, planar, si nehamiltonian
(Tutte)
64
8. Matrici asociate.
Dac˘a 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 dac˘a v
i
¸si v
j
sˆınt adiacente
0 altminteri.
Matricea de incident ¸˘a a grafului G este ma-
tricea B = (b
ij
)
nm
, unde
b
ij
=



1 dac˘a v
i
¸si e
j
sˆınt 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.
65
Pentru graful din figura 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.
66
9 Structuri de date utilizateˆın 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
Dac˘a 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 folose¸ste o astfel de reprezentare,
are complexitatea Ω(n
2
).
Cu aceast˘a structur˘a de date testarea dac˘a
dou˘a vˆarfuri sunt sau nu adiacente se face ˆın
O(1), dar parcurgerea lui N
G
(v) (sau N
+
G
(v)),
pentru un vˆarf oarecare v ∈ V , necesit˘a Ω(n)
operat ¸ii.
67
b) listele de adiacent ¸˘a
Pentru fiecare vˆırf v ∈ V se consider˘a o list˘a
A(v) a vecinilor s˘ai ˆın G.
Dac˘a G este graf, atunci A(v) cont ¸ine
N
G
(v) = ¡v[w ∈ V ¸si vw ∈ E¦ iar dac˘a G este
digraf atunci A(v) cont ¸ine
N
+
G
(v) = ¡v[w ∈ V ¸si vw ∈ E¦.
Pentru cazul ˆın care G este graf, fiecare muchie
vw ∈ E va genera dou˘a elemente ˆın listele
de adiacent ¸˘a, unul ˆın A(v) ¸si cel˘alalt ˆın A(w).
Spat ¸iul total de memorie utilizat va fi 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 fi reprezentate cu aju-
torul tablourilor sau ca structuri dinamice de
date (liste ˆınl˘ant ¸uite).
Testarea dac˘a un vˆarf fixat v este adiacent cu
un vˆarf oarecare wˆın G se faceˆın Ω(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.
68
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 minimal˘a descris˘a
ˆın sect ¸iunile 1-9 ale acestui prim capitol, se
poate trece la probleme algoritmice specifice.
69
II Probleme de drumˆın (di)grafuri
1. Parcurgeri sistematice ale (di)grafurilor.
Graph search- paradigm˘a algoritmic˘a utilizat˘a
pentru a desemna o metod˘a sistematic˘a de
parcurgere a mult ¸imii vˆarfurilor la care se poate
ajunge prin drumuri ˆıntr-un (di)graf de la un
vˆarf fixat.
Dat G = (V, E) un (di)graf cu mult ¸imea vˆırfurilor
V = ¡1, . . . , n¦ ¸si s ∈ V , se cere s˘a se genereze
”eficient” mult ¸imea
S = ¡v ∈ V [∃D drumˆın G de la s la v¦.
70
(Di)graful G e reprezentat cu listele de adiacent ¸˘a (e
nevoie de aflarea eficient˘a a mult ¸imii vecinilor nodului
curent, ˆın procesul sistematic de vizitare).
Prezent˘am succint cele dou˘a tehnici principale de par-
curgere.
bfs - breadth first search
Init ¸ial, ∀v ∈ V are eticheta label(v) < 0.
label(s) ←0 parent(s) ←0;
creeaz˘a coada Q cont ¸inˆand s;
while Q ,= ∅ do
¡ v←vˆarful din capul cozii Q;
¸sterge vˆarful 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
¦
¦
¦
71
Evident:
- S = ¡v ∈ V [label(v) ≥ 0¦;
- ∀v ∈ V label(v) = d
G
(s, v);
- variabila parent define¸ste arborele bfs aso-
ciat c˘aut˘arii din s: dac˘a G e graf atunci acesta
este arbore part ¸ial al componentei conexe a
lui G la care apart ¸ine s; dac˘a G este digraf
atunci acesta este o arborescent ¸˘a (arbore ori-
entat cu toate vˆarfurile accesibile prin drumuri
din r˘ad˘acin˘a);
- deoarece fiecare list˘a de adiacent ¸˘a a unui vˆarf
din mult ¸imea S este traversat˘a exact o dat˘a,
complexitatea timp a lui bfs(s) este O(n
S
+
m
S
), unde n
S
= [S[ iar m
S
= [E([S]
G
)[;
ˆ
In figura urm˘atoare sunt desenat ¸i arborii core-
spunz˘atori 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
72
dfs - depth first 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;
creeaz˘a stiva S cont ¸inˆand s;
n
S
← 1
while S ,= ∅ do
¡ v←vˆarful 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 vˆarful din capul stivei S
// s-a terminat c˘autarea din v;
¦
Iar˘a¸si, rezult˘a imediat c˘a
S = ¡v ∈ V [label(v) ≥ 0¦ ¸si complexitatea timp
a lui dfs(s) este O(n
S
+m
S
).
73
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 eficient ¸i pentru determinarea componen-
telor conexe ˆın grafuri, pentru determinarea componen-
telor tari conexeˆın digrafuri, componentelor 2-conexeˆın
grafuri etc., (care sunt preproces˘ari uzuale pentru prob-
leme mai complicate).
Ele sunt esent ¸iale ˆın problemele din Inteligent ¸a Artifi-
cial˘a, unde spat ¸iul st˘arilor de c˘autare poate fi v˘azut ca
un graf . De data aceasta graful este dat implicit; ˆın
fiecare nod (stare) se dispune de un predicat precondit ¸ie
care este utilizat de o funct ¸ie neighbours care intoarce
lista nodurilor accesibileˆın contextul curent din acel nod.
Graful explicit care se poate construi ˆın principiu, este
folosit pentru descrierea algoritmului ¸si analizele de com-
plexitate.
74
2. Probleme de drum minim.
Fie G = (V, E) un digraf cu mult ¸imea vˆırfurilor
V = ¡1, . . . , n¦. Consider˘am dat˘a o funct ¸ie
a : E →R cu interpretarea:
∀ij ∈ E a(ij) =costul arcului ij (ponderea,
lungimea, etc).
Dac˘a digraful G este reprezentat cu ajutorul
listelor de adiacent ¸˘a, atunci costul arcului ij
este un cˆımp ˆın nodul din lista de adiacent ¸˘a a
lui i ce reprezint˘a acest arc.
Pentru u¸surint ¸a notat ¸iilor vom folosi reprezentarea
digrafului G cu ajutorul matricii de cost-adiacent ¸˘a
A = (a
ij
)
nn
cu
a
ij
=



a(ij) dac˘a ij ∈ E
∞ altfel
Aici ∞ desemneaz˘a un num˘ar real mare ˆın ra-
port cu celelalte costuri (de exemplu ∞ > n
max
ij∈E
a(ij)) ¸si vom presupune ˆın plus c˘a
75
∞∓a = ∞, ∞+∞= ∞.
(Este posibil, de asemenea, ca ∞ s˘a semnifice
acces terminat cu insucces ˆın structura de date
ˆın care se reprezint˘a matricea A).
Dac˘a i, j ∈ V , vom nota cu
T
ij
= ¡D
ij
[ D
ij
drumˆın G de la i la j¦.
Pentru D
ij
∈ T
ij
D
ij
: (i =)v
0
, v
0
v
1
, v
1
, . . . , v
r−1
, v
r−1
v
r
, v
r
(= j)
mult ¸imea vˆırfurilor 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
r−1
v
r
¦.
Orice vˆırf k ,= i, j al lui D
ij
, determin˘a pe D
ij
dou˘a 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 define¸ste
a(D
ij
) = 0 +

ij∈E(D
ij
)
a
ij
.
ˆ
In particular, a(D
ii
) = 0.
76
Principalele probleme de drum (de cost) minim
care apar ˆın aplicat ¸ii practice (sau sˆınt utile ˆın
rezolvarea altor probleme de optimizare com-
binatorie) sˆınt:
P1 Date G digraf;a : E(G) →R; s, t ∈ V (G),s ,= t.
S˘a se determine D

st
∈ T
st
, astfel ˆıncˆıt
a(D

st
) = min¡a(D
st
) [ D
st
∈ T
st
¦.
P2 Date G digraf; a : E(G) →R; s ∈ V (G).
S˘a se determine D

si
∈ T
si
∀i ∈ V (G), a.ˆı.
a(D

si
) = min¡a(D
si
) [ D
si
∈ T
si
¦.
P3 Date G digraf; a : E(G) →R.
S˘a se determine D

ij
∈ T
ij
∀i, j ∈ V (G), a.ˆı.
a(D

ij
) = min¡a(D
ij
) [ D
ij
∈ T
ij
¦.
Observat ¸ii:
1. Cu convent ¸ia folosit˘a ˆın reprezentarea ma-
tricilor de cost adiacent ¸˘a, se poate considera
c˘a T
ij
,= ∅ ∀i, j ∈ V .
77
Dac˘a a(D
ij
) < ∞atunci D
ij
este drum (adev˘arat)
ˆın G de la i la j, iar dac˘a a(D
ij
) = ∞, atunci D
ij
este drumˆın digraful complet simetric obt ¸inut
din G prin ad˘augarea arcelor lips˘a, cu costul
∞.
Rezult˘a c˘a toate mult ¸imile pe care se con-
sider˘a minimeleˆın problemele precedente, sˆınt
nevide ¸si, cum digrafurile considerate sˆınt fi-
nite, rezult˘a c˘a aceste mult ¸imi sˆınt finite (ˆın
fiecare drum vˆırfurile sˆınt distincte), deci min-
imele considerate exist˘a.
2. Algoritmii de rezolvare a problemei (P1)
se obt ¸in din algoritmii de rezolvare a proble-
mei (P2) ad˘augˆındu-li-se un test suplimentar
(evident) de oprire.
3. Problema (P3) se poate rezolva iterˆınd un
algoritm de rezolvare a problemei (P2). Sˆınt
posibile ˆıns˘a solut ¸ii mai eficiente.
78
Aplicat ¸ii. Vom schit ¸aˆın continuare trei aplicat ¸ii
practice posibile ale acestor probleme.
a) G = (V, E) reprezint˘a o ret ¸ea de comunicat ¸ie
cu nodurile V ¸si rutele directe ˆıntre noduri
formˆınd mult ¸imea E.
Dac˘a a(e) reprezint˘a lungimea arcului e, atunci
cele trei probleme de mai sus reprezint˘a prob-
leme naturale, care se pun ˆın astfel de ret ¸ele:
”determinarea drumurilor celor mai scurte”.
Dac˘a p
ij
∈ (0, 1] este probabilitatea de funct ¸ionare
a arcului ij ∈ E atunci, presupunˆınd c˘a arcele
funct ¸ioneaz˘a independent unele de altele, prob-
abilitatea de funct ¸ionare a drumului D este
p(D) =

ij∈E(D)
p
ij
.
Considerˆınd a
ij
= −logp
ij
, problema drumului
de cost minim de la s la t semnific˘a deter-
minarea drumului cel mai sigur de la s la t.
79
b) Ret ¸ele PERT (Project Evaluation and Re-
view Technique).
Fie P = ¡A
1
, . . . , A
n
¦ mult ¸imea activit˘at ¸ilor atom-
ice ale unui proiect de anvergur˘a (n este mare).
P este o mult ¸ime part ¸ial ordonat˘a cu relat ¸ia de
ordine
A
i
< A
j
⇔ activitatea A
j
nu poate ˆıncepe
decˆıt dup˘a terminarea activit˘at ¸ii A
i
.
Se cunoa¸ste, pentru fiecare activitate A
i
tim-
pul de execut ¸ie t
i
.
Se cere s˘a se determine un plan de orga-
nizare a proiectului astfel ˆıncˆıt timpul to-
tal de execut ¸ie s˘a fie minim. (Not˘am c˘a
problemele practice sˆınt mai complexe datorit˘a
restrict ¸iilor de utilizare concurent˘a a resurselor
- oameni, utilaje, etc. - de c˘atre diversele ac-
tivit˘at ¸i).
Ideea general˘a pe care se bazeaz˘a pachetele
soft care rezolv˘a astfel de probleme este de
a asocia proiectului un digraf aciclic (ret ¸eaua
PERT) astfel:
80
Fiec˘arei activit˘at ¸i A
l
i se asociaz˘a arcul i
l
j
l
de
cost a(i
l
j
l
) = t
l
.
Nodul i
l
reprezint˘a evenimentul de ˆınceput al
activit˘at ¸ii A
l
, iar nodul j
l
reprezint˘a evenimen-
tul de sfˆır¸sit al activit˘at ¸ii A
l
.
Dac˘a activitatea A
k
poateˆıncepe imediat dup˘a
terminarea activit˘at ¸ii A
l
, se introduce ˆın digraf
arcul j
l
i
k
( activitate fictiv˘a) de cost 0.
Se asociaz˘a un eveniment s (START) unit prin
arce de cost 0 cu elementele minimale ale lui
(P, <) ¸si un eveniment t (END) de care vor fi
unite prin cˆıte un arc fiecare element maximal
al lui P.
ˆ
In digraful obt ¸inut (care este evident aciclic)
costul maxim al unui drum de la s la t reprezint˘a
cel mai scurt timp posibil de execut ¸ie a proiec-
tului.
Un drum de cost maxim se nume¸ste drum
critic, ˆıntrucˆıtˆıntˆırzierea oric˘arei activit˘at ¸i core-
spunz˘atoare unui arc de pe drumul critic con-
duce la ˆıntˆırzierea ˆıntregului proiect.
81
Figura de mai jos ilustreaz˘a tipul de digraf
(aciclic) care se formeaz˘a ¸si se evident ¸iaz˘a un
posibil drum critic. Dificultatea major˘a este
ˆın construct ¸ia digrafului (modelarea problemei
reale) ¸si problema devine extrem de interesant˘a
dac˘a (dar ¸si NP-dificil˘a) dac˘a se introduc ¸si
alte tipuri de restrict ¸ii ˆıntre activit˘at ¸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).
82
Cunoscˆınd ”profitul” p
i
∈ R
+
adus de intro-
ducerea obiectului i ˆın rucsac, se cere s˘a se
determine oˆınc˘arcare a rucsacului de profit
total maxim:
max
_
n

i=1
p
i
x
i
[
n

i=1
a
i
x
i
≤ b, x
i
∈ ¡0, 1¦∀i = 1, n
_
.
Problema, de¸si interesant˘a ˆın unele aplicat ¸ii
(de exemplu la ˆınc˘arcarea vapoarelor ˆıntr-un
port) a fost aleas˘a pentru a pune ˆın evident ¸˘a
leg˘atura dintre metoda program˘rii dinamice (dis-
crete) ¸si problemele de drum minimˆıntr-un di-
graf.
Consider˘am 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 sˆınt:
83
• 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 profitul
p
1
, ajungˆandu-se la nivelul a
1
de umplere, sau nu se
pune obiectul 1 ˆın rucsac, profitul fiind 0 ¸si nivelul
de umplere r˘amˆanˆand 0).
• ∀i = 2, n ∀j = 0, b:
(i −1)
j
i
j
cu a((i −1)
j
i
j
) = 0;
(dac˘a decidem s˘a nu introducem obiectul i ˆın ruc-
sac, atunci de la ˆınc˘arcarea rucsacului cu primele
i − 1 obiecte se trece la o ˆınc˘arcare cu primele i
obiecte ˆın care nu este selectat obiectul i, deci se
r˘amˆane pe acela¸si nivel de ˆınc˘arcare j, iar profitul
ce se va ad˘auga este 0).
Dac˘a j −a
i
≥ 0 atunci avem ¸si arcul
(i −1)
j−a
i
i
j
cu a
_
(i −1)
j−a
i
i
j
_
= p
i
.
(se poate ajunge la o ˆınc˘arcare j prin introducerea
obiectului i de volum a
i
la o ˆınc˘arcare a primelor
i −1 obiecte de nivel j −a
i
).
• ∀j = 0, b: n
j
t cu a(n
j
t) = 0.
84
Figura urm˘atoare ilustreaz˘a 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
85
Se observ˘a din construct ¸ie, c˘a orice drum de
la s la t ˆın G corespunde unei submult ¸imi de
obiecte cu suma volumelor mai mic˘a sau egal˘a
cu b ¸si de profit egal cu costul acestui drum.
Reciproc, oric˘arei mult ¸imi de obiecte cu suma
volumelor nedep˘a¸sind b ˆıi corespunde un drum
de la s la t ˆın G.
Rezult˘a c˘a dac˘a ˆın digraful G se determin˘a un
drum de cost maxim de la s la t se rezolv˘a
problema rucsacului.
Not˘am c˘a descrierea (static˘a) a digrafului G
poate fi u¸sor transformat˘a ˆın una procedural˘a
astfel ˆıncˆıt digraful s˘a reprezinte doar ilustrarea
unei metode de programare dinaminc˘a (prospec-
tiv˘a) pentru rezolvarea problemei rucsacului.
Atent ¸ie ! Problema rucsacului este referit˘a uzual
ca una din problemele NP-dificile. Solut ¸ia polinomial˘a
descris˘a mai sus conduce la un digraf aciclic cu O(nb)
vˆarfuri, care nu-i dimensiunea intr˘arii !!!
86
Rezolvarea problemei P2
Teorem˘a. 1. Fie G = (V, E) digraf, V =
¡1, . . . , n¦, s ∈ V ¸si a : E →R, astfel ˆıncˆıt
(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.
dac˘a ¸si numai dac˘a ∀i ∈ V , ∃D

si
∈ T
si
astfel
ˆıncˆıt a(D

si
) = u
i
¸si a(D

si
) = min¡a(D) [ D ∈
T
s
i¦.
Demonstrat ¸ie: ”⇐” Fie D

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

si
) = min¡a(D) [ D ∈
T
si
¦. Not˘am cu u
i
= a(D

si
) (i ∈ V ).
87
Ipoteza (I) asigur˘a faptul c˘a u
s
= 0, adic˘a
prima ecuat ¸ie a sistemului (*) este verificat˘a.
Pentru i ,= s drumul D

si
are un penultim vˆırf
j. Dac˘a D
sj
este drumul de la s la j determi-
nat pe D

si
de vˆırful j, avem: u
i
= a(D

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

sj
) +a
ji
= u
j
+a
ji
.
Ar˘at˘am c˘a u
i
= u
j
+a
ji
.
Presupunem c˘a u
i
> u
j
+ a
ji
, adic˘a a(D
sj
) >
a(D

sj
). Avem dou˘a 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
figura urm˘atoare).
s
j
i
D
sj
D
sj
*
88
2. i ∈ V (D

sj
). Fie D

sj
= D
si
◦ D
ij
cele dou˘a
drumuri determinate pe D

sj
de vˆırful 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-
trazicˆınd ipoteza (I) (vezi figura urm˘atoare).
s
j
i
D
sj
D
sj
*
C
D
ij
Deci am demonstrat c˘a ∀i ,= s ⇒u
i
= u
j
+a
ji
.
Dac˘a u
i
nu satisface (*), atunci ar exista j
1
astfel ˆıncˆat u
i
> u
j
1
+a
j
1
i
. Atunci, ca mai sus,
se poate construi un drum de cost mai mic
decˆat u
i
de la s la i.
89
Rezult˘a c˘a suficient ¸a teoremei este demonstrat˘a.
Not˘am c˘a de fapt am dovedit mai sus c˘a a(D
sj
) =
a(D

sj
) adic˘a, dac˘a j este vˆırful 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, rezult˘a :
(Principiul optimalit˘at ¸ii al lui Bellman) dac˘a
D

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

si
), dac˘a D

si
= D
sj
◦ D
ji
atunci D
sj
(respectiv D
ji
) sˆınt drumuri de cost minim de
la s la j (respectiv de la j la i).
”⇒”. Dovedim c˘a dac˘a (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
= min¡a(D) [ D ∈ T
si
¦(= a(D

si
)).
90
(a) Dac˘a i = s, atunci u
s
= 0 ¸si drumul D
ss
satisface a(D
ss
) = 0 = u
s
.
Dac˘a i ,= s, consider˘am urm˘atorul algoritm:
v ← i; k ←0;
while v ,= s do
¡ determin˘a w astfel ˆıncˆıt u
v
= u
w
+a
wv
;
// ∃w pentru c˘a u
v
satisface (*)
i
k
← v; k ++; v ←w
¦
i
k+1
←s
S˘a observ˘am c˘a algoritmul determin˘a drumul
D : (s =)i
k+1
, i
k+1
i
k
, . . . , i
1
, i
1
i
0
, i
0
(= i)
cu D ∈ T
si
satisf˘acˆınd a(D) = a(i
k+1
i
k
)+ +
a(i
1
i
0
) = (u
i
k
− u
i
k+1
) + (u
i
k−1
− 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
k−1
¦, c˘aci atunci s-ar obt ¸ine un circuit
C de cost total 0, contrazicˆınd ipoteza (I).
91
Din construct ¸ie, se observ˘a c˘a u
i
= u
i
1
+a
i
1
i
.
(b) Fie u
i
= a(D

si
) ∀i ∈ V . Conform primei
p˘art ¸i a demonstrat ¸iei u
i
, i = 1, n, satisfac sis-
temul (∗). Presupunem c˘a u = (u
1
, . . . , u
n
) ,=
u = (u
1
, . . . , u
n
). Cum u
s
= u
s
= 0, rezult˘a c˘a
exist˘a i ,= s astfel ˆıncˆıt 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 c˘a u
i
satisface (*).
Contradict ¸ia g˘asit˘a arat˘a c˘a u = u, deci c˘a u
i
reprezint˘a costuri de drumuri minime.
92
Observat ¸ii 1. Din demonstrat ¸ie rezult˘a c˘a pen-
tru rezolvarea problemei P2 este suficient s˘a
obt ¸inem o solut ¸ie a sistemului (∗). Drumurile
corespunz˘atoare se obt ¸in ca la (a).
Algoritmii pe careˆıi vom prezenta se vor ocupa
de rezolvarea sistemului (∗). Totu¸si, dac˘a avem
u
i
= u
k
+a
ki
atunci a¸sa cum am v˘azut, k este
vˆırful dinaintea lui i de pe drumul minim de la
s la i de cost u
i
.
Rezult˘a c˘a dac˘aˆın algoritmul de rezolvare a lui
(∗) construim un tablou ˆınainte[1..n] cu com-
ponente din V ∪ ¡0, ¦ cu interpretarea final˘a
”ˆınainte[i]=vˆırful dinaintea lui i de pe drumul
minim de la s la i”, atunci vˆırfurile acestui drum
pot fi determinate ˆın O(n) construind ¸sirul i,
ˆınainte[i], ˆınainte[ˆınainte[i]],. . . pˆın˘a se depis-
teaz˘a vˆırful s.
2. Dac˘a algoritmii de rezolvare a lui (∗) vor
evita (prin modul de actualizare a vectorului
ˆınainte) aparit ¸ia circuitelor de cost total 0, atunci
se observ˘a c˘a,
93
de¸si nu mai are loc unicitatea solut ¸iei sistemu-
lui (∗), problema (P2) este rezolvat˘a. Rezult˘a
c˘a ace¸sti algoritmi vor rezolva problema (P2)
ˆın condit ¸ia
(I
t
) ∀C circuit ˆın G, a(C) ≥ 0.
3.
ˆ
In cazul grafurilor, rezolvarea problemelor
(P1)-(P3) corespunz˘atoare se poate face uti-
lizˆınd algoritmii pentru digrafuri, prinˆınlocuirea
fiec˘arei muchii cu o pereche de arce simet-
rice de acela¸si cost ca ¸si muchia pe care o
ˆınlocuiesc.
Dificultatea unei astfel de abord˘ari rezult˘a din
introducerea pentru muchii de cost negativ a
unor circuite de lungime 2 de cost negativ.
Deci, ˆın cazul grafurilor, algoritmii pentru
digrafuri sˆınt valabili doar dac˘a toate cos-
turile sˆınt nenegative.
94
4. Avˆınd ˆın vedere c˘a mult ¸imile T
ij
sˆınt finite,
se pot considera probleme analoge problemelor
(P1)-(P3) ˆınlocuind min cu max.
Utilizarea ideii uzuale,
max
x∈A
x = −(min
x∈A
(−x))
prin ˆınlocuirea costurilor a
ij
cu −a
ij
este posi-
bil˘a doar ˆın cazul digrafurilor ˆın care pentru
orice circuit C avem a(C) ≤ 0.
ˆ
In particular, aceast˘a abordare este posibil˘a ˆın
cazul digrafurilor f˘ar˘a circuite (ca ˆın aplicat ¸iile
b) ¸si c) prezentate).
Dac˘a digraful init ¸ial are circuite, problemele
de drum de cost maxim se pot dovedi u¸sor
(prin reducerea polinomial˘a la probleme hamil-
toniene) a fi NP-dificile.
95
Rezolvarea problemei (P2) ˆın cazul digra-
furilor f˘ar˘a circuite
O numerotare aciclic˘a a (vˆırfurilor) digrafu-
lui G = (V, E) este un vector ord[v] v ∈ V ,
(cu interpretarea ord[v] = num˘arul de ordine
al vˆırfului v) astfel ˆıncˆıt
∀vw ∈ E ⇒ord[v] < ord[w].
Are loc urm˘atoarea
Lem˘a. G este un digraf f˘ar˘a circuite dac˘a ¸si
numai dac˘a admite o numerotare aciclic˘a .
Demonstrat ¸ie. Este evident c˘a dac˘a G ad-
mite o numerotare aciclic˘a atunci G nu are cir-
cuite (dac˘a v
1
, v
2
, . . . , v
k
, v
1
sˆınt vˆırfurile unui
circuit atunci, cum G are o numerotare aci-
clic˘a, obt ¸inem ord[v
1
] < ord[v
2
] < . . . < ord[v
k
] <
ord[v
1
], contradict ¸ie ).
96
Reciproc, dac˘a G nu are circuite atunci ex-
ist˘a un vˆırf v
0
∈ V astfel ˆıncˆıt d

G
(v
0
) = 0
(altfel, datorit˘a finitudinii digrafului, se poate
construi un circuit); punem ord[v
0
] ← 1, con-
sider˘am G ← G-v
0
¸si repet˘am rat ¸ionamentul
(proprietatea de a nu avea circuite se trans-
mite la subdigrafuri induse).
Aflarea unei numerot˘ari aciclice a unui digraf
se nume¸ste ¸si sortare topologic˘a ˆıntrucˆat se
sorteaz˘a mult ¸imea V ˆıntr-un mod compatibil
cu ”topologia” digrafului.
Vom presupune c˘a digraful este reprezentat
cu ajutorul listelor de adiacent ¸˘a. Dimensiunea
problemei este O(n +e).
Vom construi un algoritm care s˘a rezolve prob-
lema ˆın timp O(n +e).
Acest lucru este posibil datorit˘a unei utiliz˘ari
judicioase a structurilor de date.
Linia algoritmului:
97
- determin˘am gradele interioare ale vˆırfurilor,
parcurgˆand toate listele de adiacent ¸˘a (laˆıntˆalnirea
lui w ˆın lista de adiacent ¸˘a a unui vˆarf oarecare
v se execut˘a d

G
(w)++ ;
- Parcurgem vectorul d

G
¸si vˆırfurile de grad in-
terior 0 le memor˘amˆıntr-o stiv˘a S
0
;
(a)- scoatem vˆırful din topul stivei S
0
¸si-l nu-
merot˘am;
(b)- sc˘adem 1 din gradele interioare ale vˆırfurilor
din lista de adiacent ¸˘a a vˆırfului tocmai numero-
tat(”ˆıl scoatem din digraf”) ;
(c)-ˆın modificarea anterioar˘a, crearea unui vˆırf
de grad interior 0 va implica memorarea lui ˆın
stiva S
0
;
(d)- relu˘am secvent ¸a (a) − (c) pˆın˘a cˆınd stiva
devine vid˘a.
Dac˘a nu s-au numerotat toate vˆırfurile rezult˘a
c˘a digraful cont ¸ine circuite; ˆın cazul epuiz˘arii
vˆırfurilor, s-a obt ¸inut numerotarea aciclic˘a dorit˘a
(sortarea topologic˘a).
98
Revenim la rezolvarea problemei P2.
ˆ
In acest caz, dup˘a sortarea topologic˘a a digrafului, vom
c˘a considera vˆarfurile sunt ordonate conform numerot˘arii
aciclice(vˆarful 1 numerotat cu 1, vˆarful 2 numerotat cu
2 etc.) ¸si ˆın plus vˆarful s din enunt ¸ul problemei P2 este
vˆarful 1(pentru c˘a nu vor exista drumuri de la vˆarful s la
vˆarfuri cu num˘ar de ordine mai mic decˆat el).
ˆ
In aceste
ipoteze sistemul (∗) se poate rezolva prin substitut ¸ie:
1. Sorteaz˘a 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
).
99
Rezolvarea problemei (P2) ˆın cazul cos-
turilor nenegative.
Algoritmul lui Dijkstra
Dac˘a a
ij
≥ 0 ∀ij ∈ E, atunci condit ¸ia (I’) este
ˆındeplinit˘a ¸si o solut ¸ie a sistemului (∗) se poate
obt ¸ine cu ajutorul urm˘atorului algoritm (Dijk-
stra, 1961).
Se consider˘a S ⊆ V astfel ˆıncˆıt pe parcursul
algoritmului are loc
(D) :
_
∀i ∈ S u
i
= min¡a(D
si
) [ D
si
∈ T
si
¦
∀i ∈ V \ S u
i
= min¡a(D
si
) [ D
si
∈ T
si
, V (D
si
) \ S = ¡i¦¦
Dac˘a se reu¸se¸ste construirea lui S astfel ˆıncˆıt
S = V , atunci problema e rezolvat˘a.
Init ¸ial, se va considera S = ¡s¦ ¸si ˆın n −1 pa¸si
se adaug˘a la S cˆıte un nou vˆırf din V .
100
Algoritmul lui Dijkstra
1. S ←¡s¦; u
s
←0; ˆınainte[s] ← 0;
for i ∈ V \ ¡s¦ do
¡ u
i
← a
si
; ˆınainte[i] ← s ¦
// dup˘a aceste init ¸ializ˘ari (D) are loc
2. while S ,= V do
¡
determin˘a j

∈ V \ S : u
j

= min¡u
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 dac˘a vom
ar˘ata c˘a, dac˘a ˆınaintea unei iterat ¸ii din pa-
sul 2 are loc (D), atunci, dup˘a execut ¸ia acelei
iterat ¸ii, (D) are loc de asemenea.
Ar˘at˘am mai ˆıntˆıi c˘a ˆın ipoteza c˘a (D) are loc,
atunci ad˘augarea lui j

la S nu contrazice (D).
Deci trebuie dovedit c˘a dac˘a u
j
∗ = min¡u
j
[ j ∈
V \ S¦ atunci u
j
∗ = min¡a(D
sj
∗) [ D
sj
∗ ∈ T
sj
∗¦.
101
Presupunem c˘a exist˘a D
1
sj

∈ T
sj
∗ astfel ˆıncˆıt
a(D
1
sj

) < u
j
∗.
Cum S satisface (D), avem
u
j
∗ = min¡a(D
sj
∗) [ D
sj
∗ ∈ T
sj
∗, V (D
sj
∗) \ S =
¡j

¦¦. Rezult˘a c˘a V (D
1
sj

) \ S ,= ¡j

¦.
Fie k primul vˆırf al drumului D
1
sj

(ˆın parcurg-
erea sa din s) astfel ˆıncˆıt 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 sˆınt
nenegative), ceea ce contrazice alegerea lui j

.
Contradict ¸ia obt ¸inut˘a arat˘a c˘a, dup˘a atribuirea
S := S ∪ ¡j

¦, prima parte a condit ¸iei (D) are
loc.
Pentru ca ¸si cea de-a doua parte a condit ¸iei (D)
s˘a aib˘a loc dup˘a aceast˘a atribuire, s˘a observ˘am
c˘a ∀j ∈ V \ (S ∪ ¡j

¦) avem
min¡a(D
sj
) [ D
sj
∈ T
sj
, V (D
sj
) \ (S ∪ ¡j

¦) =
¡j¦¦ = min
_
min¡a(D
sj
) [ D
sj
∈ T
sj
, V (D
sj
) \
S = ¡j¦¦, min¡a(D
sj
) [ D
sj
∈ T
sj
, V (D
sj
) \ S =
¡j, j

¦
_
.
102
Cum (D) are loc, primul din cele dou˘a minime
de mai sus este u
j
. Fie α
j
valoarea celui de-
al doilea minim ¸si fie D
1
sj
drumul pentru care
se realizeaz˘a. Cum j

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

) +a(D
1
j

j
).
ˆ
Intrucˆıt 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
).
Dac˘a drumul D
1
j

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

j
.
Altfel, considerˆınd k vˆırful 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
.
ˆ
Intrucˆıt S satisface (D), u
k
este costul unui
drum minim de la s la k cu vˆırfurile cont ¸inute
ˆın S deci α
j
este costul unui drum de la s la j
cu vˆırfurile cont ¸inute ˆın S. Rezult˘a c˘a α
j
≥ u
j
,
c˘aci S satisface (D).
103
Am obt ¸inut c˘a singurul caz ˆın care α
j
< u
j
este
atunci cˆınd α
j
= u
j
∗+a
j

j
< u
j
, situat ¸ie testat˘a
ˆın ciclul for al pasului 2.
Rezult˘a c˘a (D) are loc pe tot parcursul algo-
ritmului ¸si deci valorile finale ale variabilelor
u
i
reprezint˘a solut ¸ia sistemului (∗). Evident,
tabloul ˆınainte este actualizat pentru memo-
rarea implicit˘a a drumurilor de cost minim.
Complexitatea timp a algoritmului, ˆın de-
scrierea dat˘a este O(n
2
) datorit˘a select˘arii min-
imelor din pasul 2.
Este posibil˘a organizarea unor cozi cu priori-
tate (de exemplu heap-urile) pentru a memora
valorile u
i
, i ∈ U = V \S, astfel ˆıncˆıt extragerea
minimului s˘a se fac˘a ˆın O(1), iar actualiz˘arile
necesare ˆın pasul 2 s˘a se fac˘a ˆın timpul to-
tal de O(mlogn) unde m = [E[ (executˆandu-
se O(m) descre¸steri de valori u
i
, fiecare nece-
sitˆand O(logn) operat ¸ii; Johnson ,1977).
104
Cea mai bun˘a implementare se obt ¸ine utilˆazˆand
heap-uri Fibonacci, ceea ce conduce la o com-
plexitate timp de O(m + nlogn) (Fredman ¸si
Tarjan, 1984).
Op˘adure cu r˘ad˘acini ( rooted forest) este un
digraf aciclic D = (V, A) cu proprietatea c˘a
fiecare vˆarf are gradul interior cel mult 1.
Vˆarfurile de grad interior 0 sunt r˘ad˘acinile lui
D, iar cele cu grad exterior 0 sunt frunzele lui
D.
Dac˘a uv ∈ A atunci u este p˘arintele lui v iar v
este copilul lui u.
Dac˘a p˘adurea are o singur˘a r˘ad˘acin˘a, atunci
ea este un arbore cu r˘ad˘acin˘a.
O p˘adure Fibonacci este o p˘adure cu r˘ad˘acini
F = (V, A) ˆın care copiii fiec˘arui vˆarf v pot fi
ordonat ¸i astfel ˆıncˆat copilul num˘arul i are la
rˆandul s˘au cel put ¸in i −2 copii.
105
Teorem˘a.
ˆ
Intr-o p˘adure Fibonacci F = (V, A)
fiecare vˆarf are cel mult 1 +2log[V [ copii.
Dem. Not˘am cu σ(v) num˘arul vˆarfurilor acce-
sibile din vˆın F (ordinul subarborelui cu r˘ad˘acina
v).
Ar˘at˘am c˘a σ(v) ≥ 2
(d
+
(v)−1)/2
, care va implica
prin logaritmare afirmat ¸ia din enunt ¸ul teore-
mei.
Se observ˘a c˘a inegalitatea precedent˘a are loc
pentru v frunz˘a, a¸sa c˘a utiliz˘am un rat ¸ionament
inductiv.
Fie k = d
+
(v) ¸si fie v
i
copilul num˘arul i al lui
v (i = 1, . . . , k).
Avem, σ(v
i
) ≥ 2
(d
+
(v
i
)−1)/2
≥ 2
(i−1)/2
, ˆıntrucˆat
d
+
(v
i
) ≥ i −2.
Deci σ(v) = 1+

k
i=1
σ(v
i
) ≥ 1+

k
i=1
2
(i−3)/2

≥ 2
(k−1)/2
, ¸si teorema e demonstrat˘a.
106
Un heap Fibonacci cont ¸inˆand valorile reale
(u
j
; j ∈ U) este o p˘adure Fibonacci F = (U, A)
(fiecare vˆarf j are ordonat ¸i copii astfel ˆıncˆat
copilul num˘arul i are cel put ¸in i−2 copii)ˆın care
este precizat˘a o mult ¸ime T ⊂ U astfel ˆıncˆat:
( i) dac˘a jk ∈ A atunci u
j
≤ u
k
;
(ii) dac˘a h este copilul num˘arul i al lui j ¸si h ,∈ T
atunci h are cel put ¸in i −1 copii;
(iii) dac˘a j
1
¸si j
2
sunt dou˘a r˘ad˘acini distincte
atunci d
+
(j
1
) ,= d
+
(j
2
).
Teorema anterioar˘a ne asigur˘a c˘a num˘arul
r˘ad˘acinilor nu va dep˘a¸si 2 +2log[U[.
Heapul Fibonacci va fi reprezentat cu ajutorul
urm˘atoarei structuri de date:
- cˆate o list˘a dublu ˆınl˘ant ¸uit˘a C
j
a copiilor
fiec˘arui j ∈ U;
-funct ¸ia p : U → U, unde p(j) = p˘arintele lui j
(dac˘a j e r˘ad˘acin˘a p(j) = j);
107
-funct ¸ia d
+
: U →N;
-funct ¸ia b : ¡0, . . . , t¦ → U (cu t = 1+¸2log[U[)
cu proprietatea c˘a b(d
+
(j)) = j pentru fiecare
r˘ad˘acin˘a j;
-funct ¸ia l : U → ¡0, 1¦ cu l(j) = 1 dac˘a ¸si nu-
mai dac˘a j ∈ T.
Teorem˘a. Pentru g˘asirea ¸si ¸stergerea de n ori
a unui j care minimizeaz˘a u
j
¸si descre¸sterea de
m ori a unei valori u
j
, structura de date poate
fi actualizat˘aˆın timpul O(m+p+nlogp), unde
p este num˘arul de vˆarfuri din p˘adurea init ¸ial˘a.
Dem. Pentru g˘asirea unui j care minimizeaz˘a
u
j
este suficient s˘a 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:
-fie v
1
, . . . , v
k
copii lui j;
-¸stergem j ¸si arcele ce ies din j din p˘adure;
-acum v
1
, . . . , v
k
au devenit r˘ad˘acini, iar condit ¸iile
(i) ¸si (ii) nu-s afectate;
108
-pentru repararea condit ¸iilor (iii) se execut˘a
pentru fiecare r = v
1
, . . . , v
k
:
repar˘a(r): dac˘a ∃s r˘ad˘acin˘a cu d
+
(r) = d
+
(s)
atunci: dac˘a u
r
≤ u
s
, adaug˘a s ca ultim copil
al lui r ¸si repar˘a(r), altfel ( u
r
> u
s
), adau˘a r
ca ultim copil al lui s ¸si repar˘a(s).
ˆ
In acest fel condit ¸iile (i) ¸si (iii) sunt ment ¸inute,
iar existent ¸a r˘ad˘acinii s de mai sus, se face cu
ajutorul funt ¸iilor b, d ¸si p (ˆın timpul procesului,
se actualizeaz˘a structura de date).
Descre¸sterea unei valori u
j
pentru un j ∈ U se
face astfel:
declar˘a r˘ad˘acin˘a(j):
dac˘a j are un p˘arinte, fie acesta v, atunci
se ¸sterge arcul vj ¸si se aplic˘a repar˘a(r);
dac˘a v / ∈ T se adaug˘a v la T, altfel se scoate v
din T ¸si se aplic˘a declar˘a r˘ad˘acin˘a(v):
109
Not˘am cu incr(..) ¸si decr(..) num˘arul cre¸sterilor,
respectiv descre¸sterilor lui .. ˆın timpul operat ¸iilor
din enunt ¸ul teoremei. Avem:
num˘arul de apeluri ale lui declar˘a r˘ad˘acin˘a=
decr(u
j
)+decr(T) ≤
≤decr(u
j
)+incr(T)+p ≤2decr(u
j
)+p=2m+p,
deoarece cre¸stem T cel mult o dat˘a dup˘a ce a
descrescut un u
j
.
Dac˘a R este mult ¸imea r˘ad˘acinilor, avem:
num˘arul de apeluri ale lui repar˘a=
decr(A)+decr(T) ≤
≤decr(A)+incr(R)+p =2decr(A)+p
≤2(nlogp+ num˘arul de apeluri ale lui declar˘a r˘ad˘acin˘a)+p
≤ 2(nlogp +2m+p) +p.
Cum decizia dac˘a s˘a se apeleze una sau alta
dintre cele dou˘a funct ¸ii se faceˆın O(1), rezult˘a
c˘a algoritmul are complexitatea O(m+p+nlogp)
¸si teorema e demonstrat˘a.
110
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 rezult˘a din teorema precedent˘a
¸si din urm˘atoarea figur˘a care indic˘a un mod de
construct ¸ie a heap-ului init ¸ial (binomial):
B3 B2 B1 B0
B4
111
Dac˘a se dore¸ste 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,
r˘amˆıne aceea¸si. Totu¸si, ˆın situat ¸ii practice con-
crete exist˘a posibilitatea de a gr˘abi introduc-
erea lui t ˆın S utilizˆınd o funct ¸ie de dirijare a
procesului de construct ¸ie a lui S.
O funct ¸ie g : V → R
+
se nume¸ste estimator
consistent dac˘a
(i) ∀i ∈ V u
i
+ g(i) ≤ min¡a(D
st
) [ D
st

T
st
¸si i ∈ V (D
st
)¦;
(ii) ∀ij ∈ E g(i) ≤ a
ij
+g(j).
S˘a observ˘am c˘a g(i) = 0 ∀i este un estimator
consistent (trivial).
Dac˘a ˆıns˘a V (G) este o mult ¸ime de puncte din
plan, atunci g(i)=distant ¸a (euclidian˘a) de la
i la t este un estimator consistent, dac˘a sˆınt
satisf˘acute condit ¸iile (ii).
112
Dac˘a g este un estimator consistent atunci se
poate modifica alegerea lui j

ˆın algoritm ast-
fel: u
j
∗ +g(j

) = min¡u
j
+g(j) [ j ∈ V \ S¦.
Algoritmul r˘amˆıne valabil (demonstrat ¸ia este
identic˘a situat ¸iei g(i) = 0 ∀i ¸si se folose¸ste (ii)
repetat).
Avantajul este acela c˘a se vor introduce ˆın S
vˆırfuri care s˘a ne apropie de t.
ˆ
In implementarea care rezult˘a din descrierea
algoritmului lui Dijkstra, s-a presupus c˘a se
dispune de matricea de cost-adiacent ¸˘a a di-
grafului.
ˆ
In cazul digrafurilor cu multe vˆırfuri
(ˆın care, de exemplu, listele de adiacent ¸˘a sˆınt
memorate ˆın memoria secundar˘a), sauˆın cazul
digrafurilor date funct ¸ional (se dispune de o
procedur˘a care construie¸ste pentru un vˆırf dat,
lista sa de adiacent ¸˘a) aceast˘a implementare
este neeficient˘a, respectiv neaplicabil˘a. O im-
plementare care nu are aceste deficient ¸e este
urm˘atoarea datorat˘a lui Glover, Klingman ¸si
Philips (1985)
113
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 genereaz˘a ˆın L, lista de
adiacent ¸˘a ¸si costurile corespunz˘atoare
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
¡ determin˘a d = min¡u
i
[ i ∈ NEXT¦;
transfer˘a ∀i ∈ NEXT cu u
i
= d ˆın NOW
¦
¦
114
Rezolvarea problemei (P2) ˆın cazul gen-
eral.
Dac˘a exist˘a ij ∈ E astfel ˆıncˆıt 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)).
Considerˆınd ˆındeplinit˘a condit ¸ia (I’) vom re-
zolva sistemul (∗) prin aproximat ¸ii succesive.
Consider˘am ∀i ∈ V ¸si ∀m = 1, n −1
(BM)
u
m
i
= min¡a(D) [ D ∈ T
si
, nr arcelor lui D este ≤ m¦.
Cum orice drum ˆın G are cel mult n − 1 arce
rezult˘a c˘a dac˘a reu¸sim construct ¸ia lui
u
1
= (u
1
1
, . . . , u
1
n
), u
2
= (u
2
1
, . . . , u
2
n
), . . .,
u
n−1
= (u
n−1
1
, u
n−1
2
, . . . , u
n−1
n
), atunci u
n−1
este
solut ¸ia sistemului (∗).
Algoritmul care rezult˘a este urm˘atorul:
115
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, ar˘at˘am c˘a dac˘a u
m
(m ≥ 1) satisface (BM)
atunci ¸si u
m+1
o satisface. Fie i ∈ V ¸si con-
sider˘am mult ¸imile de drumuri:
A = ¡D [ D ∈ T
si
, num˘arul arcelor lui D ≤ m+1¦.
B = ¡D [ D ∈ T
si
, num˘arul arcelor lui D ≤ m¦.
C = ¡D [ D ∈ T
si
, num˘arul arcelor lui D = m+1¦.
Atunci A = B ∪ C ¸si
min¡a(D) [ D ∈ A¦ = min(min¡a(D) [ D ∈
B¦, min¡a(D) [ D ∈ C¦)
116
Cum u
m
satisfac (BM), rezult˘a c˘a
min¡a(D) [ D ∈ A¦ = min(u
m
i
, min¡a(D) [ D ∈
C¦).
Fie min¡a(D) [ D ∈ C¦ = a(D
0
), D
0
∈ C.
Dac˘a j este vˆırful ce-l precede pe i ˆın D
0
(ex-
ist˘a, ˆıntrucˆıt D
0
are m˘acar 2 arce) atunci
a(D
0
) = a(D
0
sj
) +a
ji
≥ u
m
j
+a
ji
,
ˆıntrucˆıt D
0
sj
are m arce ¸si u
m
satisface (BM).
Rezult˘a c˘a
min¡a(D) [ D ∈ A¦ = min¡u
m
i
, min
j,=i
(u
m
j
+
a
ji
)¦ valoare care ˆın algoritm se atribuie lui
u
m+1
i
.
Observ˘am c˘a algoritmul are complexitatea de
O(n
3
) dac˘a determinarea minimului din pasul
2 necesit˘a O(n) operat ¸ii.
Determinarea drumurilor minime se face ment ¸inˆınd
vectorul ˆınainte, init ¸ializat ˆın mod evident ˆın
pasul 1 ¸si actualizat corespunz˘ator, la stabilirea
minimului din pasul 2.
117
Observat ¸ii:
1. Dac˘a la algoritm se adaug˘a ¸si pasul 3:
3. if (∃i ∈ V a.ˆı. u
n−1
i
> min
j,=i
(u
n−1
j
+a
ji
))
then”exist˘a circuit de cost negativ “.
se obt ¸ine posibilitatea test˘arii ˆı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 s˘a nu se poat˘a mic¸sora
u
n−1
i
).
Depistarea circuitului C se face simplu (O(n))
utilizˆınd vectorul ˆınainte.
2. Dac˘a exist˘a k < n−1 astfel ˆıncˆıt u
k
= u
k+1
atunci algoritmul se poate opri. Mai mult, se
poate obt ¸ine o implementare a acestui algo-
ritm, care s˘a aib˘a complexitatea O(nm), folosind
o coad˘a UQ ˆın care se vor p˘astra vˆırfurile i
c˘arora li se modific˘a u
i
curent (se va renunt ¸a,
evident, la memorarea tuturor aproximat ¸iilor
succesive).
118
Rezolvarea problemei (P3).
Consider˘am
u
ij
= min¡a(D
ij
) [ Dij ∈ T
ij
¦ ∀i, j ∈ V.
Problema se reduce la determinarea matricii
U = (u
ij
)
nn
, atunci cˆınd se cunoa¸ste A ma-
tricea de cost-adiacent˘a.
Drumurile de cost minim vor fi obt ¸inuteˆın O(n)
dac˘a odat˘a cu determinarea matricii U se va
construi matricea
ˆ
Inainte=(ˆınainte(i,j))
nn
cu elementele avˆınd
semnificat ¸ia
ˆınainte(i,j)=vˆırful dinaintea lui j de pe drumul
de cost minim de la i la j ˆın G.
S˘a observ˘am c˘a dac˘a a
ij
≥ 0 ∀ij, atunci, iterˆınd
algoritmul lui Dijkstra pentru s ∈ ¡1, . . . , n¦, se
obt ¸ine un algoritm de complexitate O(n
3
).
119
Dac˘a G nu cont ¸ine circuite de cost negativ, dar
exist˘a ¸si arce de cost negativ, iterˆınd algoritmul
lui Bellman Ford pentru s = 1, n se obt ¸ine un
algoritm de complexitate O(n
4
).
Ar˘at˘am ˆın continuare c˘a se poate proceda ¸si
mai eficient.
Solut ¸ia I
a
.
Fie α : V → R a. ˆı. ∀ij ∈ E α(i) +a
ij
≥ α(j).
Consider˘am a : E →R
+
dat˘a de
a
ij
= a
ij
+α(i) −α(j), ∀ij ∈ E.
Avem a
ij
≥ 0 ¸si, ˆın plus, oricare ar fi D
ij
∈ T
ij
,
(2) a(D
ij
) = a(D) +α(i) −α(j).
Rezult˘a c˘a se poate itera algoritmul lui Dijkstra
pentru obt ¸inerea drumurilor de cost a minim ¸si
din relat ¸ia (2) se observ˘a c˘a un drum este de
cost a minim dac˘a ¸si numai dac˘a este drum de
cost a minim. Rezult˘a urm˘atorul algoritm:
120
1. Determin˘a α ¸si construie¸ste A.
2. Rezolv˘a (P3) pt. A construind U ¸si
ˆ
Inainte.
3. Determin˘a U (u
ij
:= u
ij
−α(i) +α(j) ∀ij).
Pasul 2 al algoritmului necesit˘a O(n)
3
) operat ¸ii
prin iterarea algoritmului lui Dijkstra.
Pasul 1 se poate realizaˆın timpul O(n
3
), fixˆınd
s ∈ V ¸si rezolvˆınd (P2) cu alg. Bellman-Ford.
ˆ
In adev˘ar, dac˘a (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
¦, adic˘a ∀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
= min¡a(D
ij
) [ D
ij
∈ T
ij
, V (D
ij
) \ ¡i, j¦ ⊆
¡1, 2, . . . , m−1¦¦ ∀i, j ∈ ¡1, 2, . . . , n¦, m = 1, n +1.
121
Atunci, evident u
1
ij
= a
ij
∀i, j ∈ V (presupunem
matricea A avˆınd elementele diagonale egale
cu 0).
ˆ
In plus,
u
m+1
ij
= min¡u
m
ij
, u
m
im
+u
m
mj
¦ ∀i, j ∈ V, m = 1, . . . , n.
Aceast˘a ultim˘a relat ¸ie se poate justifica induc-
tiv: un drum de cost minim de la i la j care nu
are vˆırfuri interioare ≥ m poate s˘a nu cont ¸in˘a
vˆırful m, ¸si atunci are costul u
m
ij
, sau poate
cont ¸ine vˆırful m, ¸si atunci, din principiul op-
timalit˘at ¸ii al lui Bellman ¸si ipoteza inductiv˘a,
este u
m
im
+u
m
mj
.
Evident, dac˘a se obt ¸ine u
m
ii
< 0 atunci digraful
cont ¸ine un circuit de cost negativ C care trece
prin vˆırful i, cu V (C) \ ¡i¦ ⊆ ¡1, . . . , m−1¦.
Aceast˘a solut ¸ie a problemei (P3) este cunos-
cut˘a ca algoritmul lui Floyd-Warshal ¸si poate
fi descris astfel:
122
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. Dac˘a digraful nu cont ¸ine circuite
de cost negativ, atunci init ¸ializˆınd a
ii
←∞, val-
orile finale ale elementelor diagonale dau costul
minim al unui circuit ce trece prin vˆırful core-
spunz˘ator.
123
Solut ¸ia a III
a
. Consider˘am a
ii
= 0 ∀i ∈ V (G
nu cont ¸ine circuite de cost < 0).
Iterarea algoritmului lui Bellman Ford corespunde
urm˘atoarei abord˘ari. Fie
u
m
ij
= min¡a(D
ij
) [ D
ij
∈ T
ij
, D
ij
are cel mult m arce¦
∀i, j ∈ V , ∀m = 1, 2, . . . , n −1.
Dac˘a not˘am U
m
= (u
m
ij
) cu m ∈ ¡0, 1, 2. . . , n −
1¦, unde U
0
are toate elementele ∞cu except ¸ia
celor de pe diagonal˘a 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 realizeaz˘a pen-
tru k = j, ¸si utilizˆınd ipoteza c˘a a
jj
= 0).
ˆ
Intregul proces de calcul se poate rescrie ma-
tricial dac˘a se consider˘a urm˘atorul produs pe
mult ¸imea matricilor p˘atrate cu elemente reale:
124
∀B, C ∈ /
nn
B ⊗C = P = (p
ij
)
unde, p
ij
= min
k=1,n
(a
ik
+b
kj
).
Se observ˘a c˘a, dac˘a se folose¸ste determinarea
uzual˘a a minimului, atunci calculul matricii P
este similar ˆınmult ¸irii uzuale a matricilor.
ˆ
In
plus operat ¸ia ⊗ este asociativ˘a.
Cu aceste notat ¸ii avem
U
m+1
= U
m
⊗A ¸si inductiv rezult˘a c˘a
U
1
= A, U
2
= A
(2)
, . . . , U
n−1
= A
(n−1)
unde A
(k)
= A
(k−1)
⊗A ¸si A
(1)
= A.
ˆ
In ipoteza c˘a graful nu are circuite de cost neg-
ativ, atunci A
(2
k
)
= A
(n−1)
∀k : 2
k
≥ n −1.
Rezult˘a c˘a determinarea succesiv˘a 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)
125
(desigur, matricea
ˆ
Inainte se va obt ¸ineˆın O(n
3
)
operat ¸ii ca ˆın demonstrat ¸ia teoremei 1, dup˘a
determinarea lui U
n−1
.)
Dac˘a ”produsul“ matricial considerat se face
cu algoritmi mai performant ¸i atunci se obt ¸ine
o rezolvare eficient˘a a problemei (n
3
din eval-
uarea precedent˘a se poate ˆınlocui cu n
log
2
7
=
n
2,81
(Strassen 1969); sau chiar cu n
2,38
(Cooppersmith, Winograd 1987)).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
126
3. Probleme de conexiune.
Teorema lui Menger ¸si aplicat ¸ii.
Definit ¸ie. Fie G = (V, E) (di)graf ¸si X, Y ⊆ V .
Numim XY-drum ˆın G orice drum D ˆın G de
la un vˆırf x ∈ X la un vˆırf y ∈ Y , astfel ˆıncˆıt
V (D) ∩ X = ¡x¦ ¸si V (D) ∩ Y = ¡y¦.
ˆ
In figura al˘aturat˘a, 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.
S˘a observ˘am c˘a dac˘a x ∈ X ∩ Y atunci drumul
de lungime 0 D = ¡x¦ este XY -drum.
127
Vom spune c˘a drumurile D
1
¸si D
2
sˆınt disjuncte
dac˘a 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, necesit˘a deter-
minarea unor mult ¸imi de XY -drumuri disjuncte
¸si cu num˘ar maxim de elemente.
Vom nota cu p(X, Y ; G) num˘arul maxim de
XY -drumuri disjuncte ˆın (di)graful G.
Teorema care precizeaz˘a acest num˘ar a fost
stabilit˘a de Menger ˆın 1927 ¸si constituie unul
din rezultatele fundamentale din teoria grafu-
rilor.
Definit ¸ie. Fie G = (V, E) un digraf ¸si X, Y ⊆
V . Numim mult ¸ime XY-separatoare ˆın G o
mult ¸ime Z ⊆ V astfel ˆıncˆıt ∀D ∈ T(X, Y ; G) ⇒
V (D) ∩ Z ,= ∅.
128
Not˘am 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 definit ¸ie, rezult˘a urm˘atoarele propriet˘at ¸i
imediate ale mult ¸imilor XY -separatoare:
(a) Dac˘a Z ∈ S(X, Y ; G) atunci ∀D ∈ T(X, Y ; G)
D nu este drumˆın G−Z.
(b) X, Y ∈ S(X, Y ; G).
(c) Dac˘a Z ∈ S(X, Y ; G) atunci ∀A astfel ˆıncˆıt
Z ⊆ A ⊆ V avem A ∈ S(X, Y ; G).
(d) Dac˘a Z ∈ S(X, Y ; G) ¸si T ∈ S(X, Z; G) sau
T ∈ S(Z, Y ; G) atunci T ∈ T(X, Y ; G).
129
Proprietatea (d) este esent ¸ial˘a pentru obt ¸inerea
teoremei urm˘atoare ¸si este evident ¸iat˘a mai jos
X
Y
T
Z
Teorem˘a. 1. Fie G = (V, E) (di)graf ¸si X, Y ⊆
V . Atunci
p(X, Y ; G) = k(X, Y ; G).
Demonstrat ¸ie: 1
0
. Dac˘a p = p(X, Y ; G) ¸si
D
1
, D
2
, . . . , D
p
sˆınt XY -drumuri disjuncte ˆın G,
atunci ∀Z ∈ S(X, Y ; G) avem Z ∩ V (D
i
) ,= ∅ ¸si
cum D
i
sˆınt 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).
130
2
0
. Ar˘at˘am prin induct ¸ie dup˘a a(G) = [V [ +[E[
c˘a ∀G = (V, E) ∀X, Y ⊆ V
(∗) ∃ k(X, Y ; G) XY -drumuri disjuncte ˆın G.
(Evident, din (∗) rezult˘a c˘a
p(X, Y ; G) ≥ k(X, Y ; G) ¸si deci, ˆımpreun˘a cu
1
0
, teorema e demonstrat˘a).
Cum (∗) se verific˘a pentru (di)grafuri G cu
a(G) = 1, 2, consider˘am ˆın pasul inductiv c˘a
(∗) are loc pentru orice (di)graf G
t
¸si orice
X
t
, Y
t
⊆ V (G
t
), cu a(G
t
) < a(G). Pentru a
exclude cazurile banale, vom presupune c˘a
X ,⊆ Y , Y ,⊆ X ¸si k = k(X, Y ; G) > 0.
Cazul 1. Exist˘a Z ∈ S(X, Y ; G) astfel ˆıncˆıt
[Z[ = k, Z ,= X, Y .
Consider˘am V
XZ
= ¡v [ ∃D ∈ T(X, Z; G) : v ∈
V (D)¦ ¸si V
ZY
= ¡v [ ∃D ∈ T(Z, Y ; G) : v ∈
V (D)¦.
131
S˘a observ˘am c˘a V
XZ
∩ V
ZY
= Z
(dac˘a exist˘a v ∈ V
XZ
∩ V
ZY
− Z, atunci se
obt ¸ine c˘a Z nu este XY-separatoare; dac˘a ex-
ist˘a z ∈ Z astfel ˆıncˆıt z / ∈ V
XZ
∩ V
ZY
atunci
Z−¡z¦ este XY-separatoare, contrazicˆınd [Z[ =
k(X, Y ; G)).
X
Y Z
Vxz
Vzy
Pe de alt˘a parte, exist˘a x ∈ X−Z (dac˘a X ⊆ Z,
atunci cum X ∈ S(X, Y ; G) ¸si [Z[ = k(X, Y ; G)
rezult˘a X = Z, contrazicˆınd ipoteza cazului
1) ¸si evident x / ∈ V
ZY
(altfel, Z nu ar fi XY -
separatoare). Rezult˘a [V
ZY
[ < [V [.
ˆ
In mod
similar [V
XZ
[ < [V [.
132
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- separatoareˆın G
XZ
, respectiv ZY -separatoare
ˆın G
ZY
¸si are cardinalul k; dac˘aˆın unul din cele dou˘a gra-
furi, ar exista o mult ¸ime T separatoare de cardinal < k,
atunci, utilizˆınd observat ¸ia (d), se contrazice definit ¸ia
lui k pentru G, X ¸si Y ).
Din ipoteza inductiv˘a, rezult˘a c˘a exist˘a 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,
rezult˘a c˘a aceste 2k drumuri se pot concatena
dou˘a cˆıte dou˘a ˆın G (vezi figura de mai jos) ¸si
deci (∗) are loc.
X
Y
Z
133
Cazul 2. Oricare ar fi Z XY -separatoare
astfel ˆıncˆıt [Z[ = k avem Z = X sau Z = Y .
Presupunem, pentru precizarea notat ¸iilor, Z =
X. Cum X ,⊆ Y , exist˘a x ∈ X − Y . X − ¡x¦
nu este XY -separatoare (are mai put ¸in de k
elemente). Exist˘a deci un XY-drum ˆın G. Fie
e = xy prima muchie (arc) a acestui drum (ex-
ist˘a!). S˘a observ˘am c˘a y / ∈ X. Consider˘am
G
t
= G − e. Avem a(G
t
) < a(G), deci (∗) are
loc pentru G
t
, X ¸si Y .
Dac˘a k(X, Y ; G
t
) = k, atunci cele k XY -drumuri
disjuncte din G
t
sˆınt XY -drumuri disjuncte ¸si ˆın
G deci (∗) are loc pentru G, X ¸si Y .
Dac˘a k(X, Y ; G
t
) < k, atunci ˆın G
t
exist˘a Z
t
XY -separatoare cu [Z
t
[ = k−1 (se aplic˘a, even-
tual, proprietatea (c)).
134
Deci Z
t
nu este XY -separatoateˆın G ([Z
t
[ < k).
Singurele XY -drumuri pe care Z nu le inter-
secteaz˘a sˆınt cele care au drept prim˘a muchie
(arc) pe e.
Din definit ¸ia lui k, rezult˘a c˘a x / ∈ Z
t
, y / ∈ Z
t
¸si
[Z
t
∪ ¡x¦[ = [Z
t
∪ ¡y¦[ = k.
Din alegerea lui x ¸si y avem Z
t
∪ ¡x¦ ,= Y ¸si
Z
t
∪ ¡y¦ ,= X.
Din ipoteza cazului 2, rezult˘a atunci c˘a
Z
t
∪ ¡x¦ = X ¸si Z
t
∪ ¡y¦ = Y .
Cele k drumuri din (∗) sˆınt ˆın acest caz
¡z¦
z∈Z
t ¸si (x, xy, y).
x y
Z’
e
X
Y
Cu acestea, teorema este demonstrat˘a.
135
Observat ¸ii: 1
0
. Egalitatea min-max din enunt ¸ul
teoremei este interesant˘a ¸si conduce, a¸sa cum
vom vedea, la rezultate importante, ˆın cazuri
particulare.
2
0
Teorema se poate demonstra ¸si algoritmic
ca o consecint ¸˘a a teoremei fluxului maxim-
sect ¸iunii minime, a¸sa cum vom ar˘ata ˆın capi-
tolul relativ la probleme de flux.
Forma echivalent˘a ˆın care a fost enunt ¸at˘a ¸si
demonstrat˘a init ¸ial de Menger (1927) teorema
1 este:
Teorem˘a. 1’. Fie G = (V, E) un (di)graf ¸si
s, t ∈ V , astfel ˆıncˆıt s ,= t, st / ∈ E. Exist˘a k
drumuri intern disjuncte de la s la t ˆın graful G
dac˘a ¸si numai dac˘a ˆındep˘artˆınd mai put ¸in de k
vˆırfuri diferite de s ¸si t, ˆın graful r˘amas exist˘a
un drum de la s la t.
136
Not˘am c˘a dou˘a drumuri sˆınt intern disjuncte
dac˘a nu au vˆırfuri comune cu except ¸ia extremit˘at ¸ilor.
Se observ˘a c˘a dac˘a se consider˘a 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 invers˘a celei de mai sus
asupra tripletului G, X, Y din teorema 1, arat˘a
c˘a teorema 1 se obt ¸ine din teorema 1’.
137
Am definit un graf G p-conex (p ∈ N

) dac˘a
G = K
p
sau dac˘a [G[ > p ¸si G nu poate fi
deconectat prin ˆındep˘artarea a mai put ¸in de p
vˆırfuri. Utilizˆınd teorema 2’ obt ¸inem
Corolar. Un graf G este p-conex dac˘a G = K
p
sau ∀st ∈ E(G) exist˘a p drumuri intern dis-
juncte de la s la t ˆın G.
Determinarea num˘arului 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
st∈E(G)
p(¡s¦, ¡t¦; G)
problem˘a care vom dovedi c˘a se poate rezolva
ˆın timp polinomial.
Un caz particular interesant al teoremei 1, se
obt ¸ine atunci cˆınd G este un graf bipartit iar X
¸si Y sˆınt cele dou˘a clase ale bipartit ¸iei:
138
Teorem˘a. 2. (Konig, 1931) Dac˘a G =
(S, R; E) este un graf bipartit, atunci cardinalul
maxim al unui cuplaj este egal cu cardinalul
minim al unei mult ¸imi de vˆırfuri 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 rezult˘a imediat dac˘a observ˘am c˘a o
mult ¸ime de vˆırfuri este SR-separatoare dac˘a ¸si
numai dac˘a este incident˘a cu orice muchie a
grafului.
O aplicat ¸ie, fundamental˘a ˆın numeroase rat ¸ionamente
combinatorii, a acestei teoreme este teorema lui Hall
(1935).
Definit ¸ie: Fie I ¸si S mult ¸imi finite nevide. Nu-
mim familie de submult ¸imi ale lui S (indexat˘a
dup˘a I) orice aplicat ¸ie , : I → 2
S
. Vom nota
familia , = (A
i
; i ∈ I) ¸si vom folosi notat ¸ia
funct ¸ional˘a uzual˘a
,(J) = ∪
j∈J
A
j
(pentru J ⊆ I).
139
Dac˘a , = (A
i
; i ∈ I) este o familie de submult ¸imi
ale lui S, o funct ¸ie r
,
: I → S cu proprietatea
c˘a r
,
(i) ∈ A
i
, ∀i ∈ I se nume¸ste funct ¸ie de
reprezentare pentru familia ,.
ˆ
In acest caz, (r
,
(i); i ∈ I) formeaz˘a un sistem
de reprezentant ¸i ai familiei A.
Dac˘a funct ¸ia de reprezentare r
,
este injec-
tiv˘a atunci r
,
(I) ⊆ S se nume¸ste sistem de
reprezentant ¸i distinct ¸i ai familiei ,, sau transver-
sal˘a.
Problema central˘aˆın teoria transversalelor este
aceea de a caracteriza familiile , care admit
transversale (eventual cu anumite propriet˘at ¸i).
Prima teorem˘a de acest tip a fost stabilit˘a de
Hall ˆın 1935:
140
Teorem˘a. 3. Familia , = (A
i
; i ∈ I) de submult ¸imi
ale lui S admite o transversal˘a dac˘a ¸si numai
dac˘a
(H) [,(J)[ ≥ [J[ ∀J ⊆ I.
Demonstrat ¸ie: Necesitatea este evident˘a: dac˘a
, admite o funct ¸ie r
,
de reprezentare injectiv˘a
atunci ∀J ⊆ I r
,
(J) ⊆ ,(J) ¸si deci [,(J)[ ≥
[r
,
(J)[ ≥ [J[ (ˆıntrucˆıt r
,
este injectiv˘a).
Suficient ¸a. Consider˘am graful bipartit G
,
=
(I, S; E) unde am presupus I ∩ S = ∅ (altfel,
se consider˘a copii izomorfe disjuncte) iar E =
¡is [ i ∈ I, s ∈ S ∧ s ∈ A
i
¦. Se observ˘a c˘a
N
G
,
(i) = A
i
¸si c˘a , are o transversal˘a dac˘a
¸si numai dac˘a G
,
are un cuplaj de cardinal
[I[.
ˆ
In ipoteza c˘a (H) are loc, ar˘at˘am c˘a orice
mult ¸ime de vˆırfuri incident˘a cu toate muchiile
lui G
,
are m˘acar [I[ elemente,
141
ceea ce dovede¸ste existent ¸a cuplajului de car-
dinal [I[ (utilizˆınd teorema 2).
Fie X = I
t
∪ S
t
⊂ I ∪ S o mult ¸ime de vˆırfuri in-
cident˘a cu toate muchiile. Rezult˘a c˘a N
G
,
(I −
I
t
) ⊆ S
t
, adic˘a ,(I − I
t
) ⊆ S
t
. Atunci, [X[ =
[I
t
[ +[S
t
[ ≥ [I
t
[ +[,(I − I
t
)[. Folosind condit ¸ia
(H) obt ¸inem ˆın continuare: [X[ ≥ [I
t
[ +[,(I −
I
t
)[ ≥ [I
t
[ +[I −I
t
[ = [I[.
I
S
I’
S’
142
O alt˘a teorem˘a celebr˘a care poate fi obt ¸inut˘a
ca o consecint ¸˘a imediat˘a a teoremei 2 este teo-
rema lui Dilworth, 1950.
Prefer˘am totu¸si, o demonstrat ¸ie direct˘a, pen-
tru a evident ¸ia asem˘anarea cu cea a teoremei
1. Fie (P, ≤) o mult ¸ime finit˘a part ¸ial ordonat˘a
(≤ este o relat ¸ie de ordine pe P ).
Dac˘a x, y ∈ P, spunem c˘a x ¸si y sˆınt compara-
bile dac˘a x ≤ y sau y ≤ x.
Un lant ¸ ˆın (P, ≤) este o submult ¸ime L a lui P
cu proprietatea c˘a orice dou˘a elemente ale sale
sˆınt comparabile.
Un antilant ¸ ˆın (P, ≤) este o submult ¸ime A a lui
P cu proprietatea c˘a ∀x, y ∈ A x ≤ y ⇒ x = y.
Teorem˘a. 4. (Dilworth, 1950) Dac˘a (P, ≤)
este o mult ¸ime part ¸ial ordonat˘a finit˘a, atunci
num˘arul minim de lant ¸uri a c˘aror reuniune (dis-
junct˘a) este P este egal cu cardinalul maxim
al unui antilant ¸.
143
Demonstrat ¸ie. Fie a(P, ≤) cardinalul maxim al
unui antilant ¸ al lui (P, ≤).
Ar˘at˘am prin induct ¸ie dup˘a [P[, c˘a exist˘a a(P, ≤)
lant ¸uri a c˘aror reuniune este P (inegalitatea
invers˘a este imediat˘a).
Dca˘a [P[ = 1, afirmat ¸ia este trivial˘a, deci pre-
supunem, ˆın pasul inductiv, c˘a teorema are loc
pentru orice mult ¸ime part ¸ial ordonat˘a cu mai
put ¸in de [P[ ≥ 2 elemente.
Fie L un lant ¸ maximal (ˆın raport cu incluzi-
unea) al lui P.
Dac˘a a(P −L, ≤) = a(P, ≤)−1, atunci teorema
are loc din ipoteza inductiv˘a.
Deci, presupunem c˘aˆın P −L exist˘a 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 observ˘a c˘a P = P

∪P
+
, P

∩P
+
= A ¸si c˘a
[P

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

(respectiv, P
+
)].
144
L
a
a
a
1
2
m
A
P
-
P
+
Se poate, deci, aplica ipoteza inductiv˘a 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
.
Rezult˘a c˘a (L

i
∪ L
+
i
)
i=1,m
sˆınt cele a(P, ≤)
lant ¸uri a c˘aror reuniune este P.
145
Structura grafurilor p-conexe.
Lem˘a. 1. Fie G = (V, E) p-conex, [V [ ≥ p+1,
U ⊆ V [U[ = p ¸si x ∈ V −U. Exist˘a ˆın G p xU-
drumuri cu singurul vˆırf comun x.
Demonstrat ¸ie: Consider˘am graful G
t
= (V ∪
¡z¦, E
t
), unde E
t
= E ∪ ¡zy [ y ∈ U¦.
x
z
U
G
G
t
este p-conex.
ˆ
In adev˘ar, ∀A cu [A[ ≤ p − 1
G
t
− A este conex (dac˘a z ∈ A, acest lucru
este evident din p-conexiunea lui G; dac˘a A ⊆
V , atunci G
t
− A este conex ˆıntrucˆıt G − A
este conex ¸si ∃y ∈ U cu zy ∈ E(G
t
− A) ).
Lema rezult˘a, aplicˆınd teorema 1’ grafului G
t
¸si perechii x, z.
146
Lem˘a. 2. Dac˘a G = (V, E) este un graf p-
conex p ≥ 2, atunci oricare ar fi dou˘a muchii
e
1
¸si e
2
¸si p −2 vˆırfuri x
1
, x
2
, . . . , x
p−2
exist˘a un
circuit ˆın G care le cont ¸ine.
Demonstrt ¸ie: Induct ¸ie dup˘a p.
Dac˘a p = 2, trebuie s˘a dovedim c˘aˆın orice graf
2-conex, prin orice dou˘a muchii trece un cir-
cuit. Consider˘am G
t
obt ¸inut din G prin insert ¸ia
cˆıte unui vˆırf pe muchiile e
1
( a ) ¸si e
2
( b ).
e1
e2
G
a
b
G’
Noul graf este tot 2-conex, deoarece orice vˆırf
am scoate, nu se pierde conexiunea . Exist˘a
deci ˆın G
t
dou˘a ab-drumuri disjuncte, care ˆın G
ofer˘a un circuit ce cont ¸ine e
1
¸si e
2
.
147
Fie p > 2 ¸si presupunem afirmat ¸ia adev˘arat˘a
pentru orice graf k-conex k < p. Fie G p-conex.
Putem presupune c˘a extremit˘atile muchiilor e
1
¸si e
2
nu sˆınt printre x
1
, x
2
, . . . , x
p−2
, deoarece
altfel, afirmat ¸ia ar rezulta prin induct ¸ie.
Graful G − x
p−2
este (p − 1)-conex. Conform
ipotezei inductive exista un circuit µ ce cont ¸ine
x
1
, x
2
, . . . , x
p−3
¸si e
1
, e
2
. Fie Y mut ¸imea vˆırfurilor
lui µ, [Y [ ≥ p.
Folosind lema 1, exist˘aˆın G p x
p−2
y drumuri cu
y ∈ Y , disjuncte. Putem presupune c˘a pentru
orice x
p−2
y astfel de drum, y este primul vˆırf
din Y ˆıntˆılnit, a¸sa c˘a aceste drumuri au cˆıte un
singur vˆırf comun cu Y . D˘am o orientare cir-
cuitului µ ¸si numerot˘am vˆırfurile sale conform
acestei orient˘ari.Avem deci drumurile
D
x
p−2
y
1
, D
x
p−2
y
2
, . . . , D
x
p−2
y
p
.
148
x
p-2
y1
y2
yp
yi
Vˆırfurile y
1
, y
2
, . . . , y
p
descompun circuitul ˆın dru-
murile D
y
1
y
2
, D
y
2
y
3
, . . . , D
y
p−1
y
p
, D
y
p
y
1
.
Exist˘a un drum dintre acestea, ˆın care nu e
cont ¸inut nici unul din elementele
x
1
, . . . , x
p−3
, e
1
, e
2
.
Fie acest drum D
y
1
y
2
; atunci
D
x
p−2
y
2
, D
y
2
y
3
, . . . , D
y
p
y
1
, D
y
1
x
p−2
este un circuit
ce cont ¸ine x
1
, x
2
. . . , x
p−2
, e
1
¸si e
2
,
¸si lema este demonstrat˘a.
149
Teorem˘a. 5. (Dirac 1953) Dac˘a G = (V, E)
este un graf p-conex p ≥ 2, atunci prin orice p
vˆırfuri ale sale trece un circuit.
Demonstrat ¸ie. Fie x
1
, x
2
, . . . , x
p−2
, x
p−1
, x
p
p
vˆırfuri oarecare ale lui G. Deoarece graful G
este conex, exist˘a e
1
= xx
p−1
¸si e
2
= yx
p
¸si
aplic˘am lema 2.
Aplic˘am aceast˘a teorem˘a, precum ¸si ideea uti-
lizat˘aˆın demonstrat ¸ia lemei 2, pentru a demon-
stra o condit ¸ie suficient˘a de hamiltonietate in-
teresant˘a, datorat˘a lui Erd¨os ¸si Chvatal (1972).
Teorem˘a. 6. Fie G p-conex. Dac˘a α(G) ≤ p
atunci G este hamiltonian.
Demonstrat ¸ie: Presupunem c˘a G nu e hamil-
tonian. Vom obt ¸ine o contradict ¸ie. Cum G
este p-conex , exist˘a un circuit de lungime cel
put ¸in p (conform teoremei lui Dirac de mai
sus).
150
Fie C un circuit de lungime maxim˘a ˆın G. Dac˘a G nu
e hamiltonian, exist˘a v / ∈ C.
ˆ
Intrucˆıt [C[ ≥ p, conform
lemei 2, exist˘a p vC-drumuri disjuncte (cu except ¸ia lui v)
fie ele D
vv
1
, D
vv
2
, . . . , D
vv
p
(numerotarea vˆırfurilor este ˆın
ordinea ˆıntˆılnirii lor ˆıntro parcurgere fixat˘a a circuitului
). Not˘am, pentru fiecare v
i
, cu w
i
vˆırful 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
, C−w
i
v
i
, D
v
i
v
de lungime mai mare decˆıt C). Cum
α(G) ≤ p, mult ¸imea ¡v, w
1
, w
2
, . . . , w
p
¦ nu este stabil˘a.
Deci, exist˘a 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 decˆıt C, contrazicˆınd ipoteza c˘a C
este de lungime maxim˘a.
151
III. ARBORI
1. Propriet˘at ¸i elementare ale arborilor
Definit ¸ie: Un arbore este un graf conex ¸si f˘ar˘a
circuite.
Teorem˘a. 1. Fie G = (V, E) un graf.
Urm˘atoarele afirmat ¸ii sˆınt echivalente:
(i) G este arbore.
(ii) G este conex ¸si este minimal cu aceast˘a
proprietate.
(iii) G este f˘ar˘a circuite ¸si este maximal cu
aceast˘a proprietate.
Observat ¸ie:Maximalitatea ¸si minimalitatea din condit ¸iile
(ii) ¸si (iii) se refer˘a la mult ¸imea muchiilor grafului G ¸si
se consider˘a ˆın raport cu relat ¸ia de ordine dat˘a de in-
cluziune. Mai precis, cele dou˘a afirmat ¸ii se pot formula
echivalent astfel:
(ii’) G este conex ¸si ∀e ∈ E(G), G − e este
neconex.
(iii’) G este f˘ar˘a circuite ¸si ∀e ∈ E(G), G + e
are un circuit.
152
Definit ¸ie: Fie G = (V, E) un (multi)graf. Se
nume¸ste arbore part ¸ial al lui G, un graf part ¸ial
T = (V, E
t
) (E
t
⊆ E) care este arbore.
Vom nota cu T
G
mult ¸imea arborilor part ¸iali
ai lui G.
Obs. T
G
,= ∅ dac˘a ¸si numai dac˘a G este conex.
ˆ
In adev˘ar, dac˘a T
G
,= ∅, atunci exist˘a un arbore
part ¸ial T = (V, E
t
) al lui G. T este conex, deci
ˆıntre orice dou˘a vˆırfuri ale lui G exist˘a un drum
cu muchii din E
t
⊆ E. Prin urmare G este
conex.
Reciproc, dac˘a G este conex, atunci consider˘am
urm˘atorul algoritm:
1. T ← G
2. while (∃e ∈ E(T) astfel ˆıncˆıt T \ ¡e¦ este conex) do
T ← T \ ¡e¦
153
Graful T obt ¸inut este graf part ¸ial al lui G, este
conex (din ipotez˘a, dup˘a atribuirea din 1, a¸sa
este ¸si din condit ¸ia lui while, T este conex dup˘a
fiecare iterat ¸ie) ¸si ˆın plus la oprirea algoritmu-
lui, T satisface condit ¸ia ii) din teorema 1, deci
este arbore.
O alt˘a demonstrat ¸ie a reciprocei anterioare se
bazeaz˘a pe observat ¸ia c˘a G = (V, E) este conex
dac˘a ¸si numai dac˘a oricare ar fi o partit ¸ie (V
1
, V
2
)
a lui V exist˘a e = v
1
v
2
∈ E cu v
i
∈ V
i
i = 1, 2.
Dac˘a [V [ = n > 0 atunci urm˘atorul algoritm
construie¸ste 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
¦
154
Se observ˘a c˘a T
k
este arbore ∀k = 1, n
(inductiv, dac˘a T
k
este arbore, atunci din construct ¸ie
T
k+1
este conex ¸si nu are circuite)
¸si, ˆın plus, se verific˘a imediat c˘a:
[V (T
k
)[ = k iar [E(T
k
)[ = k−1 ∀k = 1, 2, . . . , n.
Aceast˘a demonstrat ¸ie aplicat˘a unui arbore G
cu n vˆırfuri dovede¸ste ca G are n −1 muchii.
Proprietatea obt ¸inut˘a poate fi folosit˘a pentru
completarea teoremei 1 cu alte caracteriz˘ari ale
arborilor:
Teorem˘a. 1’. Urm˘atoarele afirmat ¸ii sˆınt echiva-
lente pentru un graf G = (V, E) cu n vˆırfuri:
(i) G este arbore.
(ii) G este conex ¸si are n −1 muchii.
(iii) G este far˘a circuite ¸si are n −1 muchii.
(iv) G = K
n
pentru n = 1, 2 ¸si G ,= K
n
pentru
n ≥ 3 ¸si ad˘augarea unei muchii la G produce
exact un circuit.
155
2. Num˘ararea ¸si enumerarea arborilor part ¸iali
Familia T
G
a arborilor part ¸iali ai unui (multi)graf
are propriet˘at ¸i interesante. Vom prezenta o
metod˘a (tip backtrack) de generare a ele-
mentelor lui T
G
, problem˘a de interes practic
ˆın multe aplicat ¸ii (de exemplu, ˆın chimie).
Fie G = (V, E), V = ¡1, 2, . . . , n¦, [E[ = m.
Reprezent˘am E printr-un tablou E[1..m, 1..2]
cu componente din V cu semnificat ¸ia c˘a dac˘a
v = E[i, 1] ¸si w = E[i, 2], atunci vw este muchia
i a grafului G ( i = 1, m ).
Vom presupuneˆın plus, c˘a primele d
G
(v
0
) muchii
din tabloul E satisfac E[i, 1] = v
0
unde v
0
∈ V
este un vˆırf 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
156
Un arbore part ¸ial T ∈ T
G
va fi identificat cu
mult ¸imea indicilor ce reprezint˘a muchiile sale
ˆın tabloul E (submult ¸ime a lui ¡1, . . . , m¦ de
cardinal n −1).
Pe tot parcursul gener˘arii dispunem de un vec-
tor global T[1..n−1] cu componente din mult ¸imea
1..m ¸si de un indicator i avˆınd semnificat ¸ia: ˆın
arborele curent care se construie¸ste, primele
i −1 muchii sˆınt
T[1] < T[2] < . . . < T[i −1] (i ∈ ¡1, . . . , n¦).
generare-arbori-part ¸iali(int i);
// se genereaz˘a tot ¸i arborii part ¸iali ai lui G
avˆınd drept prime i −1 muchii,elementele
T(1), . . . , T(i −1)
ale tabloului E (ordonate cresc˘ator).
variabile locale:
j ∈ ¡1, . . . m¦; S, list˘a de vˆırfuri; x ∈ V ;
if i = n then
//¡T(1), . . . , T(n −1)¦ formeaz˘a un
arbore part ¸ial ;
prelucreaz˘a T ( listeaz˘a, memoreaz˘a etc.)
157
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) rezolv˘a prob-
lema enumer˘arii elementelor lui T
G
.
158
Pentru exemplul considerat mai sus (G = K
4
¸si numerotarea precizat˘a pentru muchii) arborii
generat ¸i sunt urm˘atorii 16 :
2
1
2
1
5
2
1 6 1
3
3
4
Figura poate fi interpretat˘a ¸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
figurii; totu¸si s-a marcat muchia T(1) pentru
a se evident ¸ia modul de funct ¸ionare a algorit-
mului).
159
Pentru implementarea eficient˘a a testului dac˘a
graful part ¸ial
_
¡T[1], . . . , T[i − 1]¦ ∪ ¡j¦
_
G
nu are circuite s˘a
observ˘am c˘a din construct ¸ie,
_
¡T[1], . . . , T[i −1]¦
_
G
nu are circuite , deci componentele sale conexe
sˆınt arbori.
Vom considera un vector global rad[1..n] cu
componente din V cu semnificat ¸ia
rad[v] = r˘ad˘acina arborelui la care apart ¸ine
vˆırful v (unul din vˆırfurile acestui arbore).
ˆ
Inaintea apelului generare-arbori-part ¸iali(1) se
init ¸ializeaz˘a rad[v] ← v(∀v ∈ V ), ceea ce core-
spunde faptului c˘a ¡T[1], . . . , T[i −1]¦ = ∅.
Pe parcursul apelurilor (recursive) se ˆıncearc˘a
plasarea muchiei j ˆın mult ¸imea curent˘a
T[1], . . . , T[i −1].
160
Fie v = E[j, 1] ¸si w = E[j, 2].
Atunci
_
¡T[1], . . . , T[i − 1]¦ ∪ ¡j¦
_
G
nu are cir-
cuite dac˘a ¸si numai dac˘a
muchia vw nu are extremit˘at ¸ileˆın aceea¸si com-
ponent˘a a lui
_
¡T[1], . . . , T[i −1]¦
_
G
,
adic˘a dac˘a ¸si numai dac˘a rad[v] ,= rad[w].
Vectorul rad trebuie ˆıntret ¸inut pentru a avea
semnificat ¸ia dorit˘a.
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]
¦
161
(ˆın cuvinte, arborele cu r˘ad˘acina x se ”une¸ste”
cu arborele cu r˘ad˘acina rad[w]; se salveaz˘a ˆın
S vˆırfurile arborelui cu r˘ad˘acina x).
Dup˘a apelul lui generare-arbori-part ¸iali(i + 1)
trebuie ref˘acut vectorul rad la valoarea dinainte
de apel, deci se va ˆınlocui B: cu
for u ∈ S do rad[u] := x;
Num˘arul elementelor lui T
G
, problem˘a intere-
sant˘a chiar ¸si numai pentru analiza algorit-
mului precedent, se poate determina eficient.
Prezent˘amˆın continuare una din solut ¸iile posi-
bile.
Fie G = (V, E) un multigraf cu V = ¡1, 2, . . . , n¦.
Cosider˘am A = (a
ij
)
nn
matricea de adiacent ¸˘a
a lui G (a
ij
= multiplicitatea muchiei ij dac˘a
ij ∈ E, altfel 0). Fie
D = diag(d
G
(1), d
G
(2), ..., d
G
(n)).
162
Matricea L[G] = D − A se nume¸ste matricea
de admitant ¸˘a a multigrafului G sau ma-
tricea Laplace a lui G.
S˘a observ˘am c˘a ˆın L[G] suma elemetelor de pe
fiecare linie ¸si fiecare coloan˘a este 0.
Teorem˘a. 2. (Kirchoff-Trent) (Matrix Tree
Theorem) Dac˘a G este un multigraf cu mult ¸imea
de vˆırfuri ¡1, . . . , n¦ ¸si L[G] matricea Laplace,
atunci
[T
G
[ = det(L[G]
ii
) ∀i ∈ ¡1, . . . , n¦.
L[G]
ij
noteaz˘a minorul lui L[G] obt ¸inut prin
ˆındep˘artarea liniei i ¸si coloanei j.
Demonstrat ¸ia (pe care o omitem) se bazeaz˘a
pe regula clasic˘a de dezvoltare a unui determi-
nat dup˘a o linie, dup˘a descompunerea lui T
G
ˆın
arborii care cont ¸in o muchie fixat˘a ¸si cei care
nu cont ¸in aceea¸si muchie.
163
Corolar.
¸
¸
¸T
K
n
¸
¸
¸= n
n−2
(Cayley).
ˆ
In adev˘ar,
L[K
n
] =





n −1 −1 . . . −1
−1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. −1
−1 . . . −1 n −1





¸si (dup˘a un simplu calcul):
det(L[K
n
]
11
) =
¸
¸
¸
¸
¸
¸
¸
¸
¸
n −1 −1 . . . −1
−1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. −1
−1 . . . −1 n −1
¸
¸
¸
¸
¸
¸
¸
¸
¸
= n
n−2
.
(Dac˘a n = 4, caz ilustrat ˆın figura precedent˘a, se obt ¸ine
¸
¸
T
K
4
¸
¸
= 4
2
= 16, adic˘a au fost generat ¸i tot ¸i arborii !)
Observat ¸ie. Teorema ofer˘a un algoritm poli-
nomial de determinare a lui [T
G
[.
164
3. Arbori part ¸iali de cost minim.
Consider˘am urm˘atoarea problem˘a:
(P1) Date G = (V, E) graf ¸si c : E →R
(c(e) – costul muchiei e), s˘a se determine
T

∈ T
G
astfel ˆıncˆıt
c(T

) = min¡c(T) [ T ∈ T
G
¦,
unde c(T) =

e∈E(T)
c(e).
Algoritmii cunoscut ¸i pentru rezolvarea proble-
mei (P1) au la baz˘a urm˘atoarea ideie:
Se consider˘a 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 c˘a 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
n−k
)
de n−k arbori disjunct ¸i astfel ˆıncˆıt V (T
k
i
)
i=1,n−k
constituie o partit ¸ie a lui V ¸si se construie¸ste
T
k+1
astfel:
165
- se alege T
k
s
unul din arborii familiei T
k
.
- dintre toate muchiile lui G cu o extremitateˆın
T
k
s
¸si cealalt˘aˆın 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 ad˘aug˘am
muchia e

.
T
s
k
T
j*
k
v
s
v
j*
Se verific˘a imediat c˘a noua familie este format˘a
din arbori disjunct ¸i care partit ¸ioneaz˘a mult ¸imea
de vˆırfuri ale grafului G. Dac˘a alegerea muchiei
e

nu este posibil˘a, atunci rezult˘a c˘a G nu este
conex ¸si deci problema (P1) nu are solut ¸ie.
166
Evident, familia T
n−1
construit˘a ˆın pasul n−2
este format˘a dintr-un singur arbore T
n−1
1
.
Teorem˘a. 3. Dac˘a G = (V, E) este un graf
conex cu V = ¡1, 2, . . . , n¦ atunci T
n−1
1
con-
struit de algoritmul descris mai sus este arbore
part ¸ial de cost minim.
Demonstrat ¸ie. Vom ar˘ata c˘a ∀k ∈ ¡0, 1, .., n −
1¦ ∃T

arbore part ¸ial de cost minim al lui G,
astfel ˆıncˆıt E(T
k
) = ∪
n−k
i=1
E(T
k
i
) ⊆ E(T

).
ˆ
In particular, pentru k = n − 1, E(T
n−1
) =
E(T
n−1
1
) ⊆ E(T

) va implica T
n−1
1
= T

(cei
doi arbori avˆınd acela¸si num˘ar de muchii, rezult˘a
c˘a incluziunea are loc cu egalitate) ¸si teorema
e demonstrat˘a.
Pentru k = 0, afirmat ¸ia este trivial adev˘arat˘a:
E(T
0
) = ∅ ¸si din conexiunea grafului G, T
G
este nevid˘a deci exist˘a T

solut ¸ie a problemei
P1.
167
Dac˘a afirmat ¸ia este adev˘arat˘a 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

¦.
Dac˘a e

∈ E(T

), atunci, evident, E(T
k+1
) ⊆
E(T

) ¸si deci afirmat ¸ia are loc pentru k +1.
Presupunem, deci, c˘a 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
) rezult˘a
c˘a C va cont ¸ine o muchie e
1
,= e

cu o ex-
tremitate ˆın V (T
k
s
) ¸si cealalt˘a ˆı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*
168
Fie T
1
= (T

+¡e

¦) −¡e
1
¦.
T
1
∈ T
G
(este conex ¸si are n-1 muchii).
Din construct ¸ie, avem c˘a 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

), adic˘a T
1
este de cost minim
¸si teorema e demonstrat˘a.
Observat ¸ii:
1
0
Demonstrat ¸ia anterioar˘a r˘amˆıne valabil˘a pen-
tru funct ¸ii de cost c : T
G
→ R astfel ˆıncˆıt:
∀T ∈ T
G
, ∀e ∈ E(T), ∀e
t
/ ∈ E(T)
c(e
t
) ≤ c(e) ⇒ c((T +e
t
) −e) ≤ c(T).
2
0
ˆ
In algoritmul descris nu s-a precizat modul
de alegere al arborelui T
k
. Vom considera, ˆın
continuare dou˘a strategii de alegere a acestui
arbore.
169
Algoritmul lui Prim(1957) (implementarea
este datorat˘a lui Dijkstra, 1961).
Arborele T
k
s
va fi ˆıntotdeauna arborele cu
cele mai multe vˆırfuri dintre arborii familiei
curente.
Rezult˘a deci, c˘a la fiecare pas k > 0, vom avea
un arbore cu k + 1 vˆırfuri, ceilalt ¸i n − k − 1
avˆınd cˆıte un singur vˆırf. Not˘am T
s
= (V
s
, E
s
)
arborele curent. Consider˘am vectorii α[1..n] cu
componente din V ¸si β[1..n] cu componente
reale, cu urm˘atoarea semnificat ¸ie:
(S)
∀j ∈ V −V
s
, β
_
j
¸
= c(α[j]j) = min¡c(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:
170
1. V
s
:← ¡s¦; (s ∈ V , oarecare )
E
s
← ∅;
for v ∈ V \ ¡s¦ do ¡ α[v] := s; β[v] := c(sv)¦;
// dac˘a ij / ∈ E atunci c(ij) = ∞).
2. while V
s
,= V do
¡ determin˘a 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 observ˘a c˘a (S) este satisf˘acut˘a de init ¸ializ˘arile
pasului 1, iar ˆın pasul 2, se respect˘a, pe de o
parte, strategia general˘a de alegere a muchiei
de cost minim cu exact o extremitate ˆın V
s
(alegerea lui j

) ¸si pe de alt˘a parte se ment ¸ine
valabilitatea condit ¸iei (S) pentru iterat ¸ia urm˘atoare
(testul asupra valorii curente a lui β[j]).
171
Complexitatea algoritmului este O(n−1)+O(n−
2) +. . . +O(1) = O(n
2
) dat˘a de operat ¸iile din
pasul 2 necesare determin˘arii minimului ¸si ac-
tualiz˘arii tabloului β. Se poate introduce testul
de conexiune a grafului, dup˘a determinarea lui
β[j

]. Algoritmul este recomandatˆın cazul gra-
furilor cu multe muchii, m = O(n
2
).
Algoritmul lui Kruskal (1956)
ˆ
In metoda general˘a prezentat˘a, se va alege la
fiecare pas drept arbore T
k
s
unul din cei doi ar-
bori cu proprietatea c˘a sˆınt ”unit ¸i” printr-o
muchie de cost minim printre toate muchi-
ile cu extremit˘at ¸ile pe arbori diferit ¸i.
Aceast˘a alegere, complicat˘a la prima vedere, se
realizeaz˘a simplu prin sortarea muchiilor gra-
fului nedescresc˘ator ˆın raport cu costurile ¸si
apoi prin examinarea ˆın mod ”greedy“ a listei
obt ¸inute.
Dac˘a not˘am cu T = E(T
k
), atunci algoritmul
poate fi descris, astfel:
172
1. Sorteaz˘a E = (e
1
, e
2
, . . . , e
m
) astfel ˆıncˆıt:
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 necesit˘a O(mlogn) operat ¸ii.
Pentru realizarea eficient˘a a testului din pasul
2 va fi necesar s˘a reprezent˘am la fiecare pas k
(din metoda general˘a ) V (T
k
1
), V (T
k
2
), . . . , V (T
k
n
)
¸si s˘a test˘am dac˘a muchia e
i
curent˘a are ambele
extremit˘at ¸i ˆın aceea¸si mut ¸ime. Se vor folosi
pentru reprezentarea acestor mult ¸imi, arbori
(care nu sˆınt ˆın general subarbori ai lui G).
Fiecare astfel de arbore va avea un vˆırf, numit
r˘ad˘acin˘a, care va desemna mult ¸imea de vˆırfuri
ale lui G pe care o memoreaz˘a.
173
Vom folosi o funct ¸ie find(v) care determin˘a ˆın
ce mult ¸ime este vˆırful v, adic˘aˆıntoarce r˘ad˘acina
arborelui care memoreaz˘a mult ¸imea de vˆırfuri
la care apart ¸ine v.
Pentru realizarea reuniunilor (disjuncte) de
mult ¸imi de vˆırfuri care apar ˆın transformarea
familiilor T
k
(din metoda general˘a) vom folosi
o procedur˘a union(v, w) cu semnificat ¸ia:
”mult ¸imile de vˆırfuri (diferite ¸si disjuncte)
la care apart ¸in v ¸si w se reunesc ˆın una
singur˘a”.
Cu aceste proceduri, pasul 2 al algoritmului se
scrie:
2. while i ≤ m do
¡ fie e
i
= vw;
if find(v) ,= find(w) then
¡ union(v, w);
T ← T ∪ ¡e
i
¦
¦
i ++
¦
174
Complexitatea algoritmului va depinde de modul
de implementare a funct ¸iei find ¸si procedurii
union.
Solut ¸ia I
a
. Consider˘am tabloul rad[1..n] cu
componente din V cu semnificat ¸ia
rad[v] =r˘ad˘acina arborelui ce memoreaz˘a
mult ¸imea la care apart ¸ine vˆırful v.
Ad˘aug˘am 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]
175
Procedura union necesit˘a O(n) operat ¸ii:
procedure union(v, w : V );
variabil˘a local˘a i : V ;
for i ∈ V do
if rad[i] = rad[v] then rad[i] := rad[w]
Pasul 2 al algoritmului necesit˘a O(m) apeluri
ale funct ¸iei find (exact m a¸sa cum l-am descris,
sau O(m) dac˘a 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.
Rezult˘a c˘a ˆın total pasul 2 necesit˘a
O(m+(n −1)O(m)) = O(n
2
) operat ¸ii.
Deci, complexitatea algoritmului este
O(max(mlogn, n
2
)).
Dac˘a graful este plin, m = O(n
2
), se observ˘a
c˘a acest algoritm este mai put ¸in eficient decˆıt
cel al lui Prim.
176
Solut ¸ia a II
a
. Consider˘am pred[1..n] un tablou
ˆıntreg cu interpretarea :
tt
pred[v]= vˆırful dinaintea lui v de pe dru-
mul unic la v, de la r˘ad˘acina arborelui care
memoreaz˘a mult ¸imea la care apart ¸ine v;
pred[v] = 0 ⇔v este r˘ad˘acina arborelui”.
Ad˘aug˘amˆın pasul 1, init ¸ializarea
1.3 for v ∈ V do pred[v] ← 0;
Modific˘am ¸si pasul 2 al algoritmului astfel:
2. while i ≤ m do
¡ fie e
i
= vw;
x :←find(v); y ← find(w);
if x ,= y then union(x, y);
¡ union(x, y);
T ← T ∪ ¡e
i
¦
¦
i ++
¦
177
Deci, procedura union va fi apelat˘a numai pen-
tru argumente reprezentˆınd r˘ad˘acini de arbori
diferit ¸i:
procedure union(v, w : V );
pred[v] ←w
Evident, complexitatea procedurii union este
O(1). Funct ¸ia, find esteˆın acest caz mai com-
plicat˘a:
function find(v : V );
variabil˘a local˘a 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
vˆırful v la r˘ad˘acina arborelui care-l cont ¸ine pe
v.
178
Dac˘a graful G este K
1,n−1
desenat mai jos, ¸si
lista ordonat˘a a muchiilor E = ¡12, 13, . . . , 1n¦,
atunci execut ¸ia algoritmului provoac˘a urm˘atorul
¸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-
sit˘a ˆın total O(n) operat ¸ii. S¸irul de F(1) nece-
sit˘a ˆıns˘a O(1) +O(2) + +O(n−1) = O(n
2
)
operat ¸ii.
Este deci posibil ca pasul 2 al algoritmului ˆın
aceast˘a implementare s˘a fie de complexitate
Ω(n
2
) chiar dac˘a graful este rar.
179
Deficient ¸a acestei implement˘ari este datorat˘a
posibilit˘at ¸ii ca ˆın procedura union s˘a declar˘am
r˘ad˘acin˘a nou˘a pentru cei doi arbori pe cea a
celui cu mai put ¸ine vˆırfuri, ceea ce are ca efect
posibilitatea ca h(v) s˘a devin˘a mare (O(n)) pe
parcursul algoritmului.
Acest defect poate fi evitat dac˘a, la execut ¸ia
lui union t ¸inem seama de cardinalul celor dou˘a
mult ¸imi.
Se poate memora cardinalul unei mult ¸imi ˆın
componenta tabloului pred corespunz˘atoare r˘ad˘a
cinii arborelui care memoreaz˘a acea mult ¸ime.
Mai precis, consider˘am init ¸ializarea
1.3 for v ∈ V do predd[v] ←−1;
¸si modific˘am procedura union astfel ˆıncˆıt s˘a
asigur˘amˆındeplinirea condit ¸iei
pred[v] < 0 ⇔ v este r˘ad˘acin˘a a unui arbore
¸si −pred[v] este cardinalul mult ¸imii memo-
rate ˆın el.
180
Procedura union are, ˆın acest caz, tot com-
plexitatea O(1), dar selecteaz˘a drept nou˘a r˘ad˘acin˘a
pe cea care corespunde arborelui cu mai multe
vˆırfuri:
procedure union(v, w : V );
//v ¸si w sunt r˘ad˘acini
variabila local˘a ˆıntreag˘a 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 aceast˘a implementare a funct ¸iei find ¸si pro-
cedurii union, pe tot parcursul algoritmului are
loc:
(∗) ∀v ∈ V −pred[find(v)] ≥ 2
h(v)
(reamintim c˘a h(v) noteaz˘a lungimea drumu-
lui de la v la r˘ad˘acina find(v) a arborelui ce
memoreaz˘a v ).
181
Dup˘a init ¸ializarea 1.3, ∀v ∈ V h(v) = 0 ¸si
find(v) = v iar −pred[v] = 1, deci (*) are loc
cu egalitate.
Dac˘a, ˆınaintea unei iterat ¸ii din pasul 2, (*) are
loc, atunci, dac˘a ˆın acea iterat ¸ie nu se execut˘a
union, nu se modific˘a tabloul pred ¸si deci (*)
r˘amˆıne valabil˘a ¸si dup˘a execut ¸ie.
Presupunem prin urmare c˘a se apeleaz˘a
union(x, y) ¸si c˘a se execut˘a pred[y] := x.
Aceasta ˆınseamn˘a c˘a ˆınaintea acestei iterat ¸ii
avem −pred[x] ≥ −pred[y]. S˘a observ˘am c˘a
singurele vˆırfuri v c˘arora li se modific˘a h(v)
dup˘a execut ¸ia iterat ¸iei curente sˆınt cele care
ˆınaintea iterat ¸iei satisf˘aceau find(v) = y, pen-
tru care aveam −pred[y] ≥ 2
h(v)
.
Dupa execut ¸ia iterat ¸iei avem h
t
(v) = h(v) +
1 iar find
t
(v) = x, ¸si deci trebuie s˘a verifi-
cam c˘a −pred
t
[x] ≥ 2
h
t
(v)
. Avem −pred
t
[x] =
−pred[x] − pred[y] ≥ 2 (−pred[y]) ≥ 2 2
h(v)
=
2
h(v)+1
= 2
h
t
(v)
.
182
Rezulta c˘a (*) 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 fi 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 precedent˘a, este datorat˘a apeluri
lor succesive ale lui find.
Tarjan (1976) a propus ca fiecare apel al lui
find care necesit˘a parcurgerea unui drum de
lungime mai mare decˆıt 1, s˘a ”distrug˘a ” acest
drum, aducˆındu-i vˆırfurile drept descendent ¸i imedi
at ¸i ai r˘ad˘acinii, cu scopul ca apelurile viitoare
ale lui find pentru aceste vˆarfuri s˘a nu mai
consume timp. Mai precis, avem
183
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
Dac˘a A : NxN → N este funct ¸ia lui Ackermann dat˘a
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, considerˆınd ∀m ≥ n > 0
α(m, n) = min¡z [ A
_
z, 4¸m/n|
_
≥ logn, z ≥ 1¦
avem:
Complexitatea pasului 2, utilizˆınd union din solut ¸ia
a II-a ¸si find descris mai sus, este O(m α(m, n)).
Not˘am c˘a α(m, n) cre¸ste extrem deˆıncet (pentru valorile
practice ale lui n, α(m, n) ≤ 3) ¸si deci se poate presupune
ca aceast˘a ultim˘a implementare este practic liniar˘a (ˆın
raport cu m).
184
IV. Cuplaje (de cardinal maxim).
Fie G = (V, E) un (multi)graf. Dac˘a A ⊆ E ¸si
v ∈ V , vom nota cu
d
A
(v) = [¡e [ e ∈ A, e incident˘a cu v¦[,
adic˘a gradul vˆırfului v ˆın graful part ¸ial < A >
G
.
Definit ¸ie. Se nume¸ste cuplaj (sau mult ¸ime
independent˘a de muchii) al grafului G, orice
mult ¸ime M de muchii cu proprietatea c˘a
d
M
(v) ≤ 1, ∀v ∈ V .
Vom nota cu /
G
familia cuplajelor grafului G:
/
G
= ¡M [ M ⊆ E, M cuplaj ˆın G¦.
Se observ˘a c˘a /
G
satisface propriet˘at ¸ile:
i) ∅ ∈ /
G
.
ii) M ∈ /
G
, M
t
⊆ M ⇒ M
t
∈ /
G
.
Dac˘a M ∈ /
G
atunci un vˆırf v ∈ V cu d
M
(v) =
1 se nume¸ste saturat de cuplajul M. Mult ¸imea
S(M) a vˆırfurilor saturate de cuplajul M ˆın
graful G, satisface [S(M)[ = 2[M[.
185
Dac˘a d
M
(v) = 0, atunci v se nume¸ste ex-
pus fat ¸˘a de cuplajul M . Mult ¸imea E(M) a
vˆırfurilor 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, s˘a se determine
M

∈ /
G
astfel ˆıncˆıt
[M

[ = max¡[M[ [ M ∈ /
G
¦.
(Vom nota cu ν(G) = max¡[M[ [ M ∈ /
G
¦).
Problema cuplajului maxim este strˆıns legat˘a
de problema acoperirii minime.
Definit ¸ie. Se nume¸ste acoperire (a vˆırfurilor
cu muchii) ˆın graful G orice mult ¸ime F ⊆ E de
muchii cu proprietatea c˘a d
F
(v) ≥ 1 ∀v ∈ V .
T
G
= ¡F [ F ⊆ E, F acoperire ˆın G¦ noteaz˘a
familia acoperirilor grafului G.
T
G
,= ∅ ⇔ G nu are vˆırfuri izolate (atunci,
m˘acar E este o acoperire).
186
Problema acoperirii minime este:
P2 Dat G = (V, E) un graf, s˘a se determine
F

∈ T
G
astfel ˆıncˆıt
[F

[ = min¡[F[ [ F ∈ T
G
¦.
Teorem˘a. 1. (Norman-Rabin 1959) Fie
G = (V, E) un graf f˘ar˘a vˆırfuri izolate, de ordin
n. Dac˘a 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. Consider˘am urm˘atorul algoritm:
F ← M

;
for ∀v ∈ E(M) do
¡ determin˘a v
t
∈ S(M

) astfel ˆıncˆıt vv
t
∈ E;
F ← F ∪ ¡vv
t
¦
¦
187
S˘a observ˘am c˘a pentru ∀v ∈ E(M

), cum G nu
are vˆırfuri izolate, exist˘a o muchie incident˘a cu
v, ¸si cum M

este maximal ˆın raport cu in-
cluziunea, aceast˘a muchie are cealalt˘a extrem-
itate din S(M

). Mult ¸imea de muchii F ast-
fel construit˘a este o acoperire ¸si ˆın plus [F[ =
[M

[ +[E(M

)[ = [M

[ +n −2[M

[ = n −[M

[.
Rezult˘a c˘a [F

[ ≤ [F[ = n −[M

[.
b) Fie F

o acoperire de cardinal minim. Con-
sider˘am urm˘atorul algoritm:
M ← F

while ∃v ∈ V : d
M
(v) > 1 do
¡ determin˘a e ∈ M incident˘a cu v;
M ←M −e
¦
Algoritmul construie¸ste un cuplaj M ˆın G.
Dac˘a muchia e incident˘a cu v, care se ˆınl˘atur˘a
din M ˆıntr-o iterat ¸ie while, este e = vv
t
,
188
atunci d
M
(v
t
) = 1 ¸si deci ˆın pasul urm˘ator
d
M
(v
t
) va fi zero, adic˘a la orice ˆındep˘artare a
unei muchii din mult ¸imea M curent˘a de muchii
se obt ¸ine un vˆırf expus fat ¸˘a de cuplajul final M
(dac˘a vˆırful v
t
ar fi incident cu ˆınc˘a o muchie,
atunci din acoperirea init ¸ial˘a F

se poateˆınl˘atura
muchia e ¸si s˘a obt ¸inem tot o acoperire, con-
trazicˆınd alegerea lui F

).
Deci dac˘a M este cuplajul construit de algoritm
avem: [F

[ −[M[ = [E(M)[ = n −2[M[, adic˘a
[F

[ = n −[M[ ≥ n −[M

[.
Din (a) ¸si (b) rezult˘a concluzia teoremei.
Demonstrat ¸ia f˘acut˘a arat˘a, chiar mai mult, c˘a
problemele (P1) ¸si (P2) sˆınt polinomial echiva-
lente, cuplajul M ¸si acoperirea F construite fi-
ind ¸si ele solut ¸ii optime respectiv pentru cele
dou˘a probleme.
189
Dac˘a vom considera matricea de incident ¸˘a
(vˆırf - muchie) a grafului G cu n vˆırfuri ¸si m
muchii B = (b
ij
)
nm
cu b
ij
= 1 dac˘a vˆırful i
¸si muchia j sˆınt incidente ¸si b
ij
= 0 altminteri
(ˆıntr-o ordonare fixat˘a a vˆırfurilor ¸si muchiilor),
¸si dac˘a not˘am cu e
p
vectorul p-dimensional cu
toate componentele 1, atunci cele dou˘a prob-
leme se scriu analitic astfel
P1’ max¡e
T
m
x[Bx ≤ e
n
, x ≥ 0, x
i
∈ ¡0, 1¦ i = 1, m¦
P2’ min¡e
T
m
x[Bx ≥ e
n
, x ≥ 0, x
i
∈ ¡0, 1¦ i = 1, m¦
¸si teorema 1 ofer˘a o egalitate min-max intere-
sant˘a.
ˆ
In cele ce urmeaz˘a ne vom ocupa numai de
problema (P1); ˆın plus vom presupune c˘a G
nu are vˆırfuri izolate.
190
Dac˘a s-ar ˆıncerca rezolvarea problemei (P1’)
apelˆınd la problema de programare liniar˘a aso-
ciat˘a
(LP1
t
) max¡e
t
m
x [ Bx ≤ e
n
, x ≥ 0¦
se constat˘a c˘a solut ¸iile optime pot s˘a nu fie
cu componente ˆıntregi ¸si, chiar mai mult, val-
oarea maxim˘a determinat˘a de (LP1’) s˘a fie su-
perioar˘a lui ν(G).
Cel mai simplu exempluˆın acest sens este G =
C
2n+1
. Evident, ν(C
2n+1
) = n ¸si totu¸si x
i
=
1
2
∀i = 1, 2n + 1 este o solut ¸ie optim˘a a lui
(LP1’) corespunz˘atoare, cu valoarea optim˘a
n +
1
2
> n.
1 / 2
1 / 2
1 / 2
1 / 2
1 / 2
191
Rezult˘a c˘a existent ¸a circuitelor impareˆın graful
G poate provoca dificult˘at ¸i ˆın rezolvarea prob-
lemei (P1). Mai precis, avem urm˘atoarea teo-
rem˘a:
Teorem˘a. 2. (Balinski 1971) Vˆırfurile poli-
topului Bx ≤ e
n
, x ≥ 0, x ∈ R
m
, au coordo-
natele 0, 1 ¸si
1
2
. Coordonatele
1
2
apar dac˘a ¸si
numai dac˘a G are circuite impare.
Rezult˘a de aici c˘a, ˆın cazul grafurilor bipartite, problema
(P1) este u¸sor de rezolvat: se apeleaz˘a la problema de
programare (LP1’) ¸si solut ¸ia g˘asit˘a este solut ¸ie optim˘a
pentru problema P1 (reprezentˆınd vectorul caracteristic
al unui cuplaj). Adaptarea combinatorie a algoritmu-
lui simplex din programarea liniar˘a, direct pe graful bi-
partit considerat (ˆın scopul unei economii de memorie,
tablourile simplex sˆınt reprezentate implicit) a condus la
a¸sa numita ”metod˘a ungar˘a” de rezolvare a problemei
(P1) pentru grafurile bipartite. Nu vom prezenta acest
algoritm, preferˆınd descrierea unuia mai performant da-
torat lui Hocroft ¸si Karp (1973).
192
Totu¸si teorema de dualitate din programarea
liniar˘a, 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:
Teorem˘a. 3. (Hall, 1935) Fie G = (R, S; E)
un graf bipartit. Exist˘a un cuplaj care sat-
ureaz˘a vˆırfurile lui R dac˘a ¸si numai dac˘a
[N
G
(A)[ ≥ [A[ ∀A ⊆ R.
Teorem˘a. 4. (Konig,1930) Fie G = (R, S; E)
un graf bipartit. Cardinalul maxim al unui cu-
plaj este egal cu num˘arul minim de vˆırfuri prin
ˆındep˘artarea c˘arora se obt ¸ine graful nul:
ν(G) = n −α(G)
193
Revenind la problema (P1) cu G un graf oare-
care ¸si observˆınd c˘a ν(G) ≤
1
2
[V (G)[, rezult˘a
c˘a este interesant de caracterizat grafurile cu
proprietatea c˘a admit un cuplaj M astfel ˆıncˆıt
S(M) = V (G). Un astfel de cuplaj se nume¸ste
cuplaj perfect sau 1-factor.
Este evident c˘a un graf care are un cuplaj perfect are ˆın
orice component˘a conex˘a un num˘ar par de vˆırfuri. Mai
mult, dac˘a S ⊆ V (G) atunci, ˆın ipoteza c˘a G are un
cuplaj perfect, va trebui ca pentru fiecare component˘a
conex˘a cu un num˘ar impar de vˆırfuri a grafului G−S s˘a
existe o muchie ˆın cuplajul perfect cu o extremitate ˆın
S ¸si cealalt˘a ˆın componenta conex˘a impar˘a. Rezult˘a c˘a
num˘arul componentelor conexe impare ale grafului G−S
nu poate dep˘a¸si [S[.
194
Dac˘a pentru un graf oarecare H not˘am cu
q(H) num˘arul componentelor conexe impare
ale lui H, atunci observat ¸ia anterioar˘a arat˘a
c˘a o condit ¸ie necesar˘a pentru ca G s˘a aib˘a un
cuplaj perfect este ca q(G−S) ≤ [S[ ∀S ⊆ V (G).
S˘a observ˘am c˘a atunci cˆınd S = ∅ condit ¸ia
anterioar˘a cere ca orice component˘a conex˘a a
lui G s˘a aib˘a un num˘ar par de vˆırfuri. Condit ¸ia
este ¸si suficient˘a, a¸sa cum rezult˘a din urm˘atoarea
teorem˘a.
Teorem˘a. 5. (Tutte, 1947) Un graf G =
(V, E) are un cuplaj perfect dac˘a ¸si numai dac˘a
(T) q(G−S) ≤ [S[ ∀S ⊆ V.
Demonstrat ¸ie. Ar˘at˘am, prin induct ¸ie dup˘a n =
[V [, c˘a, dac˘a G = (V, E) satisface (T), atunci
G are un cuplaj perfect.
195
Cum teorema se verific˘a imediat pentru n =
1, 2, vom presupune ˆın pasul inductiv c˘a orice
graf G
t
cu [G
t
[ < 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 ˆıncˆıt ˆın (T) avem
egalitate: q(G − S
0
) = [S
0
[ ¸si oricare ar fi S
astfel ˆıncˆıt S
0
⊆ S, S
0
,= S avem q(G−S) < [S[.
Cum G satisface T, rezult˘a c˘a G are numai
componente conexe de cardinal par.
ˆ
Intr-o ast-
fel de component˘a conex˘a, exist˘a ˆıntotdeauna
un vˆırf v
0
care nu este vˆırf de articulat ¸ie (orice
vˆırf pendant al unui arbore part ¸ial ) ¸si se verific˘a
imediat c˘a q(G−¡v
0
¦) = 1 = [¡v
0
¦[ .
Prin urmare familia ¡S [ S ⊆ V, q(G−S) = [S[¦
este nevid˘a ¸si orice element maximal al ei poate
fi considerat S
0
.
196
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 G−S
0
.
C1
C2
C3
sm
s3
Cm
s2
D1
D2
s1
Dk
Vom construi un cuplaj perfect al grafului G
compus din : a) - cˆıte un cuplaj perfect ˆın
fiecare component˘a conex˘a par˘a D
i
;
b) - un cuplaj format din m muchii, muchia
e
i
(i = 1, m) avˆınd o extremitate s
i
∈ S
0
¸si
cealalt˘a v
i
∈ C
i
;
c) - cˆıte un cuplaj perfect ˆın fiecare subgraf
[C
i
−v
i
]
G
.
197
a) Pentru orice i = 1, k graful [D
i
]
G
are un cu-
plaj perfect.
ˆ
In adev˘ar, cum m > 0, rezult˘a c˘a [D
i
[ < n ¸si
deci pentru a dovedi existent ¸a cuplajului per-
fect ˆın [D
i
]
G
este suficient s˘a dovedim ( din
ipoteza inductiv˘a) c˘a G
t
= [D
i
]
G
satisface (T).
Fie S ⊆ D
i
. Dac˘a q(G
t
−S) > [S[ atunci q(G−
S
0
∪S) = q(G−S
0
) +q(G
t
−S) = [S
0
[ +q(G
t

S) > [S
0
[ +[S[ = [S
0
∪ S[, contrazicˆınd faptul
c˘a G satisface (T).
Avem q(G
t
−S) ≤ [S[ ¸si deci G
t
satisface T.
b) Fie H = (S
0
, ¡C
1
, . . . , C
m
¦; E
t
) graful bipartit
avˆınd o clas˘a a bipartit ¸iei S
0
, cealalt˘a clas˘a,
mult ¸imea componentelor conexe impare ale lui
G − S
0
, iar mult ¸imea muchiilor E
t
format˘a din
perechile sC
i
(s ∈ S; i = 1, m) cu proprietatea
c˘a exist˘a v ∈ C
i
cu sv ∈ E(G).
198
C1
C2
C3
sm
s3
Cm
s2
s1
Acest graf are un cuplaj perfect.
ˆ
In adev˘ar,
este suficient s˘a ar˘at˘am c˘a H satisface condit ¸ia
lui Hall de existant ¸˘a a unui cuplaj M
0
ce sat-
ureaz˘a vˆırfurile lui ¡C
1
, . . . , C
m
¦ :
∀A ⊆ ¡C
1
, . . . , C
m
¦, [N
H
(A)[ ≥ [A[
¸si cum [S
0
[ = m va rezulta c˘a M
0
este cuplaj
perfect ˆın H.
Fie A ⊆ ¡C
1
, . . . , C
m
¦.
Observ˘am c˘a B = N
H
(A) ⊆ S
0
¸si din definit ¸ia
lui H, ˆın graful G nu avem muchii de la un
vˆırf v ∈ S
0
− B la un vˆırf v ∈ C
i
cu C
i
∈ A.
Deci componentele conexe impare C
i
din A ale
grafului G−S
0
vor r˘amˆıne componente conexe
impare ¸si ˆın G−B.
199
Rezult˘a c˘a q(G − B) ≥ [A[. Pe de alt˘a parte
G satisface condit ¸ia lui Tutte (T) deci [B[ ≥
q(G − B). Am obt ¸inut deci [B[ ≥ [A[ adic˘a
[N
H
(A)[ ≥ [A[.
Cum A a fost aleas˘a arbitrar, rezult˘a c˘a 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
t
= [C
i

v
i
]
G
are un cuplaj perfect.
Folosind ipoteza inductiv˘a, afirmat ¸ia va rezulta
dac˘a dovedim c˘a G
t
satisface (T).
Fie S ⊆ C
i
− v
i
. Dac˘a q(G
t
− S) > [S[ atunci
cum q(G
t
− S) + [S[ ≡ 0 (mod 2), rezult˘a c˘a
q(G
t
− S) ≥ [S[ + 2 ¸si atunci considerˆınd S
t
=
S
0
∪ ¡v
i
¦ ∪ S, avem [S
t
[ ≥ q(G − S
t
) = q(G −
S
0
) − 1 + q(G
t
− S) = [S
0
[ − 1 + q(G
t
− S) ≥
[S
0
[ − 1 +[S[ + 2 = [S
t
[, adic˘a q(G − S
t
) = [S
t
[
ceea ce contrazice alegerea lui S
0
c˘aci S
0
⊂ S
t
.
Rezult˘a c˘a ∀S
t
⊆ C
i
−v
i
q(G
t
−S) ≤ [S[ deci G
t
are un cuplaj perfect.
200
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 demonstrat˘a.
Not˘am c˘a Berge (1958) a generalizat aceast˘a
teorem˘a stabilind c˘a
ν(G) =
1
2
([V (G)[ −max
S⊆V (G)
[q(G−S)−[S[] ).
Totu¸si, algoritmii care rezolv˘a problema (P1)
se bazeaz˘a pe o caracterizare mai simpl˘a a cu-
plajelor de cardinal maxim.
Fie G = (V, E) un graf ¸si M ∈ /
G
un cuplaj al
s˘au.
Definit ¸ie: Se nume¸ste drum alternat al lui G
relativ la cuplajul M orice drum
P : v
0
, v
0
v
1
, v
1
, . . . , v
k−1
, v
k−1
v
k
, v
k
a. ˆı. ∀i = 1, k −1 ¡v
i−1
v
i
, v
i
v
i+1
¦ ∩ M ,= ∅.
201
S˘a observ˘am c˘a, ˆıntrucˆıt M este cuplaj, din
definit ¸ia dat˘a rezult˘a c˘a dintre orice dou˘a
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 urmeaz˘a, prin P
mult ¸imea muchiilor drumului P (pentru simpli-
ficarea notat ¸iilor).
Definit ¸ie: Se nume¸ste drum de cre¸stere al lui
G relativ la cuplajul M un drum alternat cu
extremit˘at ¸ile vˆırfuri 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
202
Observat ¸ie: Din definit ¸ie, rezult˘a c˘a dac˘a P
este un drum de cre¸stere relativ la cuplajul M
atunci [P −M[ = [P ∩ M[ +1.
Teorem˘a. 6. (Berge 1959) Un cuplaj M
este de cardinal maximˆın graful G dac˘a ¸si nu-
mai dac˘a nu exist˘a ˆın G drumuri de cre¸stere
relativ la M.
Demonstrat ¸ie: Dac˘a M este un cuplaj de car-
dinal maxim ¸si P ar fi un drum de cre¸stere
ˆın G relativ la M atunci M
t
= P∆M = (P −
M)∪(M−P) este un cuplaj ˆın G. (Construct ¸ia
lui P∆M revine la interschimbarea muchiilor
lui M − P ¸si P − M pe drumul P).
ˆ
In plus,
[M
t
[ = [P ∩ M[ + 1 +[M − P[ = [M[ + 1, con-
trazicˆınd 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)
203
Reciproc, dac˘a M este cuplaj ˆın G ¸si M nu
admite drumuri de cre¸stere, consider˘am M

un
cuplaj de cardinal maxim. Vom ar˘ata c˘a [M

[ =
[M[, ceea ce demonstreaz˘a teorema.
Fie G
t
graful part ¸ial al lui G, G
t
= (V, M∆M

).
Evident, d
G
t(v) ≤ 2 ∀v ∈ V ¸si deci componen-
tele conexe ale lui G
t
sˆınt drumuri (eventual de
lungime 0), sau circuite ¸si avem urm˘atoarele
posibilit˘at ¸i (muchiile ˆıngro¸sate sˆınt din M

¸si
cele subt ¸iri, din M):
a
b
c
d
e
Situat ¸ia b) nu poate avea loc, pentru c˘a reprezint˘a un
drum de cre¸stere relativ la M

care-i cuplaj de cardinal
maxim. Situat ¸ia c) nu are loc, ˆıntrucˆıt M nu admite
drumuri de cre¸stere.
204
Deci, dac˘a not˘am cu m
M
(C) num˘arul muchi-
ilor din M ale componentei conexe C a lui G
t
¸si
cu m
M
∗(C) num˘arul corespunz˘ator, de muchii
din M

avem m
M
(C) = m
M
∗(C). Rezult˘a c˘a
[M−M

[ =

C
m
C
(M) =

C
m
C
(M

) = [M

−M[
(suma se face dup˘a toate componentele conexe
C ale grafului G
t
) ¸si deci, [M[ = [M

[.
Aceast˘a teorem˘a justific˘a urm
˘
toarea strategie
de construire a unui cuplaj de cardinal maxim:
a) fie M un cuplaj oarecare a lui G (eventual M = ∅);
b) while ∃P drum de cre¸stere relativ la M do
M ←M∆P
La fiecare iterat ¸ie a ciclului while, cuplajul curent ”cre¸ste”
(cardinalul s˘au se m˘are¸ste 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 cre¸stere.
205
Neajunsul acestui algoritm este acela c˘a tes-
tul de oprire a ciclului - inexistent ¸a drumu-
lui de cre¸stere - poate conduce la un num˘ar
exponent ¸ial de operat ¸ii.
Primul care a demonstrat posibilitatea imple-
ment˘arii acestui algoritm astfel ˆıncˆıt num˘arul
total de operat ¸ii s˘a fie polinomial ˆın raport cu
num˘arul de vˆırfuri ale grafului G, a fost Ed-
monds (1965), obt ¸inˆınd astfel unul din primele
rezultate ale teoriei complexit˘at ¸ii (cantitative)
a algoritmilor.
ˆ
In 1973 Hopcroft ¸si Karp, fac o analiz˘a mai
detaliat˘a a procesului succesiv de cre¸steri ale
cuplajului curent, cu ipoteza suplimentar˘a c˘a
se alege de fiecare dat˘a un drum de cre¸stere
cu num˘ar minim de muchii (printre toate
drumurile de cre¸stere posibile). Aceast˘a idee
st˘a la baza celui mai eficient algoritm, cunos-
cut, pentru rezolvarea problemei.
206
Lem˘a. 1. Fie M, N ∈ /
G
, [M[ = r, [N[ = s
¸si s > r. Atunci ˆın M∆N exist˘a cel put ¸in s −r
drumuri de cre¸stere ale cuplajului M, disjuncte
ca vˆırfuri.
Demonstrat ¸ie: Fie G
t
= (V, M∆N) graful part ¸ial
sect ¸ionat ˆın G de M∆N.
Fie C
i
i = 1, p componentele conexe ale lui G
t
.
Definim pentru fiecare i ∈ ¡1, . . . , p¦
δ(C
i
) = [E(C
i
) ∩ N[ −[E(C
i
) ∩ M[.
Observ˘am c˘a:
δ(C
i
) ∈ ¡−1, 0, 1¦ (M, N cuplaje, ⇒ C
i
sˆınt dru-
muri sau circuite);
δ(C
i
) = 1 dac˘a ¸si numai dac˘a C
i
este un drum
de cre¸stere relativ la M.
ˆ
In plus,

i=1,p
δ(C
i
) = [N −M[ −[M −N[ = s −r.
Rezult˘a c˘a exist˘a m˘acar s −r C
i
cu δ(C
i
) = 1,
adic˘a exist˘a m˘acar s−r drumuri de cre¸stere dis-
juncte ca vˆırfuri (deci ¸si ca muchii) cont ¸inute
ˆın M∆N.
207
Lem˘a. 2. Dac˘a ν(G) = s ¸si M ∈ /
G
[M[ =
r < s, atunci exist˘a ˆın G un drum de cre¸stere
relativ la M de lungime ≤ 2]r/(s −r)| +1.
Demonstrat ¸ie. Fie N ∈ /
G
cu [N[ = s =
ν(G). Conform lemei precedente, vor exista
s − r drumuri de cre¸stere disjuncte pe muchii,
cont ¸inute ˆın M∆N. Acestea au ˆımpreun˘a cel
mult r muchii din M. Rezult˘a c˘a exist˘a unul
care cont ¸ine cel mult ]r/(s −r)| muchii din M,
a c˘arui lungime este deci ≤ 2]r/(s −r)| +1.
Definit ¸ie Dac˘a M ∈ /
G
, se nume¸ste drum
minim de cre¸stere al lui M ˆın G , un drum
de cre¸stere cu num˘ar minim de muchii printre
toate drumurile de cre¸stere ale lui M ˆın G.
Lem˘a. 3. Fie M ∈ /
G
, P drum minim de
cre¸stere relativ la M, ¸si P
t
drum de cre¸stere al
lui M∆P. Atunci, [P
t
[ ≥ [P[ +2[P ∩ P
t
[.
208
Demonstrat ¸ie: Fie N = (M∆P)∆P
t
.
Avem M∆N = P∆P
t
¸si [N[ = [M[ +2.
Folosind lema 1 obt ¸inem c˘a exist˘a P
1
, P
2
dru-
muri de cre¸stere disjuncte ca muchii relativ
la M cont ¸inute ˆın M∆N. Cum P este drum
minim de cre¸stere avem: [P∆P
t
[ ≥ [P
1
[+[P
2
[ ≥
2[P[ deci [P[ +[P
t
[ −2[P ∩ P
t
[ ≥ 2[P[.
Consider˘am urm˘atorul algoritm (∗):
M
0
←∅;
M
i+1
←M
i
∆P
i
( P
i
dr. minim de cre¸st. rel. la M
i
; i ≥ 0.)
Se obt ¸ine ¸sirul de drumuri minime de cre¸stere
P
0
, P
1
, . . . , P
ν(G)−1
.
Lem˘a. 4.
a) ∀i = 1, ν(G) −2 [P
i
[ ≤ [P
i+1
[;
[P
i
[ = [P
i+1
[ ⇔ P
i
¸si P
i+1
sˆınt disjuncte ca
vˆırfuri.
b) ∀i < j < ν(G) −1 [P
i
[ = [P
j
[, implic˘a P
i
¸si
P
j
sˆınt disjuncte ca vˆırfuri.
209
Demonstrt ¸ie: a) Considerˆınd P = P
i
¸si P
t
=
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 dac˘a ¸si nu-
mai dac˘a P
i
¸si P
i+1
sˆınt disjuncte ca muchii,
condit ¸ie care, avˆınd ˆın vedere alternant ¸a dru-
murilor, implic˘a faptul c˘a nu au vˆırfuri comune.
b) rezult˘a aplicˆınd succesiv a).
Teorem˘a. 7. (Hopcroft, Karp 1973) Fie
G un graf ¸si ν(G) = s. Num˘arul ˆıntregilor
distinct ¸i din ¸sirul [P
0
[, [P
1
[, . . . , [P
s−1
[, 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
[ ≤ 2]r/(s − r)| + 1 = 2]]s −

s|/(s −
]s −

s|)| +1 < 2¸

s | +1.
Rezult˘a c˘a oricare ar fi i < r, [P
i
[ este unul din
cei ¸

s | + 1 ˆıntregi impari ≤ 2¸

s | + 1.
ˆ
In
sub¸sirul [P
r
[, . . . , [P
s−1
[ mai sˆınt cel mult s−r ≤
¸

s | + 1 ˆıntregi distinct ¸i, deci ˆın total avem
cel mult 2¸

s | +2 ˆıntregi distinct ¸i.
210
Dac˘a algoritmul (∗) se descompune ˆın etape,
astfel ˆıncˆıt la fiecare etap˘a se determin˘a o
mult ¸ime maximal˘a de drumuri minime de cre¸stere
disjuncte ca vˆırfuri, din lema 4, rezult˘a c˘a, ˆın
etapa urm˘atoare, lungimea drumurilor minime
de cre¸stere utilizate va cre¸ste strict (altfel s-
ar contrzice maximalitatea mult ¸imii de drumuri
alese).
Utilizˆınd teorema 7, rezult˘a c˘a num˘arul fazelor
nu va dep˘a¸si 2¸
_
ν(G)| +2.
Rezult˘a c˘a urm˘atorul algoritm pentru aflarea
unui cuplaj maxim, ˆıntr-un graf cu m˘acar o
muchie:
0. M ←∅;
1. repeat
Determin˘a 1 o familie maximal˘a (⊆)
de drumuri minime de cre¸stere;
for P ∈ 1 do M ← M∆P
until 1 = ∅.
211
are complexitatea O(

nA) unde A este com-
plexitatea determin˘arii familiei 1.
Hopcroft ¸si Karp au ar˘atat cum se poate im-
plementa pasul 1 pentru un graf bipartit, astfel
ˆıncˆıt A = O(m + n), deci s-a obt ¸inut un algo-
ritm de complexitate O(mn
1/2
) pentru aflarea
unui cuplaj de cardinal maxim ˆıntr-un graf bi-
partit.
Pentru un graf oarecare, structurile de date
necesare obt ¸inerii aceleea¸si complexit˘at ¸i sˆınt
mult mai elaborate ¸si au fost descrise de Micali
¸si Vazirani 1980. Consider˘am, ˆı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
consider˘a mult ¸imea extremit˘at ¸ilor drumurilor
de cre¸stere posibile, R ∩ E(M), ¸si din fiecare
astfel de vˆırf, se incepe construct ¸ia ˆın paralel,
de drumuri alternate.
212
Prima depistare a unui drum de cre¸stere (sau, concluzia
de inexistent ¸˘a) opre¸ste construct ¸ia, oferind lungimea
minim˘a a unui drum de cre¸stere, ¸si un sistem evident
de etichetare va permite depistarea familiei 1. Com-
plexitatea O(m + n) rezult˘a 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
213
V. FLUXURI
ˆ
IN RET¸ ELE
1. Problema fluxului 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
ie¸sirea 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 c˘a
V = ¡1, 2, . . . , n¦ (n ∈ N

) ¸si c˘a [E[ = m.
Extindem funct ¸ia c la c : V V →R
+
prin
c((i, j)) =



c(ij) dac˘a ij ∈ E
0 dac˘a ij / ∈ E
¸si vom nota c((i, j)) = c
ij
.
214
Definit ¸ie: Numim fluxˆın 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)

j∈V
x
ji

j∈V
x
ij
= 0 ∀i ∈ V −¡s, t¦.
Observat ¸ii
1
0
Dac˘a ij ∈ E atunci x
ij
se nume¸ste fluxul
(transportat)pe arcul ij.
Evident, condit ¸ia (i) cere ca fluxul pe orice
arc s˘a fie nenegativ ¸si subcapacitar, iar condit ¸ia
(ii) (legea de conservare a fluxului) cere ca
suma fluxurilor pe arcele care intr˘aˆın vˆırful
i s˘a fie egal˘a cu suma fluxurilor pe arcele
care ies din vˆırful i.
Se putea cere ca fluxul s˘a fie definit numai pe arcele
ret ¸elei, dar cu convent ¸ia f˘acut˘a la extensia funct ¸iei de
capacitate, se observ˘a c˘a pentru perechile (i, j) care nu
sˆınt arce ˆın ret ¸ea condit ¸ia (i) impune ca fluxul s˘a fie 0,
¸si evident cele dou˘a definit ¸ii sˆınt echivalente.
O prefer˘am pe cea dat˘a, pentru simplitatea notat ¸iilor,
de¸si ˆın implement˘ari, structurile de date folosite vor ig-
nora perechile (i, j) care nu sˆınt arce ˆın ret ¸ea.
215
2
0
Dac˘a se sumeaz˘a relat ¸iile (ii) (pentru i ∈
V −¡s, t¦) se obt ¸ine:
0 =

i,=s,t
_

j∈V
x
ji

j∈V
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
_
, adic˘a

j∈V
x
jt

j∈V
x
tj
= −
_

j∈V
x
js

j∈V
x
sj
_
.
Definit ¸ie: Dac˘a x este un flux ˆın ret ¸eaua R =
(G, s, t, c) se nume¸ste valoarea fluxului x num˘arul
v(x) =

j∈V
x
jt

j∈V
x
tj
.
v(x) se poate interpreta ca fiind fluxul net care
ajunge ˆın ie¸sirea ret ¸elei sau (conform egalit˘at ¸ii
obt ¸inute mai sus) fluxul net care iese din in-
trarea ret ¸elei.
216
ˆ
In orice ret ¸ea R = (G, s, t, c) exist˘a un flux,
fluxul nul x
ij
= 0 ∀ij, de valoare 0.
Problema fluxului maxim:
Dat˘a R = (G, s, t, c) o ret ¸ea, s˘a se determine
un flux de valoare maxim˘a.
Observat ¸ii: 1
0
. Problema se poate formula,
evident, ca o problem˘a de programare liniar˘a:
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
Particularit˘at ¸ile combinatorii ale problemei, num˘arul mare
de restrict ¸ii ¸si mai ales dificult˘at ¸ile legate de restrict ¸iile
de integritate ce s-ar putea impune variabilelor, care un-
eori ˆın practic˘a sˆınt esent ¸iale, au condus la dezvoltarea
de metode specifice de rezolvare.
217
Definit ¸ie. Dac˘a 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:
dac˘a e corespunde arcului v
i
v
j
al lui G, e se
nume¸ste arc direct al drumului P;
dac˘a e corespunde arcului v
j
v
i
al lui G, atunci
e se nume¸ste arc invers.
P
G
G
--
arc direct
arc invers
Definit ¸ie. Fie R = (G, s, t, c) ¸si x flux ˆın R.
Se nume¸ste C-drum (ˆın R relativ la fluxul x)
un drum Dˆın G cu proprietatea c˘a ∀ij ∈ E(D) :
x
ij
< c
ij
dac˘a ij este arc direct,
x
ji
> 0 dac˘a ij este arc invers.
218
Dac˘a D este un C-drum¸si ij ∈ E(D), se nume¸ste
capacitatea rezidual˘a a lui ij (relativ la C-
drumul D) num˘arul
r(ij) =



c
ij
−x
ij
dac˘a ij arc direct ˆın D
x
ji
dac˘a ij arc invers ˆın D .
Capacitatea rezidual˘a a drumului D este
r(D) = min
e∈E(D)
r(e).
Exemplu: Fie ret ¸eaua de mai jos, ˆın care pe arce este
precizat˘a mai ˆıntˆıi capacitatea ¸si apoi fluxul:
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 rezidual˘a a lui D este
r(D) = min(min(2, 1, 1), 1) = 1.
219
Definit ¸ie. Se nume¸ste drum de cre¸stere a
fluxului x, ˆın ret ¸eaua R = (G, s, t, c), un C-drum
de la s la t.
Lem˘a. 1. Dac˘a D este un drum de cre¸stere
a fluxului x ˆın ret ¸eaua R = (G, s, t, c), atunci
x
1
= x

r(D) definit prin
x
1
ij
=







x
ij
dac˘a ij / ∈ E(D)
x
ij
+r(D) dac˘a ij ∈ E(D), ij arc direct ˆın D
x
ij
−r(D) dac˘a ji ∈ E(D), ji arc invers ˆın D
este flux ˆın R ¸si v(x
1
) = v(x) +r(D).
Demonstrat ¸ie. Definit ¸ia lui r(D) implic˘a
ˆındeplinirea de c˘atre x
1
, a condit ¸iilor (i).
Condit ¸iile (ii) verificate de x, nu sˆınt afectate
pentru niciun vˆırf i / ∈ V (D).
Dac˘a i ,= s, t este un vˆırf al drumului D, i este
incident cu exact dou˘a arce ale lui D,fie ele li
¸si ik.
Avem urm˘atoarele cazuri posibile:
220
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 fluxului x
1
se obt ¸ine considerˆınd lt
unicul arc al lui D incident cu t:
Dac˘a 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.
221
Pentru exemplul anterior, fluxul 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
Aceast˘a lem˘a justific˘a denu-
mirea de drum de cre¸stere, precum ¸si cea de
capacitate rezidual˘a.
2
0
Din definit ¸ie, dac˘a D este drum de cre¸stere,
r(D) > 0 ¸si deci avem v(x

r(D)) > v(x).
Rezult˘a c˘a
dac˘a x admite un drum de cre¸stere atunci
x nu este flux de valoare maxim˘a.
222
Pentru a demonstra c˘a si reciproc este adev˘arat
avem nevoie de o nou˘a not ¸iune.
Definit ¸ie. Fie R = (G, s, t, c). Se nume¸ste
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) =

i∈S

j∈T
c
ij
(suma capacit˘at ¸ilor arcelor de la S la T).
Lem˘a. 2. Daca x este un fluxˆın R = (G, s, t, c)
¸si (S, T) este o sect ¸iune a ret ¸elei, atunci
v(x) =

i∈S

j∈T
(x
ij
−x
ji
).
(valoarea fluxului este egal˘a cu fluxul net ce
trece prin orice sect ¸iune.)
s
t
+
-
S
T
223
Demonstrat ¸ie:
v(x) = (

j
x
jt

j
x
tj
) −0
= −(

j
x
js

j
x
sj
)−

i∈S,i,=s
(

j
x
ji

j
x
ij
)
=

i∈S
(

j
x
ij

j
x
ji
)
=

i∈S

j∈S
(x
ij
−x
ji
)+

i∈S

j∈T
(x
ij
−x
ji
)
=

i∈S

j∈T
(x
ij
−x
ji
).
Lem˘a. 3. Dac˘a x este un fluxˆın R = (G, s, t, c)
¸si (S, T) este o sect ¸iune, atunci v(x) ≤ c(S, T).
Demonstrat ¸ie:
v(x) =

i∈S

j∈T
(x
ij
−x
ji
) (lema 2)


i∈S

j∈T
(c
ij
−x
ji
) (x
ij
≤ c
ij
)


i∈S

j∈T
c
ij
(x
ji
≥ 0).
224
Observat ¸ii:
1) Dac˘a x este un fluxˆın R = (G, s, t, c) ¸si (S, T)
o sect ¸iune astfel ˆıncˆıt v(x) = c(S, T), atunci ∀x
flux ˆın R v(x) ≤ c(S, T) = v(x), deci x este flux
de valoare maxim˘a.
2)
ˆ
In exemplul dat, x
1
este flux de valoare
maxim˘aˆıntrucˆıt v(x
1
) = 4 = c(¡1, 2, 3¦, ¡4, 5, 6¦).
Teorem˘a. 1. (Teorema drumului de cre¸stere)
Un flux x este de valoare maxim˘a ˆıntr-o ret ¸ea
R, dac˘a ¸si numai dac˘a, nu exist˘a drumuri de
cre¸stere a fluxului x ˆın ret ¸eaua R.
Demonstrat ¸ie: O implicat ¸ie este deja stabilit˘a.
Reciproc, fie x un flux ˆın R care nu admite
drumuri de cre¸stere. Consider˘am S = ¡i [ i ∈
V ∧ ∃ D C-drum ˆın R de la s la i¦.
Evident s ∈ S (exist˘a D de lungime 0) ¸si t / ∈ S
(nu exist˘a C-drumuri de la s la t). Fie T =
V −S. Rezult˘a c˘a (S,T) este o sect ¸iune.
225
S˘a observ˘am c˘a ∀i ∈ S ¸si ∀j ∈ T avem:
dac˘a ij ∈ E atunci x
ij
= c
ij
¸si
dac˘a 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) =

i∈S

j∈T
(x
ij

x
ji
) =

i∈S

j∈T
(c
ij
− 0) = c(S, T) ¸si prin ur-
mare x este flux de valoare maxim˘a.
Teorem˘a. 2. (Teorema fluxului intreg)
Dac˘a toate capacit˘at ¸ile sˆınt ˆıntregi, atunci ex-
ist˘a un flux de valoare maxim˘a cu toate compo-
nenteleˆıntregi (fluxˆıntreg de valoare maxim˘a).
Demonstrat ¸ie: Fie algoritmul
1: x
0
←0; i ← 0;
2: while (∃P
i
drum de cre¸stere relativ la x
i
) do
¡ x
i+1
← x
i

r(P
i
);
i ++
¦
226
Se observ˘a c˘a ”x
i
are componente ˆıntregi”
este un invariant al algoritmului (din definit ¸ia
lui r(P
i
), dac˘a toate capacit˘at ¸ile sˆınt ˆıntregi,
rezult˘a c˘a r(P
i
) este ˆıntreg ˆın ipoteza c˘a x
i
e
ˆıntreg) ¸si c˘a la fiecare iterat ¸ie a pasului 2 val-
oarea fluxului curent cre¸ste cu m˘acar o unitate,
deci pasul 2 se repet˘a de cel mult c(¡s¦, V −
¡s¦) ∈ Z
+
ori. Fluxul final obt ¸inut este, con-
form teoremei 1, de valoare maxim˘a.
Observat ¸ie. Algoritmul, descris mai sus, este
finit ¸si ˆın cazul capacit˘at ¸ilor rat ¸ionale.
Teorem˘a. 3. ( Ford-Fulkerson, 1956)
Valoarea maxim˘a a unui flux ˆın ret ¸eaua R =
(G, s, t, c) este egal˘a cu capacitatea minim˘a a
unei sect ¸iuni a ret ¸elei.
Demonstrat ¸ie: Dac˘a dispunem de un algoritm
care, pornind de la un flux init ¸ial x
0
(x
0
exist˘a
ˆıntotdeauna, de exemplu x
0
= 0), construie¸ste
ˆıntr-un num˘ar finit de pa¸si un flux x, care nu
admite drumuri de cre¸stere, atunci sect ¸iunea
construit˘aˆın demonstrat ¸ia teoremei 1 satisface
ˆımpreun˘a cu x enunt ¸ul teoremei.
227
Pentru cazul capacit˘at ¸ilor rat ¸ionale algoritmul
descris ˆın demonstrat ¸ia teoremei 2, satisface
aceast˘a condit ¸ie.
Pentru cazul capacit˘at ¸ilor reale vom prezenta,
mai tˆırziu, un astfel de algoritm, datorat lui
Edmonds ¸si Karp (1972).
Observat ¸ii: i)
ˆ
I n demonstrat ¸ia teoremei 3 avem
nevoie de fapt, doar s˘a ar˘at˘am c˘a exist˘a un
flux x de valoare maxim˘a ¸si apoi s˘a-i aplic˘am
construct ¸ia din demonstrat ¸ia teoremei 1;
existent ¸a fluxului x maxim rezult˘a imediat, con-
siderˆınd transcrierea problemei fluxului maxim
ca o problem˘a de programare liniar˘a; am preferat
demonstrat ¸ia de mai sus care (de¸si va fi com-
pletat˘a abia dup˘a analiza algoritmului lui Edmonds-
Karp) este constructiv˘a.
ii) Important ¸a algoritmic˘a a teoremei 3 este ev-
ident˘a: mult ¸imea sect ¸iunilor ret ¸elei este finit˘a,
pe cˆınd mult ¸imea fluxurilor din ret ¸ea este in-
finit˘a.
228
Algoritmul lui Ford ¸si Fulkerson pentru aflarea
unui flux de valoare maxim˘a
Se va folosi un procedeu de etichetare a vˆırfurilor
ret ¸elei, ˆın vederea depist˘arii drumurilor de cre¸stere
a fluxului curent x. Dac˘a nu exist˘a drumuri de
cre¸stere, fluxul va fi de valoare maxim˘a.
Eticheta atribuit˘a unui vˆırf 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
semnificat ¸ie:
- dac˘a 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
;
- dac˘a 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 eticheteaz˘a sursa s cu eticheta (0, ., ∞).
Celelalte vˆırfuri primesc etichet˘a prin
”cercetarea” vˆırfurilor deja etichetate:
229
Dac˘a i este un vˆırf etichetat, atunci ∀j ∈ V
Dac˘a j neetichetat, ij ∈ E ¸si x
ij
< c
ij
atunci
j se etichet. e = (i, direct, min(e
3
[i], c
ij
−x
ij
));
Dac˘a 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 respect˘a semnificat ¸ia
celor trei componente ale etichetelor.
Numim aceast˘a procedur˘a etichetare(i).
Atunci cˆındˆın procedura de etichetare s-a atribuit
etichet˘a vˆırfului t, s-a obt ¸inut un drum de cre¸stere
P a fluxului curent, de capacitate rezidual˘a
r(P) = e
3
[t] ¸si ale c˘arui vˆırfuri se depisteaz˘a ˆın
O(n) explorˆınd prima component˘a a etichetelor.
Modificarea fluxului x

r(P) se execut˘aˆın acest
mers ˆınapoi, tot ˆın O(n).
Pentru noul flux se reia procedura de etichetare.
230
Dac˘a toate vˆırfurile etichetate au fost cercetate ¸si nu s-
a reu¸sit etichetarea vˆırfului t, rezult˘a c˘a fluxul curent
nu admite drumuri de cre¸stere, este deci de valoare
maxim˘a, iar dac˘a S = mult ¸imea vˆırfurilor etichetate
atunci (S, V −S) este o sect ¸iune de capacitate minim˘a.
Descrierea algoritmului
1: Se alege x = (x
ij
) flux init ¸ial (de ex. fluxul nul);
Se eticheteaz˘a s cu (0, ., ∞)
2: while (∃ vˆırfuri etichetate necercetate) do
¡ ”alege” un vˆırf etichetat ¸si necercetat i;
etichetare(i);
if (t a primit etichet˘a) then
¡ modific˘a fluxul pe drumul dat de etichete;
¸sterge toate etichetele;
eticheteaz˘a s cu (0, ., ∞)
¦
¦
3: S ←¡i[i ∈ V, i are etichet˘a¦
T ← V −S
x este flux de valoare maxim˘a
(S, T) este sect ¸iune de capacitate minim˘a.
231
Complexitatea algoritmului:
Pentru fiecare cre¸stere a fluxului, sˆınt necesare
cel mult 2m(m = [E[) inspect ¸ii de arce ˆın ved-
erea etichet˘arii.
Dac˘a toate capacit˘at ¸ile sˆınt ˆıntregi atunci vor
fi necesare cel mult v (v = valoarea fluxului
maxim) cre¸steri succesive. Rezult˘a c˘a algorit-
mul are complexitatea O(mv).
Dac˘a U este o margine superioar˘a a capacit˘at ¸ilor
arcelor atunci v ≤ (n − 1)U ((n − 1)U este o
margine superioar˘a a capacit˘at ¸ii sect ¸iunii (¡s¦, V −
¡s¦)), deci algoritmul are complexitatea O(nmU).
Observat ¸ii. 1
0
. Dezavantajele algoritmului sˆınt
legate de neconvergent ¸a ˆın cazul capacit˘at ¸ilor
irat ¸ionale (de¸si practic, ˆın implement˘ari nu este
cazul), ¸si de faptul ca m˘arimile capacit˘at ¸ilor
influent ¸eaz˘a comportarea sa, acestea neconsti-
tuind o m˘asur˘a a volumului datelor de intrare.
Exemplu:
232
s
t
1
2
3
4
M,0
M,0
M,0
M,0
1,0
1
1
P
P
1
2
Dac˘a ”alegerea”, din pasul 2 al algoritmului,
face ca drumurile de cre¸stere succesive (pornind
de la fluxul nul) s˘a fie P
1
, P
2
, P
1
, P
2
, . . . unde
P
1
= 1, 2, 3, 4, P
2
= 1, 3, 2, 4 atunci, fiecare
cre¸stere a fluxului m˘are¸ste cu 1 valoarea fluxu-
lui curent ¸si, deci, vor fi necesare 2M cre¸steri,
ceea ce este inadmisibil pentru M ∈ Z
+
foarte
mari.
2
0
. Aceste dezavantaje pot fi evitate dac˘a
alegerile vˆırfurilor etichetate supuse cercet˘arii
se fac judicios. Primii care au observat acest
fenomen, au fost Dinic(1970) ¸si independent,
Edmonds ¸si Karp (1972).
233
Modificarea lui Edmonds ¸si Karp a algorit-
mului lui Ford & Fulkerson
Numim drum minim de cre¸stere a fluxului x
ˆın ret ¸eaua R, un drum de cre¸stere de lungime
minim˘a printre toate drumurile de cre¸stere.
Fie x un flux oarecare ˆın ret ¸eaua R. Definim
¸sirul de fluxuri x
k
ˆın R astfel:
x
0
←x;
x
k
←x
k−1

r(P
k−1
), P
k
este drum minim de cre¸stere
relativ la x
k−1
; k = 1, 2, . . .
Vom dovedi c˘a ¸sirul de fluxuri astfel construit
este finit.
Not˘am, pentru ∀i ∈ V ¸si ∀k = 0, 1, 2, . . .
σ
k
i
= lungimea minim˘a a unui C-drum de la s la i ˆın R
relativ la fluxul x
k
.
τ
k
i
= lungimea minim˘a a unui C-drum de la i la t ˆın R
relativ la fluxul x
k
.
234
Lem˘a. 4. Pentru ∀i ∈ V ¸si ∀k = 0, 1, 2, . . .
avem
σ
k+1
i
≥ σ
k
i
¸si τ
k+1
i
≥ τ
k
i
.
Teorem˘a. 4. (Edmonds, Karp)
Dac˘a x = x
0
este un flux oarecare ˆın ret ¸eaua
R, atunci ¸sirul de fluxuri x
1
, x
2
, . . . obt ¸inut din
x
0
prin cre¸steri succesive pe drumuri minime
de cre¸stere, are cel mult
mn
2
elemente (ˆın cel
mult
mn
2
cre¸steri succesive, se obt ¸ine un flux
care nu admite drumuri de cre¸stere).
Demonstrat ¸ie: Dac˘a P este un drum de cre¸stere
relativ la un flux ˆın ret ¸eaua R, cu capacitatea
rezidual˘a r(P), vom numi arc critic ˆın P orice
arc e ∈ P cu r(e) = r(P).
ˆ
In x

r(P), fluxul pe arcele critice devine sau
egal cu capacitatea (pentru arcele directe) sau
egal cu 0 (pentru arcele inverse).
235
Fie ij un arc critic pe drumul minim de cre¸stere
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
fi folosit ˆın aceea¸si direct ¸ie ca ˆın P
k
. Prima
oar˘a cˆınd fluxul pe arcul ij se va modifica, el
va apare ˆıntr-un drum de cre¸stere P
l
cu l > k
relativ la x
l
¸si va fi folosit ˆın direct ¸ie opus˘a.
Avem, deci, dou˘a cazuri:
i) ij direct ˆın P
k
. Atunci σ
k
j
= σ
k
i
+1.
ˆ
In P
l
ij
va fi arc invers, deci σ
l
i
= σ
l
j
+1.
s t
i j
P
k
s
t i
j
P
l
Rezult˘a, σ
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
c˘a lg(P
l
) ≥ lg(P
k
) +2.
236
ii) ij arc invers ˆın P
k
. Atunci σ
k
i
= σ
k
j
+1.
ˆ
In
P
l
ij va fi arc direct, deci σ
l
j
= σ
l
i
+1.
s t i
j
P
k
s
t
i
j
P
l
Rezult˘a σ
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 cre¸stere ˆın care
arcul ij este critic este cu m˘acar dou˘a arce
mai lung decˆıt precedentul ˆın care ij a fost
critic.
Cum, un drum ˆın G are cel mult n − 1 arce,
rezult˘a c˘a un arc fixat nu poate fi critic ˆın pro-
cesul de cre¸stere mai mult de
n
2
ori.
Cum orice drum de cre¸stere are cel put ¸in un
arc critic, rezult˘a c˘a nu putem avea mai mult
de
mn
2
drumuri minime de cre¸stere, ˆın ¸sirul
construit. Deci, dup˘a cel mult mn/2 cre¸steri,
se obt ¸ine un flux care nu admite drumuri de
cre¸stere.
237
Corolar. Dac˘a R = (G, s, t, c) este o ret ¸ea,
atunci exist˘a un flux care nu admite drumuri
de cre¸stere.
Observat ¸ii: 1
0
Rezult˘a de aici, c˘a demonstrat ¸ia
teoremei 3 este complet˘a.
2
0
S-ar putea pune ˆıntrebarea dac˘a nu cumva,
alegerea drumurilor minime de cre¸stere, m˘are¸ste
complexitatea algoritmului de flux maxim ?
R˘aspunsul este ˆıns˘a banal:
Lem˘a. 5. Dac˘a, ˆın pasul 2 al algoritmului lui
Ford ¸si Fulkerson, alegerea vˆırfurilor etichetate
ˆın vederea cercet˘arii se face dup˘a regula ”primul
etichetat - primul cercetat”, atunci drumurile
de cre¸stere care se depisteaz˘a sˆınt cu num˘ar
minim de arce.
Demonstrat ¸ie: Fie P un drum de cre¸stere depi-
stat ¸si fie P
t
un drum minim de cre¸stere. Pre-
supunem c˘a lg(P) > lg(P
t
).
238
Fie
P : si
1
, i
1
i
2
, . . . , i
k−1
i
k
, i
k
i
k+1
, i
k+1
i
k+2
, . . . , i
k+l−1
t ¸si
P
t
: si
1
, i
1
i
2
, . . . , i
k−1
i
k
, i
k
j
k+1
, j
k+1
j
k+2
, . . . , j
k+l
t
−1
t.
Deci, lg(P) = k +l, lg(P
t
) = k +l
t
, au primele
k arce comune ¸si l
t
< l.
Conform regulii de etichetare, i
k+1
va primi
etichet˘a ˆınaintea lui j
k+1
, dar j
k+1
va primi
etichet˘aˆınaintea lui i
k+2
; j
k+2
va primi etichet˘a
ˆınaintea lui i
k+3
¸si a¸sa mai departe; obt ¸inem in-
ductiv c˘a t prime¸ste etichet˘aˆınaintea lui i
k+l
t
+1
,
deci t prime¸ste etichet˘a pe drumul P
t
, ˆınainte
de a primi etichet˘a pe drumul P, absurd.
Observat ¸ie: Regula ”primul etichetat - primul
cercetat” corespunde unei explor˘ari bfs a vˆır
furilor etichetate, ceea ce se poate realiza, uti-
lizˆınd o coad˘a pentru memorarea lor. Aceasta
nu afecteaz˘a complexitatea algoritmului, care
va necesita tot O(m) operat ¸ii pentru fiecare
cre¸stere a fluxului , ¸ si din teorema 4 obt ¸inem
239
Teorem˘a. 5. (Edmonds- Karp 1972)
Dac˘a se modific˘a algoritmul lui Ford ¸si Fulker-
son cu precizarea alegerii bfs a vˆırfurilor etichetate
ˆın vederea cercet˘arii, atunci, fluxul maxim se
obt ¸ine ˆın timpul O(m
2
n) .
Exercit ¸iu. Aplicat ¸i algoritmul lui Ford & Fulk-
erson modificat pentru obt ¸inerea unui flux de
valoare maxim˘a ˆın ret ¸eaua de mai jos (ˆın care
este precizat un flux init ¸ial de valoare 55 ).
240
Algoritmi de tip preflux.
Fie R = (G, s, t, c) o ret ¸ea.
Definit ¸ie. Se nume¸ste preflux ˆın ret ¸eaua R, o
funct ¸ie x : E → R astfel ˆıncˆıt
(i) 0 ≤ x
ij
≤ c
ij
∀ij ∈ E
(ii) ∀i ,= s e
i
=

j:ji∈E
x
ji

j:ij∈E
x
ij
≥ 0.
Num˘arul e
i
i ∈ V −¡s, t¦ se nume¸ste excesul
din vˆırful i.
Dac˘a i ∈ V −¡s, t¦ ¸si e
i
> 0 atunci i se nume¸ste
nod activ.
Dac˘a ij ∈ E x
ij
va fi numit fluxul pe arcul ij.
241
Observat ¸ii: 1
0
. Dac˘a ˆın ret ¸eaua R nu exist˘a
noduri active, atunci prefluxul x este flux de
la s la t ˆın R de valoare e
t
.
2
0
. Ideea algoritmulor de tip preflux este: se
porne¸ste cu un preflux ˆın R ¸si se transform˘a
prin modific˘ari ale fluxului pe arceˆıntr-un flux
care nu admite drumuri de cre¸stere.
3
0
.
ˆ
In definit ¸ia unui preflux, nu am mai utilizat
convent ¸ia c˘a vom introduce toate perechile de
arce din digraful complet simetric de ordin n,
ˆıntrucˆıt ˆın analiza algoritmilor pe care ˆıi vom
prezenta va fi esent ¸ial˘a reprezentarea digrafu-
lui G cu ajutorul listelor de adiacent ¸˘a. Totu¸si,
vom considera c˘a dac˘a ij ∈ E atunci ¸si
ji ∈ E (altminteri, ad˘aug˘am arcul ji cu ca-
pacitate 0).
242
Definit ¸ie: Dac˘a x este un prefluxˆın R ¸si ij ∈ E,
atunci capacitatea rezidual˘a a arcului ij este
r
ij
= c
ij
−x
ij
+x
ji
(reprezentˆınd fluxul adit ¸ional ce poate fi ”trimis”
de la nodul i la nodul j utilizˆınd 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 urmeaz˘a, a
”trimite” flux de la i la j ˆınseamn˘a s˘a cre¸stem
fluxul pe arcul ij sau s˘a mic¸sor˘am fluxul pe
arcul ji.
Definit ¸ie: Se nume¸ste C-drum ˆın R relativ la
prefluxul x, un drum al lui G ale c˘arui arce au
capacitatea rezidual˘a pozitiv˘a.
243
Definit ¸ie: Se nume¸ste funct ¸ie de distant ¸˘a ˆın R
relativ la prefluxul 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
. Dac˘a P este un C-drum relativ
la prefluxul xˆın R de la i la t atunci d(i) ≤ lg(P)
(arcele unui C-drum au capacitate rezidual˘a
pozitiv˘a ¸si se aplic˘a (D2)).
Rezult˘a c˘a d(i) ≤ τ
i
(lungimea minim˘a a unui
C-drum de la i la t).
244
2
0
. Vom nota cu A(i), pentru orice vˆırf i, lista
sa de adiacent ¸˘a, care cont ¸ine arcele ij ∈ E.
Definit ¸ie. Fie x un prefluxˆın R ¸si d o funct ¸ie de
distant ¸˘a relativ la x. Un arc ij ∈ E se nume¸ste
admisibil dac˘a
r
ij
> 0 ∧ d(i) = d(j) +1.
Dac˘a R este o ret ¸ea, consider˘am init ¸ializare
urm˘atoarea procedur˘a care construie¸steˆın O(m)
un preflux x ¸si o funct ¸ie de distant ¸˘a d core-
spunz˘atoare 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
¦
245
Observat ¸ii: 1
0
. Dup˘a execut ¸ia acestei proceduri,
∀sj ∈ A(s) avem r
sj
= 0, deci alegerea lui d(s) = n
nu afecteaz˘a condit ¸ia D2. Pentru arcele cu capacitate
rezidual˘a pozitiv˘a de forma js D2 este evident verificat˘a.
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 urm˘atoarea in-
terpretare:” nu exist˘a C-drum de la s la t ˆın
R relativ la x” (ˆıntrucˆıt, altminteri, ar trebui
ca lungimea acestuia s˘a fie ≥ n).
Dac˘a, ˆın algoritmii de tip preflux vom p˘astra
acest invariant, atunci cˆınd x va deveni flux,
va rezulta c˘a nu admite drumuri de cre¸stere ¸si
deci x va fi de valoare maxim˘a.
246
Consider˘am urm˘atoarele proceduri
procedure pompeaz˘a (i);
// i este un vˆarf diferit de s, t
¡
alege ij ∈ A(i) ij admisibil;
”trimite” δ = min(e
i
, r
ij
) unit˘at ¸i de flux de la i la j
¦
Dac˘a δ = r
ij
avem o pompare saturat˘a, alt-
minteri pomparea este nesaturat˘a.
procedure reetichetare (i);
// i este un vˆarf diferit de s, t
¡
d(i) ←min¡d(j) +1 [ ij ∈ A(i) ∧ r
ij
> 0¦
¦
247
Schema general˘a a unui algoritm de tip preflux
este:
¡
init ¸ializare;
while ∃ noduri active ˆın R do
¡ selecteaz˘a un nod activ i;
if ∃ arce admisibile ˆın A(i)
then pompeaz˘a(i)
else reetichetare(i)
¦
¦
Lem˘a. 6. Algoritmul de tip preflux, de
mai sus, are ca invariant ”d este funct ¸ie de
distant ¸˘a relativ la prefluxul x”. La fiecare
apel al lui reetichetare(i), d(i) cre¸ste strict.
Demonstrat ¸ie: Procedura init ¸ializare construie¸ste,
evident, o funct ¸ie de distant ¸˘a relativ la pre-
fluxul init ¸ial.
248
Dac˘aˆınaintea execut ¸iei unei iterat ¸ii a lui while,
d e funct ¸ie de distant ¸˘a relativ la prefluxul curent
x, atunci:
a) dac˘a se execut˘a 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.
Dup˘a pompare, arcul ji poate avea r
ji
> 0
(f˘ar˘a ca ˆınainte s˘a fi fost), dar condit ¸ia d(j) ≤
d(i) +1 este, evident, satisf˘acut˘a;
b) dac˘a se execut˘a reetichetare(i), modificarea
lui d(i) se face astfel ˆıncˆıt D2 s˘a r˘amˆın˘a vala-
bil˘a pentru orice arc ij cu r
ij
> 0. Cum apelul
lui reetichetare implic˘a d(i) < d(j) +1 ∀ij cu
r
ij
> 0, rezult˘a c˘a dup˘a apel d(i) cre¸ste m˘acar
cu o unitate.
Pentru finitudinea algoritmului va trebui s˘a ne
asigur˘am c˘a , dac˘a, ˆın timpul execut ¸iei, avem
un nod i activ, atunci ˆın A(i) exist˘a m˘acar un
arc ij cu r
ij
> 0. Aceasta rezult˘a din
Lem˘a. 7. Dac˘a pe parcursul algoritmului, i
0
este un nod activ, atunci exist˘a un C-drum de
la i
0
la s, ˆın R, relativ la prefluxul curent x.
249
Demonstrat ¸ie: Dac˘a x este un preflux ˆın R,
atunci x se poate scrie ca o sum˘a finit˘a x =
x
1
+x
2
+. . . +x
p
, unde fiecare 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 flux.
(demonstrat ¸ia rezult˘a algoritmic, construind mai ˆıntˆıi
mult ¸imile a), apoi a celor de tip c) ¸si b); la fiecare etap˘a
se caut˘a inversul unui drum de tipul a),b), sau c); pre-
fluxul costruit se scade din cel curent; excesele nenega-
tive, permit efectuarea construct ¸iei; ea este finit˘a, c˘aci
dup˘a fiecare etap˘a nr. arcelor cu flux curent nul cre¸ste.)
Cum i
0
este un nod activ ˆın R relativ la x,
rezult˘a c˘a situat ¸ia b) va apare pentru nodul i
0
(ˆıntrucˆıt situat ¸iile b) ¸si c) nu afecteaz˘a excesul din nodul
i
0
). Arcele inverse ale acestui drum au capac-
itatea rezidual˘a strict pozitiv˘a ¸si ele formeaz˘a
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
250
Corolar. 1. ∀i ∈ V d(i) < 2n.
Demonstrat ¸ie: Dac˘a i nu a fost reetichetat,
atunci d(i) = 1 < 2n.
Dac˘a i a fost reetichetat, atunci ˆınainte de
reetichetare i este nod activ, deci exist˘a C-
drum de la i la s de lungime cel mult n −1.
Din modul de modificare a lui d(i) ¸si din D2
rezult˘a c˘a dup˘a reetichetare d(i) ≤ d(s) + n −
1 = 2n −1, ˆıntrucˆıt d(s) = n nu se schimb˘a pe
parcursul algoritmului.
Corolar. 2. Num˘arul total de apeluri ale pro-
cedurii reetichetare este mai mic decˆıt 2n
2
.
Demonstrat ¸ie: Fiecare din cele n −2 vˆırfuri ce
pot fi supuse etichet˘arii poate fi etichetat de
cel mult 2n−1 ori, avˆınd ˆın vedere corolarul 1,
lema 6 ¸si etichetarea init ¸ial˘a.
251
Corolar. 3. Num˘arul total de pomp˘ari sat-
urate este ≤ nm.
Demonstrat ¸ie: Dup˘a 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 flux pˆın˘a cˆınd
nu se va trimite flux pe arcul ji situat ¸ie ˆın care
vom avea d
t
(j) = d
t
(i)+1 ≥ d(i)+1 = d(j)+2;
aceast˘a schimbare de flux nu va avea loc pˆın˘a
ce d(j) nu cre¸ste cu dou˘a unit˘at ¸i. Deci, un arc
nu poate deveni saturat mai mult de n ori ¸si ˆın
total vom avea cel mult mn pomp˘ari saturate.
Lem˘a. 8. (Goldberg ¸si Tarjan 1986) Num˘arul
pomp˘arilor nesaturate este cel mult 2n
2
m.
Lem˘a. 9. La terminarea algoritmului x este
flux de valoare maxim˘a.
Demonstrat ¸ie: Din lemele 6 ¸si 8 ¸si corolarul 3
rezult˘a c˘a algoritmul se termin˘a dup˘a cel mult
2n
2
m iterat ¸ii ¸si cum d(s) = n nu se modific˘a
pe parcurs, rezult˘a c˘a fluxul obt ¸inut este f˘ar˘a
drumuri de cre¸stere.
252
Vom prezentaˆın continuare, algoritmul lui Ahuja
¸si Orlin (1988) care, utilizˆınd o metod˘a de
scalare, va m˘argini num˘arul pomp˘arilor nesat-
urate de la O(n
2
m) la O(n
2
logU).
Vom presupune c˘a toate capacit˘at ¸ile sˆıntˆıntregi
¸si c˘a max
ij∈E
(1 +c
ij
) = U. Not˘am ¸ log
2
U| =
K. Ideia algoritmului:
Se vor executa K + 1 etape. Pentru fiecare
etap˘a p, cu p luˆınd succesiv valorile K, K −
1, . . . , 1, 0 vor fiˆındeplinite urm˘atoarele condit ¸ii:
(a) - la ˆınceputul etapei p, ∀ i satisface e
i
≤ 2
p
(b) - ˆın timpul etapei p se utilizeaz˘a proce-
durile pompare-etichetare ˆın vederea elimin˘arii
nodurilor active cu e
i
∈ (2
p−1
, 2
p
].
Din alegerea lui K, ˆın etapa init ¸ial˘a (p = K)
condit ¸ia (a) este satisf˘acut˘a ¸si deci, dac˘a (b)
va fi invariant al algoritmului, dup˘a K+1 etape,
excesele nodurilor vor fi ≤
1
2
.
253
Dac˘a, toate transform˘arile datelor vor p˘astra
integritatea exceselor, va rezulta c˘a excesul
oric˘arui nod este 0, ¸si, deci, dispunem de un
flux de valoare maxim˘a (datorit˘a propriet˘at ¸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
p−1
, ordonate cresc˘ator dup˘a d (avˆındˆın
vedere c˘a d poate lua valori ˆıntre 1 ¸si 2n−1, o
sortare de tip hash rezolv˘a problema ˆın O(n)).
- nodul activ selectat pentru pompare-reetichetare
va fi pe tot parcursul etapei, primul nod din
L(p). Va rezulta c˘a, dac˘a 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
p−1
¸si
e
j
≤ 2
p−1
. Dac˘a, ˆın plus, se va limita δ, fluxul
”trimis” de la i la j, ˆın procedura de pompare
la δ = min(e
i
, r
ij
, 2
p
−e
j
),
254
atunci, cum 2
p
− e
j
≥ 2
p−1
va rezulta c˘a orice
pompare nesaturat˘a trimite cel put ¸in 2
p−1
unit˘at ¸i de flux. Dup˘a pompare, excesul din
nodul j (singurul nod al c˘arui exces poate cre¸ste)
va fi e
j
+min(e
i
, r
ij
, 2
p
−e
j
) ≤ e
j
+2
p
−e
j
≤ 2
p
(deci b) r˘amˆıne ˆındeplinit˘a).
- etapa (p) se termin˘a atunci cˆınd L(p) devine
vid˘a.
Pentru realizarea eficient˘a a operat ¸iilor de de-
pistare a unui arc pe care se face pomparea,
sau a examin˘arii arcelor care ies dintr-un vˆırf i
pentru reetichetare, vom considera listele A(i)
organizate astfel:
- fiecare nod al listei cont ¸ine: vˆırful j; x
ij
; r
ij
;
pointer c˘atre arcul ji (din lista de adiacent ¸˘a a
vˆırfului j); pointer c˘atre urm˘atorul element din
lista A(i) .
- parcurgerea listei se face cu ajutorul unui
pointer p(i) c˘atre elementul curent din list˘a.
Evident, organizarea acestor liste se faceˆınaintea
apelului lui init ¸ializare ¸si necesit˘a O(m) operat ¸ii.
255
Algoritmul Ahuja-Orlin
init ¸ializare;
K ←¸log
2
(U)| ; ∆←2
K+1
;
for p = K, K −1, . . . , 0 do
¡ construie¸ste L(p); ∆←

2
while L(p) ,= ∅ do
¡ fie i primul element din L(p);
parcurge lista A(i) din locul curent pˆın˘a
se determin˘a un arc admisibil sau se
depisteaz˘a sfˆır¸situl ei;
if ij este arcul admisibil g˘asit then
¡ δ ←min(e
i
, r
ij
, ∆−e
j
);
e
i
←e
i
−δ; e
j
←e
j
+δ;
”trimite” δ unit˘at ¸i de flux de la i la j;
if e
i


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

2
then adaug˘a j ca prim nod ˆın L(p)
¦
else // s-a depistat sfˆır¸situl listei
¡ ¸sterge i din L(p);
parcurge toat˘a lista A(i) pentru calculul lui
d(i) = min¡d(j) +1; ij ∈ A(i) ∧ r
ij
> 0¦;
introdu i ˆın L(p) la locul s˘au (hash);
pune pointerul curent al listei A(i) la ˆınceput
¦
¦
¦
256
Operat ¸iile care domin˘a complexitatea timp, ˆın
cazul cel mai nefavorabil, sˆınt pomp˘arile nesat-
urate. Toate celelalte operat ¸ii sˆınt dominate
de O(nm).
Lem˘a. 8’. Num˘arul pomp˘arilor nesaturate
este cel mult 8n
2
ˆın fiecare etap˘a a scal˘arii,
deci O(n
2
logU) ˆın total.
Demonstrat ¸ie: Fie
F(p) =

i∈V i,=s,t
e
i
d(i)
2
p
.
La ˆınceputul etapei p, F(p) <

i∈V
2
p
(2n)
2
p
= 2n
2
.
Dac˘a ˆın etapa p, atunci cˆınd se analizeaz˘a nodul activ
i, se apeleaz˘a reetichetare, ˆınseamn˘a c˘a nu exist˘a arce
ij admisibile.
Operat ¸ia de reetichetare m˘are¸ste d(i) cu ≥ 1 unit˘at ¸i,
ceea ce conduce la o cre¸stere a lui F cu cel mult unit˘at ¸i.
Cum pentru fiecare i, cre¸sterea lui d(i) pe parcursul
ˆıntregului algoritm este < 2n rezult˘a c˘a F va cre¸ste pˆın˘a
la cel mult valoarea 4n
2
, la sfˆır¸situl etapei p.
257
Dac˘a, pentru un nod i se execut˘a pompare,
atunci aceasta se execut˘a pe arcul ij cu r
ij
> 0
¸si d(i) = d(j) +1.
Cum num˘arul unit˘at ¸ilor de flux pompat este
δ ≥ 2
p−1
, dup˘a pompare F(p) va avea valoarea
F
t
(p), unde
F
t
(p) = F(p) −
δd(i)
2
p
+
δd(j)
2
p
= F(p) −
δ
2
p

F(p) −
2
p−1
2
p
= F(p) −
1
2
.
Rezult˘a c˘a aceast˘a situat ¸ie nu poate ap˘area
mai mult de 8n
2
(ˆıntrucˆıt F(p) poate cre¸ste
cel mult la 4n
2
).
Cu atˆıt mai mult, pomp˘arile nesaturate nu vor
dep˘a¸si 8n
2
.
Sumarizˆınd toate rezultatele anterioare obt ¸inem
Teorem˘a. 6. (Ahuja-Orlin 1988) Algoritmul
de tip preflux cu scalarea exceselor are com-
plexitatea O(nm+n
2
logU).
258
2. Aplicat ¸ii (combinatorii) ale problemei
fluxului 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 vˆırfuri
¸si m muchii.
Consider˘am 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
+
definit˘a prin
c(e) =



1 dac˘a e ∈ E
1
∪ E
2
∞ dac˘a e ∈ E
3
(vezi figura urm˘atoare).
259
V
s
t
1
1
1
1
1
1
1
1
1
1
++
++
++
++
++
1
V
2
Dac˘a x = (x
ij
) este un flux cu componente
ˆıntregi ˆın R atunci se observ˘a c˘a 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
; dac˘a pe fiecare ast-
fel de arc ij (i ∈ V
1
, j ∈ V
2
) se consider˘a fluxul
x
ij
egal cu 1 ¸si de asemenea x
si
= x
jt
= 1, ¸si
luˆınd fluxul x = 0 pe orice alt arc, atunci fluxul
construit are valoarea [M[.
Rezult˘a c˘a rezolvˆınd problema fluxului maxim
pe ret ¸eaua R se determin˘a (pornind de la fluxul
nul) ˆın O(nm + n
2
logn) un cuplaj de cardinal
maximˆın graful bipartit G.
260
Fie (S, T) sect ¸iunea de capacitate minim˘a ce
se poate construi, din fluxul maxim obt ¸inut, ˆın
O(m) operat ¸ii.
Vom avea, c(S, T) = ν(G), din teorema fluxului
maxim-sect ¸iunii minime.
V
s
t
1
1
1
1
1
1
1
1
1
1
++
++
++
++
++
1
V
2
S
T
Cum ν(G) < ∞, rezult˘a c˘a punˆınd S
i
= S∩V
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 stabil˘a ˆın graful
G (pentru a avea c(S, T) < ∞).
ˆ
In plus, [X[ = [V
1
−T
1
[ +[V
2
−S
2
[ = n −ν(G).
Rezult˘a c˘a X este stabil˘a de cardinal maxim,
ˆıntrucˆıt n−ν(G) = α(G) (teorema lui K¨ onig).
261
B. Recunoa¸sterea secvent ¸elor digrafice.
Date (d
+
i
)
i=1,n
¸si (d

i
)
i=1,n
, exist˘a un digraf
G cu n vˆırfuri astfel ˆıncˆıt G = (¡1, . . . , n¦, E)
¸si d
+
G
(i) = d
+
i
¸si d

G
(i) = d

i
∀i = 1, n ?
(Problema poate apareˆın proiectarea circuitelor
integrate).
Evident, va trebui ca 0 ≤ d
+
i
≤ n−1 ¸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 bipartit˘a
R = (G
1
, s, t, E) unde G
1
se obt ¸ine din K
n,n

¡11
t
, 22
t
, . . . , nn
t
¦ prin orientarea muchiilor ij
t
∀i ,= j ∈ ¡1, . . . , n¦, ¸si introducerea arcelor si,
i ∈ ¡1, . . . , n¦ ¸si j
t
t, j ∈ ¡1, . . . , n¦.
Funct ¸ia de capacitate va fi c(si) = d
+
i
∀i =
1, n, c(j
t
t) = d

j
∀j = 1, n ¸si c(ij
t
) = 1.
262
Dac˘a ˆın aceast˘a ret ¸ea, exist˘a un flux ˆıntreg de valoare
maxim˘a m, atunci din orice vˆırf i ∈ ¡1, . . . , n¦ vor pleca
exact d
+
i
arce pe care fluxul este 1, de forma ij
t
¸si ˆın
fiecare vˆırf j
t
vor intra exact d

j
arce pe care fluxul este
1, de forma ij
t
.
s
t
1
2
n
1
1
1
2
1
1
n
+
d1
+
+



d2
dn
d1
-
d2
-
dn
-
Considerˆınd mult ¸imea de vˆırfuri ¡1, . . . , n¦ ¸si introducˆınd
toate arcele ij astfel ˆıncˆıt x
ij
t
= 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, dac˘a acest digraf exist˘a,
atunci procedˆınd invers ca ˆın construct ¸ia anterioar˘a, se
obt ¸ine un flux ˆıntreg ˆın ret ¸eaua R de valoare m (deci
maxim). Rezult˘a c˘a recunoa¸sterea secvent ¸elor digrafice
(¸si construct ¸ia digrafului ˆın cazul r˘aspunsului afirmativ)
se poate face ˆın O(nm+n
2
logn) = O(n
3
).
263
C. Determinarea nr. de muchie-conexiune
al unui graf
Fie G = (V, E) un graf. Pentru s, t ∈ V, s ,= t,
definim:
-p
e
(s, t) = num˘arul 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 ˆındep˘artarea c˘areia din graf, ˆıntre
s ¸si t nu mai exist˘a drumuri.
Teorem˘a. 7. p
e
(s, t) = c
e
(s, t).
Demonstrat ¸ie: Construim din G digraful G
1
,
ˆınlocuind fiecare muchie a lui G cu o pereche
de arce simetrice. Consider˘am
c : E(G
1
) →Z
+
prin c(e) = 1, ∀e ∈ E(G
1
).
Fie x
0
un flux ˆıntreg de valoare maxim˘a ˆın
R = (G
1
, s, t, c). Fluxul x
0
se poate scrie ca
o sum˘a de v(x
0
) fluxuri x
k
ˆıntregi de valoare 1,
ˆınlocuind, eventual, fluxul pe unele circuite cu
0.
264
s
t
s
t
Fluxul pe arcele groase
este 1, pe cele subtiri 0.
Fiecare astfel de flux x
k
induce un drum de la
s la t ˆın G
1
(considerˆınd arcele pe care fluxul
este nenul), ¸si deci, ¸si ˆın G.
Rezult˘a c˘a v(x
0
) = p
e
(s, t), ˆıntrucˆıt orice mult ¸ime
de drumuri disjuncte pe muchii, genereaz˘a un
flux de la s la t ˆın R de valoare egal˘a cu num˘arul
acestor drumuri.
Fie (S, T) o sect ¸iune de capacitate minim˘a;
avem c(S, T) = v(x
0
), din teorema fluxului maxim-
sect ¸iunii minime.
265
Pe de alt˘a parte, c(S, T) este num˘arul arcelor
cu o extremitateˆın S ¸si cealalt˘aˆın T, deoarece
c(e) = 1, ∀e ∈ E(G
1
). Aceast˘a mult ¸ime de arce
genereaz˘a ˆın G o mult ¸ime de muchii de acela¸si
cardinal ¸si cu proprietatea c˘a deconteaz˘a, prin
ˆındep˘artare, s ¸si t .
Rezult˘a c˘a avem c(S, T) = v(x
0
) = p
e
(s, t)
muchii ˆın G care deconecteaz˘a, prinˆındep˘artare,
s ¸si t. Deci c
e
(s, t) ≤ p
e
(s, t).
Cum, inegalitatea c
e
(s, t) ≥ p
e
(s, t) este evi-
dent˘a, rezult˘a c˘a teorema este demonstrat˘a.
Corolar. Dac˘a G este un graf conex λ(G) (val-
oarea maxim˘a a lui p ∈ Z
+
astfel ˆıncˆıt G este
p−muchie-conex) este
min
s,t∈V (G)
s,=t
c
e
(s, t). (∗)
266
Rezult˘a c˘a, pentru a afla λ(G), rezolv˘am cele
n(n−1)
2
probleme de flux, descriseˆın demonstrat ¸ia
teoremei.
Totu¸si, s˘a observ˘am c˘a pentru o pereche fixat˘a
s ¸si t avem: dac˘a (S, T) este sect ¸iunea de ca-
pacitate minim˘a, atunci
∀v ∈ S ¸si ∀w ∈ T c
e
(v, w) ≤ c(S, T) (∗∗).
ˆ
In particular, dac˘a (s, t) este perechea pentru
care se realizeaz˘a minimul ˆın (*) vom avea
egalitate ˆın (**).
Rezult˘a c˘a dac˘a fix˘am un vˆırf s
0
¸si rezolv˘am
n − 1 probleme de flux 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 asigur˘am, astfel, de-
pistarea unui vˆırf t
0
, care s˘a nu fie ˆın aceea¸si
clas˘a cu s
0
ˆın partit ¸ia (S, T)).
Rezult˘a c˘a ˆı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 minimˆın G.
267
D. Determinarea num˘arului de conexiune
al unui graf.
Dac˘a G = (V, E) este un graf ¸si
s, t ∈ V, s ,= t, st / ∈ E atunci, notˆınd
-p(s, t) = num˘arul maxim de st−drumuri cu
mult ¸imile de vˆırfuri disjuncte (cu except ¸ia ex-
tremit˘at ¸ilor),
-c(s, t) = cardinalul minim al unei mult ¸imi de
vˆırfuri st− separatoare,
avem, din teorema lui Menger,
p(s, t) = c(s, t) (∗)
ˆ
In plus, num˘arul de conexiune k(G) al grafului
G (valoarea maxim˘a a lui p ∈ Z
+
pentru care
G este p−conex) este
k(G) =







n −1 dac˘a G = K
n
min
s,t∈V
st / ∈E
c(s, t) dac˘a G ,= K
n
(∗∗)
268
Vom ar˘ata c˘a egalitatea (*) rezult˘a ¸si din teo-
rema fluxului maxim-sect ¸iunii minime pe o ret ¸ea
convenabil aleas˘a.
Fie G
1
= (V (G
1
), E(G
1
)) digraful construit din
G astfel:
-∀v ∈ V consider˘am a
v
, b
v
∈ V (G
1
) ¸si a
v
b
v
∈ E(G
1
);
- ∀vw ∈ E consider˘am 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
Definim c : E(G
1
) → Z
+
prin
c(e) =



1 dac˘a e = a
v
b
v
∞ altfel.
269
Consider˘am ret ¸eaua R = (G
1
, b
s
, a
t
, c).
Fie x
0
un flux ˆıntreg de la b
s
la a
t
ˆın R de
valoare maxim˘a.
ˆ
In vˆırfurile b
v
(v ∈ V ) intr˘a exact un arc de ca-
pacitate 1 ¸si din vˆırfurile a
v
(v ∈ V ) pleac˘a exact
un arc de capacitate 1. Rezult˘a c˘a, pentru ca
s˘a fie satisf˘acut˘a legea de conservare a fluxului,
x
0
ij
∈ ¡0, 1¦ ∀ij ∈ E(G
1
).
Aceasta ˆınseamn˘a c˘a x
0
se poate descompune
ˆın v(x
0
) fluxuri x
k
, fiecare de valoare 1, ¸si astfel
ˆıncˆıt arcele pe care x
k
sˆınt 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 alt˘a 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 cˆıte o
unitate de flux, rezult˘a c˘a avem
: v(x
0
) = p(s, t).
270
Fie (S, T) o sect ¸iune ˆın R astfel ˆıncˆıt v(x
0
) =
c(S, T).
Cum v(x
0
) este finit, rezult˘a c˘a ∀i ∈ S, ∀j ∈ T
cu ij ∈ E(G
1
),avem c(ij) < ∞, deci c(ij) = 1,
adic˘a ∃u ∈ V astfel ˆıncˆıt i = a
u
¸si j = b
u
.
Deci sect ¸iunii (S, T) ˆıi corespunde o mult ¸ime
de vˆırfuri A
0
⊆ V astfel ˆıncˆıt, c(S, T) = [A
0
[ ¸si
evident A
0
este st− separatoare.
Cum, pe de alt˘a parte, ∀A st−separatoare, [A[ ≥
p(s, t) = v(x
0
) rezult˘a c˘a
c(s, t) = [A
0
[ = c(S, T) = v(x
0
) = p(s, t).
Demonstrat ¸ia de mai sus, arat˘a c˘a pentru a
determina k(G) va fi suficient s˘a determin˘am
minimul din (**) prin rezolvarea a [E(G)[ prob-
leme de flux, unde G este graful complementar
al lui G.
Deci algoritmul va avea complexitatea
O
_
(
n(n −1)
2
−m)(nm+n
2
logn))
_
.
271
O simpl˘a observat ¸ie ne conduce la un algoritm
mai eficient. Evident,
k(G) ≤ min
v∈V
d
G
(v) =
1
n
(n min
v∈V
d
G
(v)) ≤
1
n
(

v∈V
d
G
(v)) =
2m
n
.
Dac˘a 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
t
∪ V ” astfel ˆıncˆıt,
∀v
t
∈ V
t
, ∀v” ∈ V ” avem p(v
t
, v”) = k(G).
Rezult˘a c˘a, rezolvˆınd o problema de flux cu
s
0
∈ V
t
¸si t
0
∈ V ” va rezulta c˘a p(s
0
, t
0
) =
valoarea fluxului maxim = k(G).
Vom fi siguri c˘a depist˘am o astfel de pereche,
dac˘a proced˘am astfel:
consider˘am l = ¸
2m
n
|+1 , alegem l vˆırfuri oare-
care din G, ¸si pentru fiecare astfel de vˆırf v
rezolv˘am toate problemele p(v, w) cu vw / ∈ E.
Se vor rezolvaˆın total O(nl) = O(n(
2m
n
+1)) =
O(m) probleme. Deci complexitatea ˆıntregului
algoritm va fi O(m(nm+n
2
logn)).
272
3. Fluxuri de cost minim
Fie R = (G, s, t, c) o ret ¸ea ¸si x un flux de la s
la t ˆın R.
Consider˘am a : E → R o funct ¸ie de cost care
asociaz˘a fiec˘arui arc ij ∈ E a(ij) = a
ij
costul
(transportului unei unit˘at ¸i de flux) pe arcul ij.
Costul fluxului x se define¸ste ca fiind
a(x) =

i,j
a
ij
x
ij
.
Problema fluxului de cost minim
Dat˘a R o ret ¸ea, v ∈ R
+
¸si a : E →R funct ¸ie de
cost, s˘a se determine x
0
flux ˆın R astfel ˆıncˆıt
a(x
0
) = min¡a(x) [ x flux ˆın R, v(x) = v¦.
Observ˘am c˘a, dac˘a v nu dep˘a¸se¸ste valoarea
fluxului maxim ˆın ret ¸eaua R, atunci problema
are ˆıntotdeauna solut ¸ii, a(x) fiind liniar˘a, iar
mult ¸imea fluxurilor de valoare dat˘a v fiind m˘argi
nit˘a ¸si ˆınchis˘a ˆın R
m
.
273
Exemple.
1
0
. Se dispune de n lucr˘atori ¸si n lucr˘ari. Cos-
tul atribuirii lucr˘atorului i la lucrarea j este
a
ij
(i, j ∈ ¡1, . . . , n¦). S˘a se atribuie fiecare
dintre cele n lucr˘ari la cˆıte un lucr˘ator,
astfel ˆıncˆıt costul total al atribuirii s˘a fie
minim. (Problema simpl˘a a atribuirii).
Consider˘am ret ¸eaua descris˘a mai jos, unde pe
fiecare arc este trecut˘a mai ˆıntˆıi 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 flux ˆıntreg de valoare n ¸si de cost
minim, reprezint˘a solut ¸ia problemei.
274
Not˘am c˘aˆın mod similar se poate rezolva orice
problem˘a de cuplaj perfect de pondere minim˘a
ˆıntr-un graf bipartit.
2
0
.O marf˘a disponibil˘aˆın depozitele D
1
, . . . , D
n
ˆın cantit˘at ¸ile d
1
, . . . , d
n
este solicitat˘a ˆın cen-
trele de consum C
1
, C
2
, . . . , C
m
ˆın cantit˘at ¸ile
c
1
, c
2
, . . . , c
m
.
Se cunoa¸ste costul a
ij
al transportului unei
unit˘at ¸i de marf˘a de la depozitul D
i
la centrul
de consum C
j
(∀i ∈ ¡1, . . . , n¦ ∀j ∈ ¡1, . . . , m¦).
Se cere s˘a se stabileasc˘a un plan de trans-
port care s˘a satisfac˘a toate cererile ¸si s˘a
aib˘a costul total minim (problema simpl˘a a
transporturilor Hitchcock-Koopmans).
Evident, problema are solut ¸ie numai dac˘a

i=1,n
d
i


j=1,m
c
j
.
275
ˆ
In acest caz, un flux de cost minim ¸si de val-
oare v =

i=1,m
c
i
ˆın ret ¸eaua urm˘atoare, re-
zolv˘a 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
276
Definit ¸ie. Fie x un flux ˆın R = (G, s, t, c) ¸si
a : E →R o funct ¸ie de cost.
Dac˘a P este un C-drum ˆın R relativ la fluxul
x, atunci costul drumului P se define¸ste
a(P) =

ij∈P
ij direct
a
ij

ij∈P
ij invers
a
ji
.
Dac˘a C este un C-drum ˆınchis, a(C) se cal-
culeaz˘a dup˘a aceea¸si formul˘a, dup˘a stabilirea
unui sens de parcurgere a lui C (este posibil
ca ambele sensuri de parcurgere ale lui C s˘a
satisfac˘a definit ¸ia unui C-drum).
Observat ¸ii: 1
0
Din definit ¸ia dat˘a, rezult˘a c˘a
dac˘a P este drum de cre¸stere relativ la fluxul
x, atunci x
1
= x

r(P) este un flux de valoare
v(x
1
) = v(x)+r(P) ¸si de cost a(x)+r(P) a(P).
2
0
Dac˘a C este un C-drum ˆınchis relativ la
x, atunci x
1
= x

r(C) este un flux de val-
oare v(x
1
) = v(x) ¸si de cost a(x
1
) = a(x) +
r(C) a(C).
Dac˘a a(C) < 0 atunci x
1
este un flux de aceea¸si
valoare ca ¸si x, dar de cost strict mai mic.
277
Teorem˘a. 8. Un flux de valoare v este de
cost minim dac˘a ¸si numai dac˘a nu admite C-
drumuri ˆınchise de cost negativ.
Demonstrat ¸ie: Necesitatea este evident˘a din
observat ¸ia anterioar˘a.
Suficient ¸a. Fie x un flux de valoare v, care nu
admite C- drumuri ˆınchise de cost negativ.
Fie x

un flux de valoare v, de cost minim
(exist˘a !) astfel ˆıncˆıt
∆(x, x

) = min¡∆(x, x
t
) [ x
t
flux de val. v ¸si cost minim¦
unde ∆(x, x
t
) = [¡ij [ x
ij
,= x
t
ij
¦[.
Dac˘a ∆(x, x

) = 0 rezult˘a x = x

¸si deci x este
de cost minim.
Dac˘a ∆(x, x

) > 0, fie ij astfel ˆıncˆıt x
ij
,=
x

ij
. Presupunem 0 ≤ x
ij
< x

ij
≤ c
ij
(altfel,
rat ¸ionamentul este similar). Din legea de con-
servare a fluxurilor rezult˘a c˘a
∃ jk ∈ E astfel ˆıncˆıt 0 ≤ x
jk
< x

jk
≤ c
jk
, sau
∃ kj ∈ E astfel ˆıncˆıt 0 ≤ x

kj
< x
kj
≤ c
jk
.
278
j
i
x < x
x < x
x < x
x < x
*
*
*
C
*
ij
ij
k
jk
jk
t
tk
tk
v
vj
vj
Repetˆınd acest rat ¸ionament, deoarece num˘arul
vˆırfurilor este finit, se va obt ¸ine C, un C-drum
ˆınchis relativ la x ˆın R.
Considerˆınd sensul invers de parcurgere pe C
se obt ¸ine un C-drum C
t
, ˆınchis relativ la x

.
Deoarece a(C) ≥ 0 din ipotez˘a, iar a(C
t
) =
−a(C), rezult˘a, din necesitatea teoremei (x

este de cost minim), c˘a a(C) = 0.
Modificˆınd fluxul x

cu δ(C
t
) pe C
t
, unde
δ(C
t
) = min
_
min
kj direct ˆın C
t
x
kj
−x

kj
, min
kj invers ˆın C
t
x

jk
−x
jk
_
se obt ¸ine un flux x
t
cu v(x
t
) = v(x

) = v,
a(x
t
) = a(x

) +δ(C
t
) a(C
t
) = a(x

), deci de
279
cost minim, dar, cu ∆(x, x
t
) < ∆(x, x

),
contradict ¸ie.
Deci ∆(x, x

) = 0, ¸si demonstrat ¸ia esteˆıncheiat˘a.
Teorem˘a. 9. Dac˘a x este un flux de valoare
v ¸si de cost minim iar P
0
este un drum de
cre¸stere, astfel ˆıncˆıt
a(P
0
) = min¡a(P) [ Pdrum de cre¸stere relativ la x¦,
atunci x
1
= x

r(P
0
) este un flux de valoare
v(x
1
) = v +r(P
0
) ¸si de cost minim.
Linia demonstrat ¸iei este urm˘atoarea :
presupunˆınd prin reducere la absurd c˘a x
1
nu
este de cost minim, atunci x
1
admite un C-
drumˆınchis C de cost negativ. Cum x era flux
de cost minim rezult˘a c˘a E(C) ∩ E(P
0
) ,= ∅.
Dac˘a ij ∈ E(C) ∩ E(P
0
), atunci va rezulta c˘a
P
0
∪C −ij cont ¸ine un drum de cre¸stere relativ
la x de cost mai mic decˆıt P
0
.
280
Un drum de cre¸stere de cost minim poate fi de-
pistat cu ajutorul algoritmilor de drum minim.
Dac˘a x este un flux ˆın R ¸si a : E → R este
funct ¸ia de cost atunci considerˆınd a
ij
= ∞
dac˘a ij / ∈ E (caz ˆın care x
ij
= 0), construim
a
ij
=













a
ij
dac˘a x
ij
< c
ij
¸si x
ji
= 0,
min¡a
ij
, −a
ji
¦ dac˘a x
ij
< c
ij
¸si x
ji
> 0,
−a
ji
dac˘a x
ij
= c
ij
¸si x
ji
> 0,
+∞ dac˘a x
ij
= c
ij
¸si x
ji
= 0.
Un drum de pondere minim˘a de la s la t ˆın
raport cu ponderile a
ij
corespunde unui drum
minim de cre¸stere ˆın R relativ la fluxul x.
Un circuit de pondere negativ˘a ˆın raport cu
ponderile a
ij
corespunde unui C-drumˆınchis ˆın
R relativ la x, de cost negativ.
Rezult˘a, urm˘atorul algoritm pentru rezolvarea
problemei fluxului de cost minim, obt ¸inut prin
combinarea mai multor algoritmi clasici
(Klein,Busacker,Gowan, etc.).
281
Algoritm generic de rezolvare a problemei fluxului
de cost minim
¡
0: Se consider˘a x = (x
ij
) un flux cu valoarea v
t
≤ v;
¡x poate fi fluxul nul sau un flux y determinat
cu ajutorul algoritmului de flux maxim ¸si apoi
considerˆınd x = (
v
v(y)
y)¦
1: while (∃ circuite de pondere < 0 relativ la a
ij
) do
¡ determin˘a un astfel de circuit;
modific˘a fluxul pe acest circuit
¦
2: while v(x) < v do
¡ aplic˘a un algoritm de drum minimˆın 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), dac˘a se pleac˘a de
la fluxul nul. Complexitatea pentru pasul 2 este O(n
3
v),
dac˘a se pleac˘a de la fluxul nul. Se poate dovedi c˘a pasul
1 se poate implementa astfel ca num˘arul iterat ¸iilor s˘a
fie O(nm
2
logn).
282
VI. Reduceri polinomiale pentru
probleme de decizie pe grafuri.
Definit ¸ie. Spunem c˘a problema de decizie
P
1
: I
1
→ ¡da, nu¦ se reduce polinomial la
problema de decizie P
2
: I
2
→¡da, nu¦ ¸si not˘am
aceasta prin P
1
∝ P
2
, dac˘a exist˘a o funct ¸ie
Φ : I
1
→ I
2
polinomial calculabil˘a, astfel ˆıncˆıt,
∀i ∈ I
1
P
1
(i) = P
2
(Φ(i)).
Funct ¸ia Φ se va da indicˆand un algoritm care
construie¸ste 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 c˘a P
1
(i
1
) = da dac˘a ¸si
numai dac˘a P
2
(i
2
) = da.
Se observ˘a c˘a relat ¸ia de reducere polinomial˘a
∝ este o relat ¸ie tranzitiv˘a pe mult ¸imea prob-
lemelor de decizie (datorit˘a ˆınchiderii mult ¸imii
funct ¸iilor polinomiale la compunere).
Din punct de vedere algoritmic, construct ¸ia din spatele
oric˘arei reduceri polinomiale este interesant˘a evident ¸iind
modul ˆın care prima problem˘a poate fi rezolvat˘a eficient
cu ajutorul unui oracol care rezolv˘a a doua problem˘a.
283
Vom considera cunoscut faptul c˘a SAT ∝ 3SAT
unde
SAT
Instant ¸˘a: U = ¡u
1
, . . . , u
n
¦ o mult ¸ime finit˘a de var. booleene.
C = C
1
∧ C
2
∧ . . . ∧ C
m
o formul˘a ˆın form˘a
conjunctiv˘a 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: Exist˘a o atribuire t : U →¡A, F¦ a. ˆı. t(C) = A ?
3SAT este cazul particular al lui SAT ˆın care
fiecare clauz˘a C
i
are exact trei literali (k
i
= 3),
un literal v
i
j
fiind, a¸sa cum este descris mai
sus, o variabil˘a sau negat ¸ia ei.
Problema SAT este celebr˘a datorit˘a teoremei
lui Cook (1971): SAT este NP−complet˘a.
284
1. Mult ¸imi stabile
SM
Instant ¸˘a: G = (V, E) graf ¸si k ∈ N.
Intrebare: Exist˘a S mult ¸ime stabil˘a ˆın G a. ˆı. [S[ ≥ k ?
Teorem˘a. 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 ˆıncˆıt v
i
j
= u
α
sau v
i
j
= u
α
),
reprezentˆınd 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 ˆıncˆıt ex-
ist˘a o atribuire t a valorilor de adev˘ar sau fals
pentru variabilele booleene din U care s˘a fac˘a
adev˘arat˘a formula C, dac˘a ¸si numai dac˘a exist˘a
o stabil˘a S ˆın graful G astfel ˆıncˆıt [S[ ≥ k.
285
Graful G va fi construit astfel:
(1) Pentru orice i ∈ ¡1, . . . , n¦ consider˘am gra-
furile disjuncte T
i
= (¡u
i
, u
i
¦, ¡u
i
u
i
¦).
(2) Pentru orice j = 1, m consider˘am 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 consider˘am 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
.
Consider˘am 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 polinomial˘a ˆın raport
cu m + n (G are 2n + 3m vˆırfuri ¸si n + 6m
muchii).
Consider˘am k = n +m.
286
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
S˘a presupunem c˘a r˘aspunsul la problema
SM pentru instant ¸a G ¸si k astfel construite
este da. Deci ∃S ∈ S
G
astfel ˆıncˆıt [S[ ≥ k.
Cum orice mult ¸ime stabil˘a poate avea cel mult
un vˆırf din orice V (T
i
) ¸si din orice V (Z
j
) (i =
1, n , j = 1, m) rezult˘a c˘a avem [S[ = k ¸si deci
[S ∩ V (T
i
)[ = 1, [S ∩ V (Z
j
)[ = 1 ∀i = 1, n ¸si
∀j = 1, m.
287
Consider˘am t : U → ¡A, F¦ prin
t(u
i
) =



A dac˘a S ∩ V (T
i
) = ¡u
i
¦
F dac˘a S ∩ V (T
i
) = ¡u
i
¦.
Atunci, ∀j = 1, m avem t(C
j
) = A (¸si deci
t(C) = A).
ˆ
In adev˘ar, ∀j = 1, m dac˘a 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 rezult˘a c˘a v
jk
/ ∈ S.
Dac˘a v
jk
= u
α
, atunci u
α
/ ∈ S deci u
α
∈ S ¸si din
definit ¸ia lui t avem t(u
α
) = A, adic˘a t(v
jk
) = A
ceea ce implic˘a t(C
j
) = A.
Dac˘a v
jk
= u
α
, atunci u
α
/ ∈ S implic˘a u
α

S, deci t(u
α
) = A, adic˘a t(v
jk
) = A, ceea ce
implic˘a t(C
j
) = A.
Reciproc, dac˘a r˘aspunsul la problema 3SAT
este da, atunci exist˘a o atribuire t : U →¡A, F¦
astfel ˆıncˆıt t(C
j
) = A ∀j = 1, m.
288
Consider˘am ˆın graful G mult ¸imea stabil˘a S
1
,
S
1
= ∪
i=1,n
V
t
i
, unde
V
t
i
=



¡u
i
¦ dac˘a t(u
i
) = A
¡u
i
¦ dac˘a t(u
i
) = F .
Atunci, ∀j = 1, m, cum t(C
j
) = A, rezult˘a
c˘a exist˘a k
j
∈ ¡1, 2, 3¦astfel ˆıncˆıt t(v
jk
j
) = A.
Consider˘am S
2
= ∪
j=1,m
¡a
jk
j
¦.
Evident, S
2
este stabil˘a ˆın G. Am construit
S
1
∈ S
G
cu [S
1
[ = n, S
2
∈ S
G
cu [S
2
[ = m.
Consider˘am S = S
1
∪ S
2
. Evident, [S[ = n +
m = k (deci [S[ ≥ k) ¸si ˆın plus S este mult ¸ime
stabil˘a ˆın G (deci r˘aspunsul la SM pentru
intrarea G, k este da).
Faptul c˘a S este mult ¸ime stabil˘a ˆın G rezult˘a
astfel: dac˘a ∃v, w ∈ S astfel ˆıncˆıt vw ∈ E(G)
atunci o extremitate este din S
1
¸si cealalt˘a din
S
2
.
289
Presupunˆınd v ∈ S
1
avem dou˘a 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 rezult˘a 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, rezult˘a t(u
α
) = A deci t(u
α
) = F
ceea ce implic˘a u
α
/ ∈ S
1
, contradict ¸ie.
Cu aceasta teorema este complet demonstrat˘a.
S˘a observ˘am c˘a reducerea lui SAT la SM este
complet similar˘a, singura deosebire fiind c˘a gra-
furile Z
i
sunt grafuri complete cu k
i
vˆarfuri.
290
2. Colorarea vˆarfurilor.
COL
Instant ¸˘a: G = (V, E) graf ¸si p ∈ N

.
Intrebare: Exist˘a o p-colorare a vˆarfurilor lui G?
Teorem˘a. 2. 3SAT ∝ COL.
Aceast˘a teorem˘a evident ¸iaz˘a complexitatea prob-
lemelor de colorare a vˆırfurilor unui graf.
Vom demonstra chiar mai mult: fixˆınd p = 3
ˆın enunt ¸ul lui COL, reducerea polinomial˘a a lui
3SAT este ˆınc˘a posibil˘a !
291
Lem˘a. 1. Fie H graful:
v
v
v
v
1
2
3
4
a) Dac˘a c este o 3-colorare a lui H astfel ˆıncˆıt
c(v
1
) = c(v
2
) = c(v
3
) = a ∈ ¡1, 2, 3¦ atunci ˆın
mod necesar c(v
4
) = a.
b) Dac˘a c : ¡v
1
, v
2
, v
3
¦ → ¡1, 2, 3¦ satisface
c(¡v
1
, v
2
, v
3
¦) ,= ¡a¦ atunci c poate fi extins˘a
la o 3-colorare c a lui H cu c(v
4
) ,= a.
Demonstrat ¸ia lemei se poate face examinˆınd
lista 3-color˘arilor lui H.
292
ˆ
In cele ce urmeaz˘a, vom desemna (pentru sim-
plitate) graful H astfel:
v
v
v
v
1
2
3
4
h
Demonstrat ¸ia teoremei 2. Consider˘am 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 formul˘a astfel ˆıncˆıt ∀i = 1, m C
i
=
v
i
1
∨ v
i
2
∨ v
i
3
, unde ∀j = 1, 3 ∃α astfel ˆıncˆıt v
i
j
= u
α
sau v
i
j
= u
α
.
Vom construi un graf G, astfel ˆıncˆıt, considerˆınd
p = 3ˆın COL, vom obt ¸ine c˘a G este 3-colorabil
dac˘a ¸si numai dac˘a r˘aspunsul la 3SAT este da,
adic˘a exist˘a t : U → ¡A, F¦, astfel ˆıncˆıt t(C) =
A.
ˆ
In plus, construct ¸ia lui G se va face ˆın timp
polinomial, parcurgˆınd urm˘atoarele etape:
293
1. ∀i = 1, n consider˘am 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-
sider˘am grafurile:
v
v
v
a
1
2
3
j
h
j
j
j
j
unde v
j
k
(k = 1, 3) sˆınt vˆırfurile de la pasul 1,
corespunz˘atoare literalilor v
j
k
, grafurile h
j
sˆınt
disjuncte ¸si a
j
sˆınt vˆırfuri distincte.
3. Consider˘am a, un vˆırf diferit de toate cele
construite ˆın pa¸sii 1 ¸si 2 ¸si unim a cu vˆırfurile
a
j
j = 1, m.
4. Consider˘am b un vˆırf nou, unit cu u
i
¸si u
i
∀i = 1, n ¸si de asemenea, cu vˆırful a.
294
Graful G astfel construit are un num˘ar liniar de
vˆırfuri ˆı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 fi:
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 r˘aspunsul la 3SAT este da.
Deci ∃t : U →¡A, F¦ astfel ˆıncˆıt t(C) = A, deci
t(C
j
) = A ∀j = 1, m.
Construim o 3-colorare C a grafului G.
295
Definim mai ˆıntˆıi c(u
i
) ¸si c(u
i
) ∀i = 1, n astfel:
c(u
i
) = 1 ¸si c(u
i
) = 2, dac˘a t(u
i
) = A ¸si
c(u
i
) = 2 ¸si c(u
i
) = 1, dac˘a t(u
i
) = F.
Se observ˘a c˘a dac˘a v este un literal (u
α
sau
u
α
), atunci vˆırful v este colorat c(v) = 2 dac˘a
¸si numai dac˘a 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) rezult˘a c˘a putem extinde ˆın
fiecare graf h
j
colorarea c astfel ˆıncˆıt c(a
j
) ,= 2,
deci c(a
j
) ∈ ¡1, 3¦.
Rezult˘a c˘a atribuind c(a) = 2 ¸si c(b) = 3, c
este o 3- colorare a lui G.
296
Reciproc, presupunem c˘a G este 3-colorabil.
Putem presupune (eventual renumerotˆınd cu-
lorile) c˘a c(b) = 3 ¸si c(a) = 2.
Va rezulta c˘a ¡c(u
i
), c(u
i
)¦ = ¡1, 2¦ ¸si c(a
j
) ∈
¡1, 3¦ ∀i = 1, n, ∀j = 1, m.
Din lema 1 a) rezult˘a c˘a nu vom avea c(v
j1
) =
c(v
j2
) = c(v
j3
) = 2 ∀j = 1, 3.
Deci ∀j = 1, m ∃v
jk
astfel ˆıncˆıt c(v
jk
) = 1.
Definim t : U → ¡A, F¦ prin
t(u
i
) = A ⇔c(u
i
) = 1.
Conform observat ¸iei anterioare, vom avea c˘a
t(C
j
) = A ∀j = 1, m, deci t(C) = A, adic˘a
r˘aspunsul la 3SAT este da.
297
3. Colorarea muchiilor
Consider˘am urm˘atoarea problem˘a de decizie.
HOL
Instant ¸˘a: G = (V, E) graf 3-regulat.
Intrebare: Exist˘a o 3-colorare a muchiilor lui G?
Teorem˘a. 3. (Holyer 1981) 3SAT ∝ HOL.
Lem˘a. 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 .
298
Demonstrat ¸ie Fie c o 3-colorare a lui H.
a) presupunem c(x) = c(y). Eventual, dup˘a
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 urm˘atorul ¸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 urm˘atorul ¸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, dac˘a c(z) = c(t).
299
S˘a observ˘am c˘aˆın graful H muchiile etichetate
nu au precizat˘a una din extremit˘at ¸i.
ˆ
In construct ¸ia
pe care o vom face, aceste extremit˘at ¸i nepre-
cizate vor fi identificate 2 cˆıte 2; cu alte cu-
vinte, perechi de astfel de muchii vor fi iden-
tificate. Vom reprezenta simplificat graful H
astfel:
u
x
y
z
t
Dac˘a 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
reprezentˆınd valorea ”adev˘ar”, dac˘a sˆınt la fel
colorate, respectiv, valoarea ”fals”, dac˘a sˆınt
colorate diferit.
Lema 2 ¸si aceast˘a interpretare justific˘a denumirea de
component˘a inversoare pentru H (dac˘a (x, y) este ”in-
trare” ˆın H atunci (z, t) este ”ie¸sire” ¸si H transform˘a
adev˘ar ˆın fals ¸si fals ˆın adev˘ar).
300
Definim graful 2H, considerˆınd dou˘a compo-
nente inversoare H c˘arora le identific˘am o pereche
de muchii etichetate.
u
x
y
z
t
z
t
u
y
x





Pentru orice n ≥ 2, n ∈ N, definim graful H
n
astfel: 1. H
2
se obt ¸ine identificˆınd muchiile u
¸si u
t
din 2H:
u
1
u
2

2. ∀n > 2 H
n
se construie¸ste astfel:
301
-consider˘am n copii izomorfe disjuncte ale lui
2H, 2H
i
i = 1, n, avˆınd perechile de muchii
libere (x
i
, y
i
), (x
t
i
, y
t
i
), (u
i
, u
t
i
).
-pentru i = 1, n−1 identific˘am perechile (u
i
, u
t
i
) ≡
(x
t
i+1
, y
t
i+1
).
-identific˘am (u
n
, u
t
n
) ≡ (x
t
1
, y
t
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.
302
ˆ
In orice 3-colorare c a lui H
n
avem
a) c(x
1
) = c(y
1
) ⇒ c(u
1
) = c(u
t
1
) (din lema 2 ¸si
construct ¸ia lui 2H), ⇒ c(x
t
2
) = c(y
t
2
) (din iden-
tificarea de la construct ¸ia lui H
n
) ⇒ c(x
2
) =
c(y
2
) (lema 2) ⇒c(u
2
) = c(u
t
2
) ⇒. . . ⇒c(x
n
) =
c(y
n
) .
b) c(x
1
) ,= c(y
1
) ⇒ c(x
t
1
) ,= c(y
t
1
) (lema 2) ⇒
c(u
n
) ,= c(u
t
n
)(din identificarea de la construct ¸ia
lui H
n
) ⇒ c(x
n
) ,= c(y
n
)(din lema 2, prin re-
ducere la absurd) ⇒c(x
t
n
) ,= c(y
t
n
) ⇒c(u
n−1
) ,=
c(u
t
n−1
) ⇒ . . . ⇒ c(x
2
) ,= c(y
2
).
Rezult˘a de aici c˘aˆın orice 3-colorare a muchi-
ilor lui H
n
(n ≥ 2) toate perechile de muchii
de intrare reprezint˘a aceea¸si valoare de adev˘ar.
Pentru n = 1 se poate construi H
1
cu o singur˘a
pereche de intrare, care s˘a poat˘a reprezenta
oricare din cele 2 valori de adev˘ar. Am dovedit
303
Lem˘a. 3. Pentru orice n ∈ N

se poate con-
strui ˆın timp polinomial graful H
n
avˆınd n perechi
de muchii de ”intrare”, cu proprietatea c˘a ˆın
orice 3-colorare a muchiilor lui H
n
, toate cele
n perechi reprezint˘a aceea¸si valoare de adev˘ar
(sau, ˆın orice pereche de intrare cele dou˘a muchii
au culori diferite, sau, ˆın orice pereche de in-
trare cele dou˘a muchii sˆınt la fel colorate).
Lem˘a. 4. Fie F graful
a d
b
c
1
2
3
ˆ
In orice 3-colorare c a muchiilor lui F, m˘acar
una din cele 3 perechi de muchii de intrare
are muchiile la fel colorate (reprezint˘a valoarea
adev˘ar).
304
Demonstrat ¸ia este imediat˘a ¸si rezult˘a prin re-
ducere la absurd: dac˘a exist˘a o 3-colorare a
muchiilor lui F, astfel ˆıncˆıt ˆın cele 3 perechi
muchiile sˆınt 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) contrazicˆınd faptul c˘a c
este colorare a muchiilor. Not˘am c˘a exist˘a
color˘ari 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
α
)
reprezentˆınd datele unei probleme 3SAT.
Vom construi un graf 3-regulat G cu propri-
etatea c˘a χ
t
(G) = 3 dac˘a ¸si numai dac˘a exist˘a
t : U →¡adev, fals¦ astfel ˆıncˆıt t(C) = adev.
Construct ¸ia se faceˆın timp polinomial ˆın raport
cu n ¸si m ¸si se poate descrie astfel:
305
1. Pentru fiecare variabil˘a boolean˘a u
i
i = 1, n
se determin˘a x
i
, num˘arul aparit ¸iilor (negate sau
nu) ale lui u
i
ˆın C ¸si se consider˘a cˆıte o copie
disjunct˘a a grafului H
x
i
.
2. Pentru fiecare clauz˘a C
j
j = 1, m se con-
sider˘a cˆıte o copie disjunct˘a F
j
a grafului F.
3. Pentru j = 1, m, fie C
j
= v
j
1
∨ v
j
2
∨ v
j
3
.
Dac˘a v
j
i
(i = 1, 3) este u
α
¸si reprezint˘a intrarea
cu num˘arul y a variabilei u
α
atunci perechea de
intrare cu num˘arul y din H
x
α
se identific˘a cu
perechea de intrare num˘arul i din componenta
F
j
.
Dac˘a v
j
i
este u
α
se plaseaz˘a o component˘a in-
versoare Hˆıntre perechea i a lui F
j
¸si perechea
de intrare cu num˘arul y din H
x
α
, ¸si se identific˘a
corespunz˘ator intr˘arile lui H cu cele precizate
mai sus.
306
4. Graful obt ¸inut la 1-3 are anumite muchii
pentru care nu s-a precizat o extremitate. Con-
sider˘am o copie izomorf˘a disjunct˘a a sa ¸si iden-
tific˘am perechile corespunz˘atoare de astfel de
muchii, din cele dou˘a grafuri. Se obt ¸ine un
graf G 3-regulat.
Construct ¸ia lui G ¸si lemele 3 ¸si 4 simuleaz˘a
algoritmul de calcul al valorii de adev˘ar a lui
C ˆıntr-o atribuire t fixat˘a ¸si deci G admite o
3-colorare dac˘a ¸si numai dac˘a C este sat-
isfiabil˘a.
307
4. Probleme hamiltoniene
Definit ¸ie: Fie G = (V (G), E(G)) un (di)graf.
Un circuit C al lui G se nume¸ste circuit hamil-
tonian dac˘a V (C) = V (G).
Un drum deschis D al lui G se nume¸ste drum
hamiltonian dac˘a V (D) = V (G).
Un (di)graf care are un circuit hamiltonian se
nume¸ste (di)graf hamiltonian.
Un (di)graf care are un drum hamiltonian se
nume¸ste (di)graf trasabil.
Teorem˘a. 4. (Nash-Williams 1969) Prob-
lemele urm˘atoare sˆınt 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 ?
308
Demonstrat ¸ie:
CH ∝ TR
Fie G un graf ¸si v
0
∈ V (G) un vˆırf fixat al
s˘au. Construim (ˆın timp polinomial) un graf H
astfel ˆıncˆıt G este hamiltonian dac˘a ¸si numai
dac˘a 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 observ˘a c˘a H este trasabil dac˘a ¸si numai
dac˘a are un drum hamiltonian D cu extremit˘at ¸ile
x ¸si z (care au gradul 1 ˆın H). D exist˘a ˆın H
dac˘a ¸si numai dac˘a ˆın G exist˘a un drum hamil-
tonian cu o extremitate v
0
¸si cealalt˘a un vecin
al lui v
0
, deci dac˘a ¸si numai dac˘a G este hamil-
tonian.
309
TR ∝ CH
Fie G un graf. Consider˘am H = G + K
1
. H
este hamiltonian dac˘a ¸si numai dac˘a G are un
drum hamiltonian.
G
G+K
1
Echivalent ¸a problemelor DCH¸si DTR de demon-
streaz˘a ˆın mod similar.
CH ∝ DCH
Fie G un graf. Fie D digraful obt ¸inut din G
ˆınlocuind fiecare muchie cu o pereche de arce
simetrice. Orice circuit hamiltonian ˆın G in-
duce un circuit hamiltonian ˆın D ¸si reciproc.
310
DCH ∝ CH
Fie D = (V (D), E(D)) un digraf. Pentru orice
vˆırf v ∈ V (D) asociem un drum de lungime 3,
P
v
cu extremit˘at ¸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) consider˘am muchia
b
v
a
w
. Fie G graful cu V (G) = ∪
v∈V (D)
V (P
v
)
¸si E(G) = ∪
v∈V (D)
E(P
v
) ∪ ¡b
v
a
w
[ vw ∈ E(D)¦.
Evident, G se poate construi ˆın timp polinomial
ˆın raport cu num˘arul de vˆırfuri 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 observ˘a c˘a 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. Rezult˘a: D este hamiltonian dac˘a ¸si
numai dac˘a G este hamiltonian.
311
S˘a observ˘am c˘a dac˘a C este un circuit al lui
G, acesta este generat de un circuit C
t
al lui D
¸si ˆın plus lungimea circuitului C, l(C) satisface
l(C) = 3l(C
t
)+l(C
t
) = 4l(C
t
); deci orice circuit
al lui G este de lungime par˘a, adic˘a G este
bipartit.
Rezult˘a c˘a, de fapt, am demonstrat ¸si c˘a DCH ∝
BCH.
Cum BCH ∝ CH este evident˘a, rezult˘a c˘a teo-
rema este demonstrat˘a.
Teorem˘a. 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 ˆıncˆıt: exist˘a S stabil˘a ˆın G cu [S[ ≥ j
dac˘a ¸si numai dac˘a H este hamiltonian.
312
Fie k = [V [ −j. Putem presupune k > 0, altfel
lu˘am drept H orice graf nehamiltonian.
i) Fie A = ¡a
1
, a
2
, . . . , a
k
¦ o mult ¸ime de k vˆırfuri
distincte.
ii) Pentru orice e = uv ∈ E(G) consider˘am gra-
ful G
t
e
= (V
t
e
, E
t
e
) cu
V
t
e
= ¡(w, e, i); w ∈ ¡u, v¦, i = 1, 6¦¦ ¸si
E
t
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
t
e
a fost ales astfel ˆıncˆıt, dac˘a este sub-
graf al unui graf hamiltonian H ¸si niciunul din
vˆırfurile (w, e, i) cu w ∈ ¡u, v¦ ¸si i = 2, 5 nu are
alt vecin ˆın H decˆıt cele din G
t
e
,
313
atunci singurele posibilit˘at ¸i de traversare de
c˘atre un circuit hamiltonian al lui H a vˆırfurilor
din G
t
e
sˆınt (a) (b) ¸si (c) indicate ˆın figura
urm˘atoare (orice alt˘a parcurgere las˘a un vˆırf
netraversat):
a
b
c
Deci, dac˘a circuitul hamiltonian ”intr˘a” ˆın G
t
e
printr-un vˆırf de tip u, ((u, e, 1) sau (u, e, 6))
atunci, va ”ie¸si” tot printr-un vˆırf corespunz˘ator
lui u.
314
(iii) Pentru fiecare vˆırf u ∈ V , se consider˘a,
( ˆı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
tt
u
= ¡(u, e
u
i
, 6)(u, e
u
i+1
, 1); i = 1, p −1¦ ¸si
E
ttt
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 ∪ ∪
e∈E
V
t
e
¸si
E(H) = ∪
e∈E
E
t
e
∪ ∪
u∈V
(E
tt
u
∪ E
ttt
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
vˆırfurilor neizolate din G; deci H se poate con-
strui ˆın timp polinomial ˆın raport cu [V [.
315
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. Dac˘a H este hamiltonian, atunci exist˘a C
un circuit hamiltonian ˆın H. Cum A este o
mult ¸ime stabil˘a ˆın H, A va descompune cir-
cuitul Cˆın exact k drumuri disjuncte (cu except ¸ia
extremit˘at ¸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, rezult˘a c˘a primul vˆırf
care urmeaz˘a lui a
i
j
pe acest drum va fi (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 .
316
ˆ
In continuare, D
a
i
j
a
i
j+1
va intraˆın componenta
G
e
1
sau G
e
p
din care va ie¸si tot printr-un vˆırf
corespunz˘ator lui v
i
j
. Dac˘a vˆırful urm˘ator nu
este a
i
j+1
, se intr˘a ˆıntr-o component˘a core-
spunz˘atoare urm˘atoarei muchii incidente cu v
i
j
¸si va ie¸si din aceasta, tot printr-un vˆırf core-
spunz˘ator lui v
i
j
.
a
a
1
2
1
2
3
4
1
1
2
2
2
2
4 4
3
3
4
4
317
Rezult˘a c˘a drumului D
a
i
j
a
i
j+1
i se poate
asociaˆın mod unic vˆırful v
i
j
∈ V ¸si c˘a prima ¸si
ultima muchie a acestui drum sˆınt a
i
j
(v
i
j
, e
v
i
j
t
, x),
a
i
j+1
(v
i
j
, e
v
i
j
t
t
, x
t
) cu t = 1 ¸si t
t
= d
G
(u), x = 1,
x
t
= 6 sau t = d
G
(u), t
t
= 1, x = 6, x
t
= 1.
Aceasta implic˘a faptul c˘a v
i
j
sˆınt distincte.
Fie V

= ¡v
i
1
, v
i
2
, . . . , v
i
k
¦. Cum C este hamil-
tonian ˆın H, rezult˘a c˘a ∀e ∈ E exist˘a un drum
D
a
i
j
a
i
j+1
care trece prin G
t
e
deci exist˘a v ∈ V

incident cu e. Rezult˘a c˘a S = V −V

este sta-
bil˘aˆın G ¸si [S[ = j. Deci am obt ¸inut c˘a dac˘a H
este hamiltonian, ˆın G exist˘a o mult ¸ime stabil˘a
de cardinal j, prin urmare r˘aspunsul la SM este
da.
2. Presupunem c˘a r˘aspunsul la SM este da,
deci ˆın G exist˘a S
0
stabil˘a cu [S
0
[ ≥ j. Exist˘a
atunci S ⊆ S
0
stabil˘a cu [S[ = j.
318
Fie V

= V − S = ¡v
1
, v
2
, . . . , v
k
¦. Consider˘am
ˆın H pentru fiecare muchie e = uv ∈ E:
- cele dou˘a drumuri din G
t
e
situat ¸ia (a), dac˘a
u, v ∈ V

,
- drumul din G
t
e
situat ¸ia (b) dac˘a u ∈ V

, v / ∈ V

- drumul din G
t
e
situat ¸ia (c) dac˘a u / ∈ V

, v ∈ V

.
Dac˘a la reuniunea acestor drumuri ad˘aug˘am
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
p−1
, 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.
319
5. Problema comisului voiajor.
Dat G = (V, E) un graf ¸si o funct ¸ie de pon-
dere d : E → R
+
, s˘a se determine un circuit
hamiltonian H
0
ˆın G astfel ˆıncˆıt suma ponder-
ilor muchiilor lui H
0
s˘a fie minim˘a.
Dac˘a graful G reprezint˘a ret ¸eaua rutier˘a ˆıntre
o mult ¸ime V de localit˘at ¸i, iar funct ¸ia d avˆınd
interpretarea d(uv) = distant ¸a pe ruta direct˘a
dintre localit˘at ¸ile u ¸si v, ¸si se fixeaz˘a un cen-
tru v
0
∈ V , atunci circuitul hamiltonian H
0
reprezint˘a cel mai economic mod de vizitare
a localit˘at ¸ilor din V de c˘atre un comis voiajor
ce pleac˘a din centrul v
0
¸si se ˆıntoarce ˆın acela¸si
loc, dup˘a ce a vizitat fiecare localitate exact o
dat˘a.
Problema este interesant˘a, nu pentru rezolvarea acestei
aplicat ¸ii, mai mult sau mai put ¸in important˘a, ci pentru
c˘a ea apare ˆın numeroase probleme de optimizare dis-
cret˘a, motivate, de exemplu, de construirea circuitelor
integrate pe scar˘a mare.
320
ˆ
In cele ce urmeaz˘a, vom considera o form˘a
echivalent˘a a ei
CV Dat n ∈ Z
+
(n ≥ 3) ¸si d : E(K
n
) → R
+
,
s˘a 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
) =

e∈E(H
0
)
d(e).
2
0
. Dac˘a graful pentru care se cere rezolvarea
nu este complet, se introduc muchiile lips˘a,
atribuindu-le drept ponderi, M ∈ R
+
cu M >
[V [ max
e∈E
d(e).
Not˘am aici, c˘aˆın enunt ¸ul problemei ne-am lim-
itat numai la ”cazul simetric”, o problem˘a sim-
ilar˘a se poate considera ¸si pentru G digraf oare-
care.
3
0
.
ˆ
In studiul complexitat ¸ii acestei probleme
vom considera c˘a d(e) ∈ Z
+
.
321
Problema de decizie asociata va fi
DCV
Instant ¸˘a: n ∈ Z
+
(n ≥ 3), d : E(K
n
) →Z
+
¸si B ∈ Z
+
Intrebare: Exist˘a H
0
circuit hamiltonian ˆın K
n
astfel ˆıncˆıt d(H
0
) ≤ B ?
Teorem˘a. 6. CH ∝ DCV .
Demonstrat ¸ie: Fie G = (V, E), ([V [ = n)
reprezentˆınd datele unei probleme CH. Con-
struimˆın timp polinomial o problem˘a DCV cu
proprietatea c˘a ˆın K
n
exist˘a un circuit hamil-
tonian de pondere total˘a care nu dep˘a¸se¸ste B
dac˘a ¸si numai dac˘a G este hamiltonian.
Fie
d(vw) =



1 dac˘a vw ∈ E(G)
2 dac˘a vw ∈ E(G).
¸si consider˘am B = n.
322
Atunci ˆın K
n
exist˘a un circuit hamiltonian de
pondere ≤ n dac˘a ¸si numai dac˘a G are un cir-
cuit hamiltonian.
pondere 1
pondere 2
G
Rezult˘a, de aici, dificultatea rezolv˘arii proble-
mei CV.
323
O solut ¸ie pentru abordarea problemei CV, ar fi
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 optim˘a H
0
.
M˘asuri ale eficient ¸ei unei astfel de ”euristici”
A pot fi considerate numerele:
R
A
(n) = sup
d:E(K
n
)→R
+
d(H
0
),=0
d(H
A
)
d(H
0
)
R
A
= sup
n≥3
R
A
(n).
Evident, s-ar dori ca aceste numere s˘a fie finite.
ˆ
In cazul general, condit ¸ia ca R
A
s˘a fie finit este
la fel de dificil˘a cu aceea a rezolv˘arii eficiente
”exact” a problemei CV.
ˆ
In adev˘ar, are loc
Teorem˘a. 8. Dac˘a exist˘a un algoritm aprox-
imativ A cu timp de lucru polinomial pentru
CV, astfel ˆıncˆıt R
A
< ∞, atunci CH se poate
rezolva ˆın timp polinomial.
324
Demonstrat ¸ie: Fie A un algoritm cu timp de
lucru polinomial ¸si cu R
A
< ∞. Exist˘a deci
k ∈ Z
+
astfel ˆıncˆıt R
A
≤ k.
Fie G = (V, E) un graf arbitrar, intrare pentru
CH. Dac˘a n = [V [ atunci definim d : E(K
n
) →
Z
+
prin
d(uv) =



1 dac˘a uv ∈ E
kn dac˘a uv / ∈ E
Evident, G este hamiltonian dac˘a ¸si numai dac˘a
solut ¸ia optim˘a H
0
a lui CV astfel construit sat-
isface d(H
0
) = n.
Aplic˘am A pentru rezolvarea problemei CV. Se
obt ¸ine ˆın timp polinomial o solut ¸ie H
A
.
Dac˘a d(H
A
) ≤ kn, atunci d(H
A
) = n ¸si H
A
=
H
0
.
Dac˘a d(H
A
) > kn, atunci d(H
0
) > n.
ˆ
In adev˘ar,
presupunˆınd c˘a d(H
0
) = n, avem
d(H
A
)
d(H
0
)
≤ k,
deci d(H
A
) ≤ kd(H
0
) = kn, contradict ¸ie.
325
Rezult˘a c˘a G este hamiltonian dac˘a ¸si numai
dac˘a d(H
A
) ≤ kn, ¸si cum timpul de lucru al
lui A este polinomial, rezult˘a c˘a CH se poate
rezolva ˆın timp polinomial.
pondere 1
pondere 7k
G
Observat ¸ie. Enunt ¸ul teoremei se poate for-
mula echivalent ¸si astfel:
Dac˘a P ,= NP, atunci nu exist˘a un algoritm
aproximativ A polinomial ¸si cu R
A
< ∞.
326
VII. Abord˘ari ale unor probleme
NP-dificile pe grafuri.
1. Euristici
Se proiecteaz˘a algoritmi eficient ¸i care, de¸si nu
rezolv˘a problema, ofer˘a solut ¸ii aproximative,
care se pot analiza ¸si uneori se pot folosi ˆın
metaeuristici (de exemplu, cele care imit˘a pro-
cese din natur˘a). Pentru unele euristici se pre-
cizeaz˘a ¸si instant ¸e ale problemelor pentru care
ele funct ¸ioneaz˘a corect.
Partizanii unor astfel de abord˘ari apeleaz˘a la
a¸sa 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
327
1.1 Colorarea vˆarfurilor unui graf
Algoritmul greedy de colorare
Un mod simplu ¸si natural de a colora un graf,
cu nu foarte multe culori, este dat de urm˘atorul
algoritm:
pornind de la o ordine fixat˘a a vˆarfurilor lui G,
v
1
, v
2
, . . . , v
n
, parcurgem aceast˘a list˘a, colorˆand
fiecare vˆarf v
i
cu prima culoare disponibil˘a, adic˘a
cu cea mai mic˘a culoare (num˘ar ˆıntreg pozitiv)
nefolosit˘a de nici unul dintre vecinii lui v
i
, deja
ˆıntˆalnit ¸i pˆan˘a ˆın acel moment.
Acest˘a metod˘a poart˘a denumirea de algoritmul greedy
de colorare, datorit˘a alegerii, de fiecare dat˘a,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 ordon˘ari
a mult ¸imii vˆarfurilor).
Algoritmul construie¸ste colorarea c ce utilizeaz˘a
χ(G, π) culori,
c : ¡1, 2, . . . , n¦ −→ ¡1, 2, . . . , χ(G, π)¦.
328
Algoritmul greedy-color
- c(π
1
) ←1; χ(G, π) ←1; S
1
←¡π
1
¦;
- for i ←2 to n do
- ¡ j ←0;
- repeat
- j ←j +1;
- determin˘a primul vˆarf (conform ordon˘arii
- π), v din S
j
a. ˆı. π
i
v ∈ E(G);
- if v exist˘a 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;
- ¦
- ¦
329
S˘a observ˘am c˘a folosind algoritmul greedy nu
vom obt ¸ine niciodat˘a mai mult de 1 + ∆(G)
culori.
Rezult˘a c˘a χ(G) ≤ 1 +∆(G).
ˆ
Ins˘a ∆(G) se poateˆındep˘arta oricˆat de mult de
χ(G) ¸si exist˘a grafuri ¸si permut˘ari pentru care
algoritmul poate s˘a gre¸seasc˘a la fel de mult.
Un astfel de exemplu este urm˘atorul, unde gra-
ful G este obt ¸inut din graful bipartit complet
K
n,n
, avˆand mult ¸imea de vˆarfuri ¡1, 2, . . . , n¦ ∪
¡1
t
, 2
t
, . . . , n
t
¦, din care se elimin˘a muchiile
11
t
, 22
t
, . . . , nn
t
.
Fixˆand ordinea 1, 1
t
, 2, 2
t
, . . . , n, n
t
algoritmul va
obt ¸ine colorarea c cu c(1) = c(1
t
) = 1, c(2) =
c(2
t
) = 2, . . . , c(n) = c(n
t
) = n avˆand deci n
culori; ˆıns˘a, cum G este bipartit, χ(G) = 2.
330
1
5
1’
5’
2
2’
3
3’
4 4’
pi: 1, 1’, 2, 2’, 3, 3’, 4, 4’, 5, 5’
Este u¸sor de v˘azut c˘a, pentru orice graf G,
exist˘a totu¸si permut˘ari pentru care algoritmul
ofer˘a o colorare optimal˘a.
ˆ
Intr-adev˘ar dac˘a S
1
, S
2
, . . . , S
χ(G)
sunt clasele
de colorare corespunz˘atoare unei color˘ari opti-
male, atunci pentru orice permutare care
p˘astreaz˘a ordinea claselor (adic˘a dac˘a i < j,
v ∈ S
i
¸si w ∈ S
j
atunci v se afl˘a ˆınaintea lui w
ˆın permutare), executˆand algoritmul greedy, se
vor obt ¸ine χ(G) culori.
331
Teorem˘a. 1. Dac˘a pentru orice vw ∈ E ¸si
orice j < min¡c(v), c(w)¦ astfel ˆıncˆat first(v, j) <
first(w, j) (ˆın ordonarea π) avem c˘a vfirst(w, j) ∈
E atunci χ(G, π) = χ(G).
Condit ¸ia din enunt ¸ poate fi verificat˘a ˆın timp
liniar ˆın raport cu num˘arul 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 arat˘a c˘a, atunci cˆand condit ¸ia
este ˆındeplinit˘a, χ(G, π) = ω(G) ¸si prin urmare, ˆın acest
caz, se obt ¸ine ¸si num˘arul de clic˘a al grafului .
Pe de alt˘a parte, exist˘a grafuri pentru care aceast˘a
condit ¸ie nu va fi ˆındeplinit˘a de nici o permutare.
332
Algoritmul Dsatur { Degree of Saturation}
Acest algoritm ( Br´elaz, 1979 ) este o metod˘a
secvent ¸ial˘a dinamic˘a de colorare.
Ideea este de colora vˆarfurile pe rˆand, alegˆand
de fiecare dat˘a vˆarful cu un num˘ar maxim de
constrˆangeri privitoare la culorile disponibile aces-
tuia.
Aceast˘a abordare esteˆıntr-un fel opus˘a primeia
(cea geedy) deoarece se aleg vˆarfuri care formeaz˘a
“clici” mari ˆın raport cu vˆarfurile deja alese
(spre deosebire de mult ¸imi stabile mari ˆın cazul
greedy).
Dac˘a G este un graf ¸si c o colorare part ¸ial˘a a
vˆarfurilor lui G, definim gradul de saturat ¸ie al
unui vˆarf v, notat d
sat
(v), ca fiind num˘arul de
culori diferite din vecin˘atatea acestuia.
333
Algoritmul DSatur
- ordoneaz˘a vˆarfurile ˆın ordinea descresc˘atoare a gradelor lor;
- atribuie unui vˆarf de grad maxim culoarea 1;
- while exist˘a vˆarfuri necolorate do
- ¡ alege un vf. necol. cu gr. de satur. maxim; dac˘a acesta
- nu-i unic, alege un vf. de grad maximˆın subgr.necolorat;
- coloreaz˘a vˆarful ales cu cea mai mic˘a culoare posibil˘a;
- ¦
4
1
5
2
3
6
Numarul de culori
gasite este chiar numarul
cromatic
Teorem˘a. 2. Algoritmul DSatur garanteaz˘a
g˘asirea num˘arului cromatic pentru grafurile bi-
partite.
334
1.2 Problema comisului voiajor
Cele mai performante euristici se bazeaz˘a pe
principiul optimiz˘arii locale:
- se porne¸ste cu un circuit hamiltonian ales
aleator sau obt ¸inut cu o euristic˘a de tip con-
struct ¸ie (tour-construction heuristic), de ex-
emplu greedy;
- seˆıncearc˘a repetat imbun˘at˘at ¸iri locale, trecˆand
de la solut ¸ia curent˘a la o solut ¸ie vecin˘a din
spat ¸iul solut ¸iilor ( neighborhood search).
Cele mai cunoscute modific˘ari locale sunt a¸sa
numitele 2-opt, 3-opt sau combinat ¸ii ale aces-
tora care au condus la faimosul algoritm Lin-
Kernighan.
Figura urm˘atoare sugereaz˘a cele dou˘a operat ¸ii
2-opt ¸si 3-opt.
335
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 utilizeaz˘a
structura de date Tour care trebuie s˘a suporte (eficient)
urm˘atoarele 4 operat ¸ii:
Next(a) : ˆıntoarece vˆarful urm˘ator lui a pe circuit;
Prev(a) : ˆıntoarece vˆarful dinaintea lui a pe circuit;
Between(a, b, c) : ˆıntoarce true dac˘a la traversarea cir-
cuitului din a se ˆıntˆalne¸ste mai ˆıntˆai b ¸si apoi c;
Flip(a, b, c, d) : Parametrii verific˘a a = Next(b) ¸si d =
Next(c). Se actualizeaz˘a circuitul prin ˆınlocuirea
muchiilor ab ¸si cd cu bc ¸si ad. Se actualizeaz˘a ori-
entarea circuitului (pointerii Next ¸si Prev) ˆın mod
corespunz˘ator.
336
Operat ¸ia 3-opt se realizeaz˘a cu ajutorul a dou˘a
sau trei Flip. Pentru evitarea form˘arii de cir-
cuite disjuncte este nevoie de funct ¸ia Between.
Operat ¸ia mai complicat˘a λ-opt, utilizat˘a de al-
goritmul Lin-Kernighan se exprim˘a ca un 3-opt
¸si o secvent ¸˘a de 2-opt.
Principala problem˘aˆın implementarea operat ¸iei
Flip este de a determina eficient ¸sirul de schimb˘a-
ri ale pointerilor Next ¸si Prev (inversarea unuia
din cele dou˘a drumuri; care din ele ?).
Un algoritm λ-opt se bazeaz˘a pe conceptul de
λ-optimalitate:
Un tur este λ-optimal (sau simplu λ-opt) dac˘a
nu este posibil s˘a se obt ¸in˘a un tur mai scurt (de
cost mai mic) prin ˆınlocuirea unei mult ¸imi de
λ muchii ale sale cu alt˘a mult ¸ime de λ muchii.
Observat ¸ie: Dac˘a un tur este λ-optimal atunci
el este λ
t
-optimal pentru orice λ
t
, 2 ≤ λ
t
≤ λ.
De asemenea, un tur cu n vˆarfuri este optimal
dac˘a ¸si numai dac˘a este n-optimal.
337
Num˘arul operat ¸iilor neces˘are test˘arii tuturor
λ-schimb˘arilor posibile cre¸ste rapid pentru n
mare.
ˆ
Intr-o implementare naiv˘a, testarea unei
λ-schimb˘ari necesit˘a O(n
λ
) operat ¸ii. Ca ur-
mare, cele mai folosite valori sunt λ ∈ ¡2, 3¦
(dar se cunosc ¸si abord˘ari cu λ = 4, 5).
E dificil s˘a se estimeze ce valoare a lui λ tre-
buie aleas˘a pentru ca s˘a se obt ¸in˘a cel mai bun
compromis ˆıntre timpul de execut ¸ie ¸si calitatea
solut ¸iei modificate.
Lin ¸si Kernighan au abordat aceast˘a problem˘a
prin considerarea unei metode numit˘a variable
λ-opt: algoritmul va schimba valoarea lui λ ˆın
timpul execut ¸iei.
La fiecare iterat ¸ie seˆıncearc˘a valori cresc˘atoare
pentru λ pentru a obt ¸ine un tur mai scurt.
338
Fie T turul curent. La fiecare iterat ¸ie a al-
goritmului se caut˘a mult ¸imile de muchii X =
¡x
1
, . . . , x
r
¦ ¸si Y = ¡y
1
, . . . , y
r
¦ astfel caˆınlocind
X cu Y ˆın T, s˘a se obt ¸in˘a un tur mai bun.
Aceast˘a interschimbare o numim r-opt move.
Cele 2 mult ¸imi se construiesc element cu element. Init ¸ial
sunt vide ¸si ˆın pasul i se adaug˘a x
i
la X ¸si y
i
la Y .
Criteriile de selectare ale acestor muchii, urm˘aresc eficient ¸a
algoritmului ¸si ˆın acela¸si timpˆımbun˘at˘at ¸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
. Dac˘a t
1
este
una din extremit˘at ¸ile lui x
1
, atunci x
i
= t
2i−1
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
formeaz˘a muchiile unui drum.
Pentru schimbul secvent ¸ial se impune ¸si ca acest drum
s˘a fie ˆınchis : y
r
= t
2r
t
1
.
339
-Criteriul de admisibilitate: se va alege x
i
=
t
2i−1
t
2i
astfel ca dac˘a t
2i
se va uni cu t
1
, configu-
rat ¸ia care rezult˘a s˘a fie tur. Se aplic˘a pentru
i ≥ 3 ¸si garanteaz˘a c˘a este posibil s˘a ˆınchidem
un tur. Este introdusˆın algoritm pentru reduc-
erea timpului de execut ¸ie ¸si simplificarea imple-
ment˘arii.
-Criteriul cˆa¸stigului: se cere ca y
i
s˘a fie ales
astfel ca s˘a existe un cˆastig; G
i
trebuie s˘a fie
pozitiv; dac˘a g
i
= d(x
i
) − d(y
i
) este cˆa¸stigul
interschimb˘arii lui x
i
cu y
i
, atunci G
i
= g
1
+g
2
+
+ g
i
. Rat ¸iunea alegerii acestui criteriu este
c˘a dac˘a suma unei secvent ¸e de numere este
pozitiv˘a, atunci exist˘a o permutare circular˘a a
acestei secvent ¸e astfel ca orice sum˘a part ¸ial˘a
este pozitiv˘a.
-Criteriul dijunctivit˘at ¸ii: se impune ca mult ¸imile
X ¸si Y s˘a fie disjuncte. Aceasta simplific˘a im-
plementarea, reduce timpul de execut ¸ie ¸si d˘a
un criteriu efectiv de oprire.
340
Linia algoritmului Lin & Kernighan
1. Genereaz˘a (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
2i−1
t
2i
∈ T a.ˆı.
(a) dac˘a t
2i
e unit cu t
1
se obt ¸ine un tur T
t
¸si
(b) x
i
,= y
s
pentru tot ¸i s < i
If T
t
e mai bun ca T then fie T = 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
exist˘a.
If y
i
exist˘a 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).
341
ˆ
I n descrierea anterioar˘a ”alege” ˆınseamn˘a se-
lectarea unei alternative neˆıncercate deja (pen-
tru turul curent). De exemplu ˆın pasul 3 avem
dou˘a posibilit˘at ¸i de a alege o muchie de pe tur
incident˘a cu t
1
.
ˆ
I n pasul 6 exist˘a dou˘a alegeri pentru x
i
. Pen-
tru un y
i−1
(i ≥ 2) numai una dintre acestea va
face posibil˘aˆınchiderea turului (prin ad˘augarea
lui y
i
). Cealalt˘a alegere va conduce la aparit ¸ia
a dou˘a subtururi disjuncte. Totu¸si pentru i = 2
este permis˘a o astfel de alegere neadmisibil˘a:
t
t
t
t
x
1
x
2
2
1
3
4
y
1
y
2
Dac˘a y
2
va fi ales astfel ca t
5
s˘a fie ˆıntre t
2
¸si
t
3
, turul va putea fi ˆınchis ˆın urm˘atorul pas.
342
t
t
t
t
x
1
x
2
2
1
3
4
y
1
y
2
x
3
t
5
Atunci, t
6
poate fi ales ˆın ambele p˘art ¸i ale lui
t
5
.
Dac˘a ˆıns˘a, y
2
va fi ales astfel ca t
5
s˘a fie ˆıntre
t
4
¸si t
1
, atunci exist˘a doar o singur˘a alegere
pentru t
6
(ˆıntre t
4
¸si t
5
) ¸si t
7
trebuie s˘a se
afle ˆıntre t
2
¸si t
3
. Dar atunci t
8
trebuie s˘a
fie de cealalt˘a parte a lui t
7
; algoritmul alege
alternativa cu d(t
7
t
8
) maxim˘a.
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
343
Pa¸sii 8-12 ai algoritmului cauzeaz˘a backtracking-
ul. El este permis numai dac˘a nu se obt ¸ine o
ˆımbun˘at˘at ¸ire ¸si numai la nivelele 1 ¸si 2.
Algoritmul se termin˘a cu un tur dup˘a ce toate
valorile posibile ale lui t
1
au fost examinate f˘ar˘a
ˆımbun˘at˘at ¸ire.
Numeroase alte modific˘ari ale metodei de baz˘a
au fost examinate. De exemplu, Lin ¸si Kernighan
limiteaz˘a c˘autarea 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 c˘aut˘arii, iar altele
pentru direct ¸ionarea c˘aut˘arii.
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.
344
O alt˘a euristic˘a popular˘a pentru problemele ˆın
care funct ¸ia de distant ¸˘a satisface inegalitatea
triunghiular˘a, este dat˘a de Christofides.
Spre deosebire de cazul general cˆand am demon-
strat c˘a nu se poate spera la o euristic˘a poli-
nomial˘a A cu R
A
finit˘a, dac˘a P ,= NP, ˆın acest
caz se poate demonstra urm˘atoarea
Teorem˘a. ( Christofides,1973) Fie CV cu d
satisf˘acˆınd
∀v, w, u ∈ V (K
n
)distincte d(vw) ≤ d(vu)+d(uw).
Exist˘a un algoritm aproximativ A pentru CV
care satisface R
A
=
3
2
¸si are timp de lucru poli-
nomial.
Demonstrat ¸ie:
Consider˘am urm˘atorul algoritm A:
345
1
0
. Se determin˘a T
0
mult ¸imea muchiilor unui
arbore part ¸ial de cost minimˆın K
n
(costul
muchiei e fiind d(e) ). Problema se rezolv˘a
ˆın timp polinomial cu algoritmul lui Prim.
2
0
. Se determin˘a M
0
un cuplaj perfect ˆın sub-
graful indus de vˆırfurile de grad impar ale
arborelui T
0
¸si de cost minim. Problema se
rezolv˘a ˆın timpul O(n
3
) utilizˆınd algoritmul
lui Edmonds.
3
0
. Se consider˘a multigraful obt ¸inut din <
T
0
∪ M
0
>
K
n
, prin duplicarea muchiilor din
T
0
∩ M
0
.
ˆ
In acest multigraf exist˘a un par-
curs Eulerian ˆınchis, ale c˘arui vˆırfuri sˆınt
(v
i
1
, v
i
2
, . . . , v
i
1
). Eliminˆınd orice aparit ¸ie mul-
tipl˘a a unui vˆırf ˆın acest ¸sir cu except ¸ia
primului ¸si ultimului vˆırf, se obt ¸in vˆırfurile
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
necesit˘a O(n
2
) operat ¸ii).
346
Arborele T
o
Cuplajul M
o
Graf Eulerian
Turul H
1
2
3
4
5
6
7
8
9
10
11
A
347
H
A
este solut ¸ia aproximativ˘a a problemei CV.
Fie m = ]
n
2
| ¸si H
0
solut ¸ia optim˘a. Vom ar˘ata
(cf. Cornuejols ¸si Nemhauser) c˘a
∀n ≥ 3 d(H
A
) ≤
3m−1
2m
d(H
0
)
Presupunem c˘a H
0
= ¡v
1
v
2
, v
2
v
3
, . . . , v
n
v
1
¦ (even-
tual, schimbˆınd numerotarea vˆırfurilor). Fie
A = ¡v
i
1
, v
i
2
, . . . , v
i
2k
¦ vˆırfurile de grad impar
ale lui < T
0
>
Kn
, i
1
< i
2
< . . . < i
2k
.
Dac˘a H = ¡v
i
1
v
i
2
, v
i
2
v
i
3
, . . . , v
i
2k−1
v
i
2k
, v
i
2k
v
i
1
¦,
avem din inegalitatea triunghiular˘a, d(H) ≤ d(H
0
),
prinˆınlocuirea ponderii fiec˘arei ”corzi” d(v
i
j
v
i
j+1
)
cu suma ponderilor muchiilor de pe circuitul H
0
subˆıntinse de v
i
j
v
i
j+1
.
Pe de alt˘a parte, H este circuit de lungime
par˘a, deci este reuniunea a dou˘a cuplaje per-
fecte ˆın [A]
K
n
, M
1
∪ M
2
.
Presupunem c˘a d(M
1
) ≤ d(M
2
).
348
H
o
H
M
1
M
2
H
1
H
2
349
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 ˆıncˆıt d(M
0
) = αd(H
0
).
Evident, 0 < α ≤
1
2
.
Partit ¸ion˘am H
0
ˆın H
1
∪H
2
, punˆınd ˆın H
i
toate
muchiile lui H
0
subˆıntinse de o coard˘a 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 triunghiular˘a obt ¸inem:
d(H
i
) ≥ d(M
i
) i = 1, 2.
M˘acar unul din H
1
sau H
2
are cel mult m = ]
n
2
| muchii.
Presupunem c˘a H
1
. Deoarece d(H
1
) ≥ d(M
1
) ≥ d(M
0
) =
αd(H
0
), rezult˘a c˘a exist˘a e ∈ H
1
: d(e) ≥
α
m
d(H
0
).
Fie T arborele part ¸ial obt ¸inut din H
0
prin ˆınl˘atu-rarea
unei muchii de pondere maxim˘a. Avem
d(T) = d(H
0
) −max
e∈H
0
d(e) ≤ d(H
0
) −
α
m
d(H
0
).
Cum T
0
este arbore part ¸ial de cost minimˆın K
n
, rezult˘a
d(T
0
) ≤ d(H
0
)(1 −
α
m
).
Folosind inegalitatea triunghiular˘a,
d(H
A
) ≤ d(T
0
) + d(M
0
) ≤ d(H
0
)(1 −
α
m
) + αd(H
0
) =
(1 +
α(m−1)
m
)d(H
0
).
Cum α ≤
1
2
se obt ¸ine d(H
A
) ≤
3m−1
2m
d(H
0
) pentru n ≥ 3.
350
2. Metode care imit˘a natura
In ultimii 20 de ani s-au dezvoltat numeroase
metaeuristici inspirate din comportamentul unor
sisteme biologice sau fizice ale lumii reale.
Metaeuristica simulated annealing.
Una din metaeuristicile populare utilizate pen-
tru rezolvarea problemelor de optimizare NP-
dificile este c˘alirea simulat˘a, metod˘a inspirat˘a
din termodinamic˘a , inventat˘a independent de
Kirkpatrick, Gelatt ¸si Vechi ˆın 1983 ¸si de
ˇ
Cerny
ˆın 1985.
Ca orice metod˘a Monte Carlo, repetarea al-
goritmului cu diferit ¸i parametri de start ofer˘a
¸sansa imbun˘at˘at ¸irii solut ¸iilor g˘asite, care nu
sunt ˆın general, ¸si solut ¸ii optime.
351
ˆ
In termodinamic˘a , se poate interpreta c˘alirea
(intilnit˘a tradit ¸ional ˆın prelucrarea metalelor ˆın
fier˘ariile cu forj˘a , baros ¸si nicoval˘a ) ca un pro-
ces stohastic ce determin˘a o aranjare a atom-
ilor care minimizeaz˘a energia total˘a a unui corp.
La temperaturi ˆınalte, atomii se mi¸sc˘a liber ¸si se mut˘a cu
rapiditateˆın pozit ¸ii care cresc energia total˘a. Pe m˘asur˘a
ce temperatura este sc˘azut˘a, atomii se apropie gradual
de o dispunere laticeal˘a regulat˘a ¸si numai ocazional ˆı¸si
m˘aresc energia. Aceste cre¸steri ocazionale de energie
joac˘a un rol crucial ˆın c˘alire : ele permit ie¸sirea din
minimele locale printr-o cre¸stere temporar˘a de energie.
La temperaturi ˆınalte, astfel de salturi apar cu mare
probabilitate, iar la temperaturi joase ele apar rar. Tem-
peratura este scazut˘a lent pentru a ment ¸ine echilibrul
termal. Cˆand atomii sunt ˆın echilibru la temperatura
T, probabilitatea ca energia lor total˘a s˘a fie E este
proport ¸ional˘a cu e

E
kT
, unde k este constanta lui Bolz-
mann.
352
ˆ
In consecint ¸˘a, probabilitatea ca energia s˘a fie
E +dE poate fi exprimat˘a,
Pr(E +dE) = Pr(E) e

dE
kT
,
adic˘a probabilitatea de cre¸stere a energiei scade
odat˘a cu temperatura.
C˘alirea simulat˘a este o metod˘a computat ¸ional˘a
care imit˘a modul natural de determinare a unei
configurat ¸ii care minimizeaz˘a energia unui sis-
tem. Atunci cnd se dore¸ste minimizarea unei
funct ¸ii f : D → R, vom interpreta domeniul
de definit ¸ie al funct ¸iei, D, ca fiind mult ¸imea
configurat ¸iilor posibile ale sistemului, iar funct ¸ia
f ca fiind energia acestuia.
O variabil˘a fictiv˘a T, asociat˘a procesului de
c˘autare, va juca rolul temperaturii iar constanta
lui Bolzmann va fi considerat˘a 1.
353
Algoritm de c˘alire simulat˘a
1. Se consider˘a un plan de c˘alire:
- temperatura init ¸ial˘a T
start
- configurat ¸ia init ¸ial˘a x
start
∈ D
- temperatura final˘a T
min
- o funct ¸ie de reducere lent˘a a temperaturii
decrease (T)
- nr. maxim de ˆıncerc˘ari de ˆımbun˘at˘at ¸ire a solut ¸iei
la fiecare prag de temperatur˘a attempts
- nr. maxim de schimb˘ari ale solut ¸iei
la fiecare prag de temperatur˘a 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
¡ genereaz˘a o solut ¸ie nou˘a x
new
; na ++;
∆E ←f(x
old
) −f(x
new
);
If ∆E < 0 then ¡ x
old
←x
new
; nc ++¦
else
¡ genereaz˘a q ∈ (0, 1) un nr. aleator
if q < e

∆E
T
then ¡ x
old
←x
new
; nc ++¦
¦
¦
decrease(T)
¦
3. return x
old
354
Planul de c˘alire se stabile¸ste adeseori prin ex-
perimente (tuning ) asupra clasei de probleme
la care se aplic˘a. Modul ˆın care se permite,
la un anumit nivel de temperatur˘a , ca unele
solut ¸ii noi care nu mic¸soreaz˘a valoarea funct ¸iei
s˘a fie considerate (cu scopul p˘ar˘asirii minimelor
locale) poart˘a denumirea inventatorului : schema
Metropolis.
Pentru aplicarea c˘alirii simulate pentru rezolvarea
problemei comisului voiajor, se porne¸ste cu un
tur ales aleator, iar trecerea de la o solut ¸ie
curent˘a la o solut ¸ie vecin˘aˆın spat ¸iul solut ¸iilor se
realizeaz˘a 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).
355
VIII. GRAFURI PLANARE
1. Propriet˘at ¸i de baz˘a ale grafurilor planare
Definit ¸ie. Fie G = (V, E) un graf ¸si S o suprafat ¸˘a
ˆın R
3
. Spunem c˘a G este reprezentabil pe S
dac˘a exist˘a G
t
= (V
t
, E
t
) un graf astfel ˆıncˆıt:
a) G

= G
t
.
b) V
t
e o mult ¸ime de puncte distincte din S.
c) Orice muchie e
t
∈ E
t
este o curb˘a simpl˘a
cont ¸inut˘aˆın S care une¸ste cele dou˘a extremit˘at ¸i.
d) Orice punct al lui S este sau vˆırf al lui G
t
,
sau prin el trece cel mult o muchie a lui G
t
.
G
t
se nume¸ste reprezentare a lui Gˆın S.
Dac˘a S este un plan atunci G se nume¸ste pla-
nar iar G
t
o reprezentare planar˘a a lui G.
Dac˘a S este un plan ¸si G
t
este un graf care
satisface b) c) ¸si d) de mai sus atunci G
t
se
nume¸ste graf plan.
356
Lem˘a. 1. Un graf este planar dac˘a ¸si numai
dac˘a este reprezentabil pe o sfer˘a.
Demonstrat ¸ie. Fie G planar ¸si G
t
o reprezentare
planar˘a a sa ˆın planul π. Consider˘am un punct
x al lui π ¸si S o sfer˘a tangent˘a la π ˆın x.
Fie y punctul diametral opus al lui x pe sfer˘a.
Definim φ : π → S considerˆınd 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
t
) este
reprezentarea lui G pe sfer˘a (φ este proiect ¸ia
stereografic˘a).
x
y
pi
S
G

357
Reciproc, dac˘a G este reprezentabil pe o sfer˘a
S: se alege un punct y pe sfer˘a, se consider˘a
punctul x diametral opus lui y pe sfer˘a, se con-
struie¸ste un plan tangent π sferei S ˆın punctul
x ¸si se define¸ste ψ : S → π considerˆınd pen-
tru orice punct M al sferei, ψ(M) intersect ¸ia
dreptei yM cu planul π. Imaginea prin ψ a
reprezent˘arii lui G pe sfer˘a va fi o reprezentare
planar˘a a lui G.
Definit ¸ie. Fie G un graf plan. Dac˘aˆındep˘art˘am
punctele lui G (vˆırfurile ¸si muchiile sale) din
plan se obt ¸ine o reuniune de regiuni conexe
(orice dou˘a puncte se pot uni printr-o curb˘a
simpl˘a cont ¸inut˘a ˆın regiune) ale planului, care
se numesc fet ¸ele lui G.
Evident, orice graf plan are un num˘ar finit de
fet ¸e, dintre care una singur˘a este nem˘arginit˘a
¸si se nume¸ste fat ¸˘a exterioar˘a a lui G.
358
Frontiera unei fet ¸e este mult ¸imea muchiilor lui
G cont ¸inute ˆın ˆınchiderea acestei fet ¸e.
Orice circuit al lui Gˆımparte punctele planului
ˆın dou˘a regiuni conexe, deci orice muchie a
unui circuit al grafului G se afl˘a ˆın frontierele
a dou˘a fet ¸e.
Un graf plan, ˆımpreun˘a cu mult ¸imea fet ¸elor
sale se nume¸ste hart˘a planar˘a (uneori, ˆın aceast˘a
definit ¸ie se impune ca graful sa fie 2-conex;
atunci fet ¸ele h˘art ¸ii planare se numesc t ¸˘ari ¸si
dou˘a t ¸˘ari sˆınt vecine dac˘a frontierele lor au
m˘acar o muchie comun˘a; aceasta corespunde
aspectelor intuitive de la h˘art ¸ile geografice).
Unui graf planar i se pot asocia reprezent˘ari
planare diferite.
ˆ
In figura al˘aturat˘a sˆınt desen-
ate trei reprezent˘ari planare diferite ale aceluia¸si
graf:
359
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 recunoa¸sterea
grafurilor planare este urm˘atoarea observat ¸ie:
Lem˘a. 2. Orice reprezentare planar˘a a unui
graf poate fi transformat˘a ˆıntr-o reprezentare
diferit˘a astfel ˆıncˆıt o fat ¸˘a specificat˘a a sa s˘a
devin˘a fat ¸a exterioar˘a.
Demonstrat ¸ie: Fie G
t
o reprezentare planar˘a a lui G ¸si F
o fat ¸˘a a lui G
t
. Consider˘am G
0
o reprezentare pe sfer˘a
a lui G
t
(construit˘a, de exemplu, ca ˆın lema 1) ¸si fie
F
0
fat ¸a corespunz˘atoare a lui F (proiect ¸ia stereografic˘a
transform˘a orice fat ¸˘a tot ˆıntr-o fat ¸˘a). Alegem un punct
y din interiorul fet ¸ei F
0
, consider˘am x punctul diametral
opus pe sfer˘a lui y ¸si efectu˘am proiect ¸ia stereografic˘a
φ pe planul tangent sferei ˆın punctul x. Graful plan
G
tt
astfel obt ¸inut va avea fat ¸a exterioar˘a φ(F
0
) care are
aceea¸si frontier˘a cu fat ¸a F din reprezentarea G
t
.
360
Este aproape evident c˘a orice dou˘a reprezent˘ari
planare ale acelui¸si graf au acela¸si num˘ar de
fet ¸e. Acest lucru este mai bine precizat de
urm˘atoarea teorem˘a.
Teorem˘a. 1. (Formula lui Euler) Fie G =
(V, E) un graf plan conex cu n vˆırfuri, m muchii
¸si f fet ¸e. Atunci
f = m−n +2
Demonstrat ¸ie: Induct ¸ie dup˘a num˘arul fet ¸elor
lui G. Dac˘a f = 1, atunci G nu are circuite
¸si cum este ¸si conex, rezult˘a c˘a G este arbore,
deci m = n −1 ¸si prin urmare teorema are loc.
ˆ
In pasul inductiv, presupunem teorema adev˘ara-
t˘a pentru orice graf plan ¸si conex cu mai put ¸in
de f(≥ 2) fet ¸e. Exist˘a m˘acar o muchie e, care
nu este punte (altminteri G ar fi arbore ¸si ar
avea o singur˘a fat ¸˘a). Rezult˘a c˘a e apart ¸ine
frontierei a exact dou˘a fet ¸e ale lui G. Con-
sider˘am G
1
= G − e. Din alegerea lui e, G
1
este conex. Evident G
1
este graf plan.
361
Num˘arul fet ¸elor lui G
1
este f
1
= f − 1 (cele
dou˘a fet ¸e ale lui G vor genera ˆın G
1
o singur˘a
fat ¸˘a); ˆın plus G
1
are n
1
= n vˆırfuri ¸si m
1
= m−1
muchii.
Pentru G
1
are loc ipoteza inductiv˘a, deci f
1
=
m
1
−n
1
+2.
Substituind valorile lui f
1
, m
1
¸si n
1
se obt ¸ine
f −1 = (m−1) −n +2, adic˘a f = m−n +2.
Observat ¸ii: 1
0
Oric˘arui poliedru convex din
R
3
i se poate asocia un graf planar cu acela¸si
num˘ar de vˆırfuri ¸si muchii (se reprezinta vˆırfurile
¸si muchiile poliedrului pe o sfer˘a ¸si se execut˘a
proiect ¸ia stereografic˘a).
Figura urm˘atoare cont ¸ine grafurile planare aso-
ciate poliedrelor platonice:
362
Tetraedrul
Hexaedrul
(Cubul) Octoedrul
Dodecaedrul Icosaedrul
Steinitz ¸si Rademacher (1934) au ar˘atat c˘a un
graf planar este graful asociat unui poliedru
convex dac˘a ¸si numai dac˘a este 3-conex. Relat ¸ia
din teorema 1, este cunoscut˘a ca formula polie-
dral˘a a lui Euler ¸si precizeaz˘a num˘arul fet ¸elor
poliedrului convexˆın funct ¸ie de num˘arul vˆırfurilor
¸si muchiilor sale.
363
2
0
. Din punct de vedere algoritmic, teorema
1 are drept consecint ¸˘a imediat˘a faptul c˘a orice
graf planar este ”rar”, num˘arul muchiilor este
de ordinul num˘arului de vˆırfuri. Va rezulta c˘a
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) vˆırfuri ¸si m > 2 muchii. Atunci
m ≤ 3n −6.
Demonstrat ¸ie. Fie G
t
o reprezentare planara
a lui G. Dac˘a G
t
are o singur˘a fat ¸˘a, atunci G
t
este arbore, m = n−1 (G
t
are acela¸si num˘ar de
vˆırfuri ¸si muchii ca ¸si G), ¸si pentru n ≥ 3 ine-
galitatea are loc. Daca G
t
are m˘acar dou˘a fet ¸e,
atunci fiecare fat ¸˘a F are ˆın frontier˘a muchiile
unui circuit C(F), ¸si fiecare astfel de muchie
apart ¸ine la exact dou˘a fet ¸e. Orice circuit al
grafului are m˘acar 3 muchii, deci
364
2m ≥

F fat ¸˘a ˆın G
t
(nrul muchiilor circ. C(F)) ≥

F
3 = 3f = 3(m−n +2),
inegalitate, evident, echivalent˘a cu cea din enunt ¸.
Corolar. 2. Dac˘a G este un graf bipartit,
conex ¸si planar cu m > 2 muchii ¸si n vˆırfuri,
atunci m ≤ 2n −4.
Demonstrat ¸ie: Acela¸si rat ¸ionament ca mai sus,
cu observat ¸ia c˘a orice circuit are m˘acar 4 muchii
pentru c˘a, graful fiind bipartit, num˘arul muchi-
ilor oric˘arui circuit este par.
Corolar. 3. Dac˘a G este un graf planar conex,
atunci G are un vˆırf de grad cel mult 5.
365
Demonstrat ¸ie: Dac˘a G are mai mult de 2 muchii
aplic˘am consecint ¸a 1 astfel: fie G
t
o reprezentare
planar˘a a lui G cu n vˆırfuri ¸si m muchii; not˘am
cu n
i
num˘arul vˆırfurilor de grad i (1 ≤ i ≤
n −1) din G
t
; atunci

n−1
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 sˆınt
nenegativi, rezult˘a c˘a exist˘a i
0
, 1 ≤ i
0
≤ 5,
astfel ˆıncˆıt n
i
0
> 0, ceea ce trebuia demon-
strat.
Observat ¸ie: Grafurile K
5
¸si K
33
nu sˆınt planare.
Primul graf violeaz˘a inegalitatea din corolarul
1, cel de al doilea pe cea din corolarul 2.
366
Fie G = (V, E) un graf ¸si v ∈ V (G) astfel
ˆıncˆıt d
G
(v) = 2 ¸si vw
1
, vw
2
∈ E, w
1
,= w
2
.
Consider˘am h(G) = (V \ ¡v¦, E \ ¡vw
1
, vw
2
¦ ∪
¡w
1
w
2
¦). Se observ˘a c˘a G este planar dac˘a ¸si
numai dac˘a h(G) este planar.
(Dac˘a w
1
w
2
/ ∈ E(G) atunci pe curba simpl˘a ce
une¸ste w
1
¸si w
2
ˆıntr-o reprezentare planar˘a a lui
h(G) se introduce un nou vˆırf v; dac˘a w
1
w
2

E(G), ˆın una din fet ¸ele reprezent˘arii planare a
lui h(G) se plaseaz˘a ”suficient” de aproape de
curba w
1
w
2
un vˆırf nou v ¸si se ”une¸ste” cu
w
1
¸si w
2
. Reciproc, ˆın reprezentarea planar˘a
a lui G ¸stergem punctul v ¸si cele dou˘a muchii
vw
1
¸si vw
2
le ˆınlocuim cu reuniunea lor. Dac˘a
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 aplicˆındu-
i repetat transformarea h, pˆın˘a cˆınd graful curent
nu mai are vˆırfuri de grad 2. Din observat ¸ia an-
terioar˘a rezult˘a c˘a G este planar, dac˘a ¸si numai
dac˘a h

(G) este planar.
367
Definit ¸ie. Dou˘a grafuri G
1
¸si G
2
se numesc
homeomorfe dac˘a ¸si numai dac˘a h

(G
1
)

= h

(G
2
).
Teorem˘a. 2. (Kuratowski 1930) Un graf este
planar dac˘a ¸si numai dac˘a nu are subgrafuri
homeomorfe cu K
5
sau K
33
.
Necesitatea teoremei este evident˘a: dac˘a un
graf este planar atunci orice subgraf al s˘au este
planar. Dac˘a ar exista un subgraf G
t
al lui G
homeomorf cu K
33
sau K
5
, cum aceste dou˘a
grafuri am ar˘atat c˘a nu sˆınt planare ¸si cum
h

(G
t
) este planar dac˘a ¸si numai dac˘a G
t
este
planar rezult˘a c˘a G
t
¸si deci G nu este planar,
contrazicˆınd alegerea lui G.
Suficient ¸a se demonstreaz˘a prin induct ¸ie dup˘a
num˘arul de muchii.
368
2. Desenarea unui graf planar
Fie G un graf planar. Se pune problema tras˘arii
lui ˆın plan. Este aproape evident c˘a se pot
aproxima curbele simple ce unesc vˆırfurile, cu
linii poligonale, astfel ˆıncˆıt s˘a nu se violeze
condit ¸ia de planaritate. Are loc, totu¸si, un
rezultat mai tare demonstrat de Fary ˆın 1948
(¸si independent de Wagner ¸si Stein):
Orice graf planar are o reprezentare planar˘a cu
toate muchiile segmente de dreapt˘a
(reprezentarea Fary).
Aceast˘a teorem˘a a deschis o serie de rezul-
tate referitoare la desenarea grafurilor planare.
Pentru un mediu grafic, care permite pozit ¸ionarea
ˆın puncte de coordonate ˆıntregi ¸si trasarea de
segmente ce unesc aceste puncte, este desigur
important s˘a se demonstreze existent ¸a unei
reprezent˘ari Fary cu vˆırfuri ˆın puncte de co-
ordonateˆıntregi, ¸si ˆın acela¸si timp aria suprafet ¸ei
ocupate de reprezentare s˘a fie polinomial˘a ˆın
raport cu num˘arul n de vˆırfuri ale grafului.
369
Descriem unul dintre rezultatele de acest tip:
Teorem˘a. 3. (Fraysseix, Pach, Pollack (1988))
Orice graf planar cu n vˆırfuri are o reprezentare
planar˘a cu vˆırfuri de coordonate ˆıntregi ˆın
[0, 2n−4] [0, n−2] ¸si cu muchii segmente de
dreapt˘a.
Not˘am c˘a demonstrat ¸ia care urmeaz˘a poate fi
baza unui algoritm de complexitate O(nlogn)
pentru obt ¸inerea acestei reprezent˘ari.
Lem˘a. 3. Fie G un graf planar ¸si G
t
o reprezen-
tare planar˘a a sa. Dac˘a C
t
este un circuit al
lui G
t
ce trece prin muchia uv ∈ E(G
t
) atunci
exist˘a w ∈ V (C
t
) astfel ˆıncˆıt w ,= u, v ¸si w nu
este extremitatea nici unei corzi interioare a lui
C
t
.
370
Demonstrat ¸ie: Fie v
1
, v
2
, ..., v
n
vˆırfurile circuit-
ului C
t
ˆıntr-o parcurgere a sa de la u la v
(v
1
= u, v
n
= v). Dac˘a C
t
nu are corzi inte-
rioare lema este demonstrat˘a. Altfel, alegem
perechea (i, j) astfel ˆıncˆıt v
i
v
j
este coard˘a in-
terioar˘a a lui C
t
¸si
j−i = min¡k−l [ k > l+1, v
k
v
l
∈ E(G
t
), v
k
v
l
coard˘a interioar˘a ¦.
Atunci v
i+1
nu e incident cu nici o coard˘a in-
terioar˘a (v
i+1
v
p
cu i + 1 < p < j nu e coard˘a
interioar˘a c˘aci s-ar contrazice alegerea perechii
(ij) ¸si v
i+1
v
l
cu l < i sau l > j, nu este coard˘a
interioar˘a datorit˘a existent ¸ei coardei v
i
v
j
¸si a
planarit˘at ¸ii).
v =u
1
v
v
v
i
j
i+1
v = v
n
371
Vom demonstra teorema 4 ˆın ipoteza supli-
mentar˘a c˘a G este maximal planar : orice
muchie i s-ar ad˘auga se obt ¸ine un graf nepla-
nar (sau multigraf).
S˘a observ˘am c˘a orice fat ¸˘a a unui graf maximal
planar este un C
3
(altminteri ˆın reprezentarea
lui G cu fat ¸a exterioar˘a m˘arginit˘a de un C
n
cu
n ≥ 4 se pot introduce muchii f˘ar˘a a pierde
planaritatea grafului).
Ipoteza nu este restrictiv˘a: de la o reprezentare
a lui G ca o hart˘a planar˘a (ce se obt ¸ine aplicˆınd
de exemplu algoritmul de testare a planarit˘at ¸ii)
se trece la o hart˘a cu toate fet ¸ele triunghiului
prin insert ¸ia ˆın timp liniar de corzi ˆın circuite.
La desenarea grafului obt ¸inut, muchiile fictive
introduse nu se vor trasa.
Lem˘a. 4. Fie G maximal planar cu n ≥ 4
vˆırfuri ¸si G
t
o reprezentare planar˘a a sa cu
fat ¸a exterioar˘a u, v, w. Exist˘a o etichetare a
vˆırfurilor lui G
t
: v
1
, v
2
, ..., v
n
astfel ˆıncˆıt v
1
=
u, v
2
= v, v
n
= w ¸si pentru orice k, 4 ≤ k ≤ n
avem:
372
( i) subgraful G
t
k−1
= [¡v
1
, . . . , v
k−1
¦]
G
t, este
2-conex ¸si fat ¸a sa exterioar˘a este determinat˘a
de circuitul C
t
k−1
ce cont ¸ine uv.
(ii) ˆın subgraful G
t
k
, vˆırful v
k
este ˆın fat ¸a ex-
terioar˘a a lui G
t
k−1
¸si N
G
t
k
(v
k
) ∩ ¡v
1
, . . . , v
k−1
¦
este un drum de lungime ≥ 1 de pe circuitul
C
t
k−1
\ uv.
Demonstrat ¸ie: Fie v
1
= u, v
2
= v, v
n
= w, G
t
n
=
G, G
t
n−1
= G−v
n
. S˘a observ˘am c˘a N
G
t
n
(v
n
) este
un circuit ce cont ¸ine uv (este suficient, pen-
tru a demonstra aceasta s˘a ordon˘am N
G
t(w)
dup˘a abscisele vˆırfurilor ¸si s˘a folosim planari-
tatea maximal˘a).
v =u
1
v =w
n
v =v
2
v
k
C
k - 1
Rezult˘a c˘a pentru k = n (i) ¸si (ii) au loc.
373
Dac˘a v
k
a fost ales (k ≤ n) atunci ˆın G
t
k−1
=
G
t
−¡v
n
, . . . , v
k
¦ vecinii lui v
k
determin˘a un cir-
cuit C
t
k−1
ce cont ¸ine uv ¸si m˘argine¸ste fat ¸a ex-
terioar˘a a lui G
t
k−1
. Din lema 3, rezult˘a c˘a
exist˘a v
k−1
pe C
t
k−1
astfel ˆıncˆıt v
k−1
nu este
incident cu o coard˘a interioar˘a a lui C
t
k−1
.
Din construct ¸ie, rezult˘a c˘a v
k−1
nu este in-
cident nici cu corzi exterioare lui C
t
k−1
¸si cu
aceast˘a alegere, se observ˘a c˘a G
t
k−2
va cont ¸ine
un circuit C
t
k−2
cu propriet˘at ¸ile (i) ¸si (ii).
Not˘am c˘a etichetarea precizat˘a ˆın lema 4 se
poate construi ˆın O(n) considerˆınd o reprezentare
a lui G cu liste de adiacent ¸˘a ordonate circular,
prin fixarea vˆırfurilor v
1
, v
2
¸si v
n
¸si apoi con-
siderˆınd pentru fiecare k k ≥ 3 un vˆırf v
k
cu
proprietatea c˘a arcele cu o extremitate v
k
¸si
cealalt˘a ˆın ¡v
1
, . . . , v
k−1
¦ formeaz˘a un segment
continuuˆın lista circular˘a a lui A(v
k
) (existent ¸a
unui asemenea vˆırf fiind asigurat˘a de lema 4 ).
374
Demonstrat ¸ia teoremei 4. A¸sa cum am mai
observat, se poate presupune G maximal pla-
nar cu n(≥ 4) vˆırfuri. Fie G
t
o reprezentare
planar˘a a lui G, cu vˆırfurile v
1
, v
2
, . . . , v
n
, fat ¸a
exterioar˘a u, v, w ¸si etichetarea vˆırfurilor satis-
face condit ¸iile din lema 4.
Vom construi o reprezentare Fary a lui G cu
vˆırfurile puncte de coordonate ˆıntregi.
ˆ
In pasul k(≥ 3) al construct ¸iei dispunem de o
astfel de reprezentare a lui G
k
, ¸si ˆın plus sˆınt
satisf˘acute 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) Dac˘a w
1
, w
2
, . . . , w
m
sˆınt vˆırfurile circuitu-
lui ce m˘argine¸ste fat ¸a exterioar˘a 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
.
375
(3) Muchiile w
1
w
2
, w
2
w
3
, . . . , w
m−1
w
m
sˆınt seg-
mente de dreapt˘a paralele cu prima sau a doua
bisectoare a axelor de coordonate.
Condit ¸ia (3) asigur˘a c˘a ∀i < j dac˘a prin w
i
se
duce o paralel˘a la prima bisectoare ¸si prin w
j
o paralel˘a la a doua bisectoare,intersect ¸ia lor
este un punct de coordonate ˆıntregi.
Construim G
t
k+1
. Fie w
p
, w
p+1
, . . . , w
q
vecinii
lui v
k+1
ˆın G
t
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
376
Paralela prin w
p
la prima bisectoare intersecteaz˘a
paralela prin w
q
la a doua bisectoare, ˆıntr-un
punct P. Dac˘a din punctul P se pot trasa
segmentele Pw
i
p ≤ i ≤ q astfel ˆıncˆıt ele s˘a
fie distincte, atunci putem lua v
k+1
= P ¸si
obt ¸inem reprezentarea Fary pentru G
k+1
cu
vˆırfuri de coordonateˆıntregi, satisf˘acˆınd condit ¸iile
(1) (2) ¸si (3).
Dac˘a segmentul w
p
w
p+1
este paralel cu
prima bisectoare, atunci transl˘am cu o unitate
la dreapta toate vˆırfurile grafului G
k
, care au
abscisa ≥ x
w
p+1
. Efectu˘am apoi o translat ¸ie
cu o unitate la dreapta a tuturor vˆırfurilor cu
abscisa ≥ x
w
q
. S˘a observ˘am c˘a acum toate
segmentele P
t
w
i
cu p ≤ i ≤ q sˆınt distincte, seg-
mentele w
i
w
i+1
cu i = q, m−1 au pantele ±1 ¸si
de asemenea w
p
P
t
¸si P
t
w
q
(unde P
t
este punc-
tul obt ¸inut prin intersect ¸ia paralelelor la prima
(respectiv a doua) bisectoare, duse prin w
p
¸si
w
q
). Lu˘am v
k+1
= P
t
¸si pasul k al construct ¸iei
este terminat.
377
Condit ¸iile (1)- (3) sˆınt evident satisf˘acute. Cu
aceasta teorema este demonstrat˘a.
S˘a observ˘am c˘a determinarea vˆırfurilor care se
vor transla ˆın pasul k, poate fi organizat˘a ast-
fel ˆıncˆıt s˘a nu necesite ˆın total O(n
2
) operat ¸ii
ci numai O(nlogn), utilizˆınd structuri conven-
abile de date.
3. Grafuri plane - versiunea combinator-
ial˘a.
Vom considera ˆın cele ce urmeaz˘a doar grafuri
conexe cu m˘acar dou˘a vˆarfuri.
ˆ
In versiunea combinatorial˘a 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) f˘ar˘a puncte fixe, ¸si θ este
o permutare pe E.
378
Elementele lui E sunt gˆandite ca arce; o muchie
(neorientat˘a) este reprezentat˘a ca o pereche
e, e ∈ E de arce, inverse unul altuia.
Aplicat ¸ia

inverseaz˘a direct ¸ia.
Se dore¸ste ca aplicat ¸ia θ s˘a dea o orientare a
muchiilor din jurul unui vˆarf (ˆın sens contrar
acelor de ceasornic).
Vˆarfurile sunt ciclii permut˘arii θ. (Un ciclu
al permut˘arii θ este o submult ¸ime nevid˘a a lui
E ˆınchis˘a ˆın raport cu θ ¸si minimal˘a cu aceast˘a
proprietate).
Dac˘a not˘am cu V mult ¸imea ciclilor permut˘arii
θ atunci definim
t : E → V prin t(e) = unicul ciclu al lui θ ce cont ¸ine
e (extremitatea init ¸ial˘a a arcului e)
t : E → V prin t(e) = unicul ciclu al lui θ ce cont ¸ine
e (extremitatea final˘a a arcului e)
Se observ˘a c˘a ∀e t(e) = h(e) ¸si h(e) = t(e).
379
Dac˘a vom considera permutarea θ

: E → E definit˘a de
θ

(e) = θ(e), atunci o fat ¸˘a a lui G este un ciclu al per-
mut˘arii θ

.
Intuitiv, pentru a calcula θ

(e), invers˘am e pentru a
obt ¸ine e ¸si apoi ne rotim (ˆın sensul acelor de ceasor-
nic) ˆın jurul extremit˘at ¸ii init ¸iale a lui e. Num˘arul fet ¸elor
lui G se noteaz˘a cu f.
O component˘a conex˘a a lui G este o orbit˘a a lui E
ˆın grupul de permut˘ari generat de θ ¸si

: o mult ¸ime
nevid˘a minimal˘a cu proprietatea c˘a este ˆınchis˘a la
θ ¸si

.
Fie G un graf cu m =
1
2
[E[ muchii (neorientate), n = [V [
vˆarfuri, f fet ¸e, ¸si c componente conexe. Caracteristica
Euler a lui G se define¸ste ca fiind
χ(G) = 2c +m−n −f.
Un graf G se nume¸ste graf plan dac˘a χ(G) = 0.
Se poate demonstra c˘a pentru un graf conex ˆın definit ¸ia
tradit ¸ional˘a, cele dou˘a not ¸iuni de grafuri plane coincid
(graful neorientat construit a¸sa cum am descris mai sus
ata¸sat unui graf ˆın form˘a combinatorial˘a este graf plan
conform definit ¸iei tradit ¸ionale ¸si invers,
dac˘a pentru un graf tradit ¸ional plan conex se construie¸ste
θ conform unei orient˘ari inverse acelor de ceasornic a
muchiilor ¸si

corespunz˘atoare, graful combinatorial
obt ¸inut este plan ˆın noua definit ¸ie).
380
4. Teorema separatorului
Definit ¸ie Dac˘a G = (V, E) este un graf plan
maximal (cu toate fet ¸ele triunghiuri) atunci
dualul s˘au 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 fiec˘arei
muchii e ∈ E cele dou˘a fet ¸e ˆın frontira c˘arora
se afl˘a e.
G
G
*
Lem˘a. 1. Fie G = (V, E) este un graf plan
maximal conex , G

= (V

, E) dualul s˘au ¸si
E
t
⊆ E. Atunci (V, E
t
) este arbore part ¸ial al lui
G dac˘a ¸si numai dac˘a (V

, E −E
t
) este arbore
part ¸ial al lui G

.
381
Teorem˘a. 1. (Tarjan & Lipton, 1979)
Fie G un graf planar cu n vˆarfuri. Exist˘a o
partit ¸ie a lui V (G) ˆın clasele disjuncte A, B, S
astfel ˆıncˆat:
1. S separ˘a A de B ˆın G: G−S nu are muchii
cu o extremitate ˆın A ¸si cealalt˘a ˆın B.
2. [A[ ≤
2
3
n, [B[ ≤
2
3
n.
3. [S ≤ 4

n.
Aceast˘a partit ¸ie se poate afla ˆın timpul O(n).
Demonstrat ¸ie. Consider˘am graful conex ¸si de
asemenea consider˘am c˘a dispunem de o reprezen-
tare planar˘a (obt ¸inute cu un algoritm liniar).
Alegem un vˆarf s ¸si execut˘am o parcurgere bfs
din s numerotˆand vˆarfurile (ˆın ordinea ˆıntˆalnirii
lor ˆın aceast˘a parcurgere) ¸si atribuind fiec˘arui
vˆarf v nivelul s˘au ˆın arborele bfs construit.
382
Vom nota cu L(t), 0 ≤ t ≤ l + 1 mult ¸imea
vˆarfurilor de pe nivelul t (nivelul l +1 va fi in-
trodus ˆın scopuri tehnice ¸si este vid, ultimul
nivel este de fapt l).
Evident, fiecare nivel este un separator ˆın G
(avem muchii doar ˆıntre nivele consecutive).
Fie t
1
nivelul de la mijloc, adic˘a nivelul ce
cont ¸ine vˆarful numerotat bfs cu num˘arul de
ordine
n
2
. Mult ¸imea L(t
1
) are o parte din pro-
priet˘at ¸ile separatorului pe care ˆıl c˘aut˘am:
¸
¸
¸∪
t<t
1
L(t)
¸
¸
¸ <
n
2
¸
¸
¸∪
t>t
1
L(t)
¸
¸
¸ <
n
2
.
Dac˘a ¸si L(t
1
) ≤ 4

n, teorema are loc.
Lem˘a. 2. Exist˘a nivelele t
0
≤ t
1
¸si t
2
> t
1
a.
ˆıncˆat [L(t
0
)[ ≤

n, [L(t
2
)[ ≤

n ¸si t
2
−t
0


n.
Se alege t
0
cel mai mare num˘ar cu propriet˘at ¸ile t
0
≤ t
1
¸si
[L(t
0
)[ ≤

n (exist˘a un astfel de nivel pentru c˘a [L(0)[ =
1). La fel, exist˘a t
2
un cel mai mic num˘ar 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 vˆarfuri
deci num˘arul acestor nivele este mai mic decˆat

n, altfel
am avea mai mult de n vˆarfuri ˆın graf.
383
Consider˘am
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
Dac˘a [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 dou˘a (nu uit˘am c˘a C ¸si E au cel mult
n
2
elemente).
384
Consider˘am deci c˘a n
1
= [D[ >
2
3
n.
Dac˘a vom g˘asi un separator de tipul
1
3

2
3
pen-
tru D cu cel mult 2

n vˆarfuri, atunci , atunci
ˆıl vom ad˘auga 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 num˘ar de elemente
dintre C ¸si E cu partea mic˘a r˘amas˘a din D
pentru a obt ¸ine A, iar partea mare r˘amas˘a ˆın
D o reunim cu cealalt˘a mult ¸ime (mic˘a ) dintre
C ¸si E pentru a obt ¸ine B.
Ne ocup˘am de construct ¸ia separatorului pentru
D. Vom ¸sterge toate vˆarfurile grafului care nu-
s ˆın D cu except ¸ia lui s pe care-l unim cu toate
vˆırfurile de pe nivelul t
0
+1 (primul nivel r˘amas
ˆın D). Graful obt ¸inut ˆıl not˘am cu D ¸si este
evident planar ¸si conex.
ˆ
In plus are un arbore
part ¸ial T de diametru cel mult 2

n (orice vˆarf
este accesibil din s pe un drum de lungime cel
mult

n a¸sa cum am ar˘atat ˆın lem˘a).
385
Acest arbore se construie¸ste simplu pornind de
la ultimul nivel ¸si ad˘augˆand pentru fiecare vˆarf
o muchie incident˘a cu el ¸si cu cealalt˘a extrem-
itate pe nivelul precedent (nivelul 0 cont ¸ine
doar s).
Putem presupune c˘a D este triangulat (altfel
se triangularizeaz˘a ˆın timp liniar). Construim
dualul s˘au D

, tot ˆın timp liniar. Muchiile lui D
care nu-s pe arborele T vor fi numite t ¸epi. Din
lema 1, rezult˘a c˘a t ¸epii vor sect ¸iona un arbore
part ¸ial T

al lui D

. Consider˘am o fat ¸˘a a lui D
drept r˘ad˘acin˘a a lui T

¸si consider˘am muchiile
lui T

orientate dinspre r˘ad˘acin˘a.
Fie e = uv un t ¸ep. Exist˘a un unic drum de la
u la v ˆın T care ˆımpreun˘a cu e determin˘a un
circuit c(e).
Parcurgem t ¸epii conform unei travers˘ari dfs a
lui T

calculˆand urm˘atoarele informat ¸ii pentru
fiecare t ¸ep, recursiv de la frunze ˆın sus:
386
- I(e)- num˘arul vˆarfurilor din interiorul lui c(e).
- [c(e)[- num˘arul vˆarfurilor de pe circuitul c(e);
- o reprezentare ca list˘a a lui c(e).
Sunt posibile urm˘atoarele patru cazuri (ce core-
spund ˆıntoarcerilor din parcurgerea dfs).
Cazul 1.
u v
x
e
Suntem ˆıntr-o frunz˘a e a lui T

(ce se deter-
min˘a num˘arˆand vecinii). Atunci:
- I(e) = 0;
- [c(e)[ = 3 (D e triangulat);
- c(e) = [u, x, v].
Cazul 2.
u v
c (e )
e
u’

e

Avem calculat˘a informat ¸ia pentru t ¸epul e
t
= u
t
v, e este
un t ¸ep ˆın acela¸si triunghi ca ¸si e
t
¸si u
t
este pe circuitul
c(e); ac. rezult˘a testˆand dac˘a u nu-i pe lista c(e
t
).
Atunci:
387
- I(e) = I(e
t
);
- [c(e)[ = c(e
t
) +1;
- c(e) = [u] c(e
t
).
Cazul 3.
u v
e
u
’ e

Avem calculat˘a informat ¸ia pentru t ¸epul e
t
=
u
t
v, e este un t ¸ep ˆın acela¸si triunghi ca ¸si e
t
¸si
u
t
nu este pe circuitul c(e); ac. rezult˘a testˆand
dac˘a u e pe lista c(e
t
). Atunci:
- I(e) = I(e
t
) +1;
- [c(e)[ = c(e
t
) −1;
- c(e
t
) = [u]c(e) (deci c(e) se obt ¸ine ¸stergˆandu-
l pe u din lista c(e
t
).
Cazul 4.
u v
e
e’
y
p
x
e"
c (e )
’ c (e )
"
Avem calculat˘a informat ¸ia pentru t ¸epii e
t
= uy
¸si e” = yv iar e este un t ¸ep ˆın acela¸si triunghi
ca ¸si e
t
, e”.
388
Fie p drumul comun al lui c(e
t
) ¸si c(e”) ¸si fie x
cel˘alalt cap˘at al lui p ˆın afar˘a de y. Atunci:
- I(e) = I(e
t
)++I(e”)+[p[ −1 (toate vˆarfurile
lui p cu except ¸ia lui x sunt ˆın interiorul lui c(e));
- [c(e)[ = c(e
t
) +c(e”) −2[p[ +1;
- c(e
t
) = c
t
[x] c” unde c
t
este c(e
t
) cu p ¸sters
¸si c” este c(e”) cu p ¸sters.
Calculul lui [p[ ¸si reprezentarea lui c(e) se obt ¸in
scanˆand c(e
t
) ¸si c(e”) plecˆand din y pˆan˘aˆıntˆalnim
ultimul vˆarf comun care este x. Aceasta nu
afecteaz˘a complexitatea de timp liniar˘a.
R˘amˆane de ar˘atat c˘a exist˘a un t ¸ep e astfel ˆıncˆat
I(e) ≤
2n
1
3
∧ n
1
−(I(e) +c(e)) ≤
2n
1
3
.
Atunci se poate lua c(e) ca separator, vˆarfurile
din interior drept o clas˘a, iar cele din interior
drept cealalt˘a clas˘a.
Fie e primul t ¸epˆıntˆalnit laˆıntoarcerea din frun-
zele lui T

c˘atre r˘ad˘acin˘a, care satisface pro-
prietatea c˘a I(e) +[c(e)[ ≥
n
1
3
.
389
Atunci mult ¸imea vˆarfurilor din exteriorul lui c(e)
este de cardinal n
1
−(I(e) +[c(e)[) ≤
2n
1
3
, deci
ceea ce r˘amˆane de ar˘atat este c˘a I(e) ≤
2n
1
3
.
Aceasta rezult˘a analizˆand 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
t
)+[c(e
t
)[+1 <
n
1
3
+1 ≤
2n
1
3
(pentru n
1
≥ 3).
3. I(e) +c(e) = I(e
t
) +c(e
t
), deci e nu-i prima
muchie cu proprietatea c˘a I(e) +[c(e)[ ≥
n
1
3
.
4. I(e) +c(e) = I(e
t
) +I(e
tt
) +[p[ −1 +c(e
t
) +
c(e
tt
) −2[p[ +1 <
2n
1
3
−[p[ <
2n
1
3
.
Cu aceasta teorema separatorului este complet
demonstrat˘a.
Ilustr˘am cum poate fi folosit˘a teorema separa-
torului ˆımpreun˘a cu o metod˘a de divide & im-
pera pentru a obt ¸ine algoritmi exact ¸i cu com-
portare subexponent ¸ial˘a pentru probleme NP-
hard pe grafuri planare.
390
Consider˘am problema test˘arii dac˘a un graf pla-
nar dat admite o 3-colorare a vˆarfurilor (prob-
lem˘a cunoscut˘a ca fiind NP-complet˘a).
Pentru grafuri cu put ¸ine vˆarfuri (un num˘ar con-
stant c) se poate testa ˆın timpul O(3
c
) = O(1)
dac˘a graful are o 3-colorare.
Pentru grafuri planare cu num˘arul n de vˆarfuri
mai mare decˆat c, construimˆın timp liniar O(n),
a¸sa cum ne asigur˘a teorema separatorului, parti-
t ¸ia A, B, C a mult ¸imii vˆarfurilor sale cu [A[, [B[ ≤
2n
3
¸si [C[ ≤ 4

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

n)
funct ¸ii
posibile definite pe C ¸si cu valori ˆın ¡1, 2, 3¦
se testeaz˘a dac˘a este 3-colorare a subgrafului
indus de C ¸si dac˘a poate fi extins˘a la o 3-
colorare a subgrafului indus de A∪C ˆın G ¸si la
o 3-colorare a subgrafului indus de B ∪ C ˆın G
(recursiv).
391
Timpul de lucru al acestui algoritm, T(n), va
satisface recurent ¸a
T(n) =
_
O(1) dac˘a n ≤ c;
O(n) +2
O(

n)
(O(

n) +2T(
2n
3
)) dac˘a n > c.
Se obt ¸ine T(n) = 2
O(

n)
, destul de bun pentru
probleme de dimensiuni rezonabile.
Este posibil ˆıns˘a ca notat ¸ia O(.) s˘a ascund˘a
constante mari !
Exist˘a ¸si alte abord˘ari pentru obt ¸inerea de al-
goritmi performant ¸i pentru problemele dificile
pe grafuri planare. Descriemˆın continuare una
din ele.
392
Definit ¸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 ˆıncˆat:
1. ∪
i∈V (T)
X
i
= V (G);
2. ∀vw ∈ E(G) ∃i ∈ V (T) astfel ˆıncˆat v, w ∈ X
i
;
3. ∀v ∈ V (G) mult ¸imea vˆarfurilor ¡i[v ∈ X
i
¦ in-
duce un subarbore ˆın T .
L˘at ¸imea unei t-descompuneri ¡X
i
[i ∈ V (T)¦ se
define¸ste ca fiind max
i∈V (T)
([X
i
[ −1).
t-l˘at ¸imea unui graf G este l˘at ¸imea minim˘a a
unei t-descompuneri a lui G ¸si se noteaz˘a cu
tw(G).
393
Definit ¸ie O b-descompunere a unui graf G =
(V (G), E(G)) este o pereche (T, τ), unde T
este un arbore cu vˆarfurile de gradul 1 sau 3
¸si τ este o biject ¸ie de la mult ¸imea vˆarfurilor
pendante ale lui T la E(G).
Ordinul unei muchii e a lui T este num˘arul
vˆarfurilor v ∈ V (G) astfel ˆıncˆat exist˘a vˆarfurile
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-l˘at ¸imea unui graf G este l˘at ¸imea minim˘a
a unei b-descompuneri a lui G ¸si se noteaz˘a
cu bw(G). (dac˘a [E(G)[ ≤ 1 se define¸ste b-
l˘at ¸imea lui G ca fiind 0; grafurile nule nu au
b-descompuneri; dac˘a [E(G)[ = 1 atunci G are
o b-descompunere care const˘a dintr-un arbore
cu un nod, a c˘arui l˘at ¸ime se consider˘a 0).
394
Teorem˘a. 2. (Robertson & Seymour, ’90)
Pentru orice graf conex G cu E(G) ≥ 3 avem
bw(G) ≤ tw(G) +1 ≤
3
2
bw(G).
Teorem˘a. 3. (Fomin & Thilikos, 2003)
Pentru orice graf planar G avem
bw(G) ≤
_
4.5[V (G)[ ≤ 2.122
_
[V (G)[.
Teorem˘a. 4. (Fomin & Thilikos, 2003)
Fie Π o problem˘a de optimizare care este re-
zolvabil˘a pe grafuri cu b-l˘at ¸imea cel mult l ¸si
ordinul nˆın timpul f(l)g(n). Atunci pe grafurile
planare de ordin n problema Π este rezolvabil˘a
ˆın timpul O(f(2.122

n)g(n) +n
4
).
Demonstrat ¸ia rezult˘a utilizˆand teorema ante-
rioar˘a ¸si un algoritm de complexitate O(n
4
) dat
de Robertson & Seymour pentru determinarea
unei b-descompuneri optimale a unui graf.
395
De exemplu, se ¸stie c˘a problema determin˘arii
unei mult ¸imi stabile de cardinal maximˆıntr-un
graf cu t-l˘at ¸imea l se poate rezolva ˆın timpul
O(2
l
n). Deci, pentru grafuri cu b-l˘at ¸imea cel
mult l se poate rezolva ˆın O(2
3
2
l
n).
Obt ¸inem c˘a problema determin˘arii unei mult ¸imi
stabile de cardinal maximˆıntr-un graf planar se
poate rezolva ˆın timpul O(2
3.182

n
n +n
4
).
Timpii obt ¸inut ¸i sunt mai buni decˆat metodele
bazate pe teoremele de separare !
E N D
396
Seminarii
Setul de probleme 1
Problema 1. Un graf G se nume¸ste rar dac˘a num˘arul
s˘au de muchii m este mai mic decit
n
2
logn
, unde n reprezint˘a
num˘arul de virfuri. O justificare este aceea c˘a matricea
de adiacent ¸˘a A a grafului, care ocup˘a n
2
locat ¸ii de mem-
orie, poate fi intotdeauna reprezentat˘a folosind O(
n
2
logn
),
locat ¸ii de memorie astfel incit r˘aspunsul la o intrebare ”
A(i, j) = 1 ? ” s˘a se fac˘a in O(1). Descriet ¸i o astfel de
schem˘a de reprezentare. (4 puncte)
Problema 2. Diametrul unui graf este lungimea
maxim˘a a unui drum de lungime minim˘a intre dou˘a vir-
furi ale grafului. Dou˘a virfuri care sunt extremit˘at ¸ile
unui drum minim de lungime maxim˘a in graf se numesc
diametral opuse. Demonstrat ¸i c˘a urm˘atorul algoritm
determin˘a o pereche de virfuri diametral opuse intr-un
arbore T:
• dintr-un virf oarecare se execut˘a o parcurgere BFS a
lui T; fie u ultimul virf vizitat;din virful u se execut˘a o
397
parcurgere BFS a lui T; fie 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
r˘ad˘acin˘a. Un algoritm simplu de desenare a lui T poate
fi descris recursiv dupa cum urmeaz˘a.
- Folosim ca suport o gril˘a (liniatura unui caiet de mate);
virfurile se plaseaz˘a in punctele de intersect ¸ie ale grilei.
- Desen˘am subarborele sting; Desen˘am subarborele drept.
- Plas˘am cele dou˘a desene unul ling˘a altul la distant ¸˘a
pe orizontal˘a doi ¸si cu r˘ad˘acinile la aceea¸si in˘alt ¸ime.
- Plas˘am r˘ad˘acina cu un nivel mai sus la jum˘atatea
distant ¸ei pe orizontal˘a dintre cei doi copii.
- Dac˘a avem doar un copil plas˘am r˘ad˘acina cu un nivel
mai sus la distant ¸a 1 fat ¸˘a de copil (la stinga sau la
dreapta dup˘a cum este acesta).
Descriet ¸i cum se poate asocia pentru fiecare nod v al ar-
borelui T (folosind algoritmul de mai sus) coordonatele
(x(v), y(v)) reprezentind punctul de pe gril˘a unde va fi
desenat.(3 puncte)
398
Problema 4. Intr-o sesiune de examene s-au inscris n
student ¸i care trebuie s˘a sust ¸in˘a examene dintr-o mult ¸ime
de m discipline. Intrucit examenele se sust ¸in in scris, se
dore¸ste ca tot ¸i student ¸ii care dau examen la o disciplin˘a
s˘a fac˘a acest lucru simultan. De asemenea, regulamen-
tul de desf˘a¸surare a examenelor interzice ca un student
s˘a dea dou˘a examene in aceea¸si zi. Pentru fiecare stu-
dent se dispune de lista disciplinelor la care dore¸ste s˘a
fie examinat.
S˘a se descrie construct ¸ia unui graf G care s˘a ofere r˘aspunsul
la urm˘atoarele dou˘a intreb˘ari prin determinarea unor
parametri asociat ¸i (care se vor preciza):
- care e num˘arul maxim de examene ce se pot organiza
in aceea¸si zi ?
- care e num˘arul minim de zile necesare organiz˘arii tu-
turor examenelor? (3 puncte)
399
Setul de probleme 2
Problema 1. Fie G = (S, T; E) un graf bipartit ¸si
X ∈ ¡S, T¦. Graful G se nume¸ste X-lant ¸ dac˘a vˆarfurile
mult ¸imii X pot fi ordonate X = ¡x
1
, x
2
, . . . , x
p
¦ (unde
p = [X[) astfel ˆıncˆat N
G
(x
1
) ⊇ N
G
(x
2
) ⊇ . . . ⊇ N
G
(x
p
).
a) Demonstrat ¸i c˘a G este X-lant ¸ dac˘a ¸si numai dac˘a
este X-lant ¸ , unde X = ¡S, T¦ −¡X¦. (2 puncte)
b) Dac˘a 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 s˘a testeze dac˘a G
este S-lant ¸ . (2 puncte)
Problema 2. Un graf G se nume¸ste autocomplemen-
tar dac˘a este izomorf cu complementul s˘au : G · G.
a) Demonstrat ¸i c˘a un graf autocomplementar este conex
si c˘a ordinul s˘au este multiplu de 4 sau multiplu de 4
plus 1.(2 puncte)
b) Demonstrat ¸i c˘a pentru orice graf G exist˘a 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)
400
Problema 3. O echip˘a de doi programatori L(azy)
¸si T(hinky) prime¸ste ca sarcin˘a s˘a determine un drum
intre 2 noduri date, care s˘a satisfac˘a anumite cerint ¸e,
intr-un graf G dat, despre care se ¸stie c˘a este rar :
[E(G)[ = O([G[). Programatorul L propune ca solut ¸ie
generarea (cu backtracking) a tuturor drumurilor dintre
cele dou˘a noduri ¸si selectarea celui convenabil, motivˆand
c˘a intr-un astfel de graf nu pot exista prea multe dru-
muri intre dou˘a noduri fixate (sunt put ¸ine muchii ¸si deci
put ¸ine posibilit˘at ¸i de ramificare; de ex., intr-un arbore
exist˘a exact un drum intre orice dou˘a noduri fixate).
Programatorul T nu-i de acord ¸si d˘a urm˘atorul con-
traexemplu: se consider˘a graful H = K
2
P
n−1
(n un
intreg mare); o pereche de virfuri de grad 2 adiacente
din H se une¸ste cu un virf nou x, iar cealalt˘a pereche
de virfuri de grad 2 adiacente din H se une¸ste cu un virf
nou y; graful obt ¸inut, G, are propriet˘at ¸ile din problema
de rezolvat ¸si totu¸si num˘arul drumurilor de la x la y in G
este prea mare. Ajutat ¸i-l pe L s˘a int ¸eleag˘a contraexem-
plul, desenind graful G, ar˘atind c˘a este rar ¸si estimind
num˘arul drumurilor de la x la y. (2 puncte)
401
Problema 4. Presupunem c˘a un turneu (di-
graf cu proprietatea c˘a orice 2 virfuri sunt unite
exact printr-un arc) are un circuit C de lungime
n ≥ 4.
Ar˘atat ¸i c˘a pentru orice virf x al lui C se pot
determina in timpul O(n), inc˘a dou˘a virfuri ale
lui C y ¸si z astfel incit (x, y, z) este un circuit
de lungime 3. (2 puncte)
402
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
orient˘ari posibile ale muchiilor sale consider˘am una oare-
care ¸si cu ajutorul ei construim matricea de incident ¸˘a
virf-arc Q ∈ ¡0, 1, −1¦
nm
definit˘a prin :
(Q)
ve
= −1, dac˘a v este extremit. init ¸ial˘a a arcului e,
(Q)
ve
= 1, dac˘a v este extremitatea final˘a a arcului e
(Q)
ve
= 0 in toate celelalte cazuri.
Demonstrat ¸i c˘a matricea A+QQ
T
este o matrice diago-
nal˘a ¸si precizat ¸i semnificat ¸ia combinatorie a elementelor
ei. (3 puncte)
Problema 2. Fie G un graf oarecare ¸si not˘am cu b(G)
graful obt ¸inut din G prin inserarea cite unui nou nod pe
fiecare muchie. Demonstrat ¸i c˘a b(G) este un graf bipar-
tit. (2 puncte)
Demonstrat ¸i c˘a G ¸si H sunt izomorfe dac˘a ¸si numai
dac˘a b(G) este izomorf cu b(H). Deducet ¸i c˘a testarea
izomorfismului a 2 grafuri oarecare se reduce polino-
mial la testarea izomorfismului a 2 grafuri bipartite (2
puncte)
403
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).
Dac˘a G este un graf cu n virfuri reprezen-
tat prin matricea de adiacent ¸˘a, ar˘atat ¸i c˘a se
poate testa dac˘a este graf paianjen folosind
doar O(n) probe ale matricii de adiacent ¸˘a.
(o prob˘a este un acces la un element oarecare
al matricii, f˘ar˘a a-l memora explicit pentru uti-
liz˘ari ulterioare). (4 puncte)
404
Problema 4. Asociem unui arbore binar T de ordin
n cu r˘ad˘acina r un drum P
3n
orientat procedind astfel:
fiec˘arui nod v al lui T i se asociaz˘a trei noduri cu acela¸si
nume v pe care le desemn˘am prin v
1
, v
2
, v
3
; dac˘a v nu
are in T descendent sting, atunci se introduce arcul v
1
v
2
in P
3n
; dac˘a v nu are in T descendent drept, atunci se
introduce arcul v
2
v
3
in P
3n
; dac˘a 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
; dac˘a 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
.
Dac˘a se parcurge drumul P
3n
de la extremitatea init ¸ial˘a
r
1
la extremitatea final˘a r
3
¸si se listeaz˘a numele virfurilor
in ordinea parcurgerii lor se obt ¸ine un ¸sir in care numele
fiecarui virf al lui T apare exact de trei ori.
Demonstrat ¸i c˘a :
dac˘a din acest ¸sir se ret ¸ine doar prima aparit ¸ie a fiec˘arui
nume se obt ¸ine parcurgerea pre-order a arbrelui T;
dac˘a din acest ¸sir se ret ¸ine doar a doua aparit ¸ie a fiec˘arui
nume se obt ¸ine parcurgerea in-order a arbrelui T;
dac˘a din acest ¸sir se ret ¸ine doar a treia aparit ¸ie a fiec˘arui
nume se obt ¸ine parcurgerea post-order a arbrelui T.
(3 puncte)
405
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 vˆarfurilor lui
G se nume¸ste d-m˘arginit˘a dac˘a ˆın digraful G

, obt ¸inut
din G prin ˆınlocuirea fiec˘arei muchii ¡v
i
j
, v
i
k
¦ cu arcul
(v
i
min¡j,k¦
, v
i
max¡j,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

, testeaz˘a
ˆın timpul O(n + m) dac˘a G are o ordonare d-m˘arginit˘a
(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) = min¡d ∈ N[ G are o ordonare d-m˘arginit˘a ¦. ( 2 puncte)
c) Ar˘atat ¸i c˘a orice graf G admite o colorare a vˆarfurilor
cu o(G) +1 culori. (2 puncte)
Problema 2. Demonstrat ¸i algoritmic c˘a mult ¸imea
muchiilor oric˘arui graf complet K
n
(n ≥ 2) poate fi
partit ¸ionat˘a ˆın ¸
n
2
| submult ¸imi, fiecare dintre acestea
reprezentˆand mult ¸imea muchiilor unui arbore (subgraf
al lui K
n
). Exemplu. K
5
, ¸
5
2
| = 3 :
(4 puncte)
406
Problema 3. Pentru un graf conex G se
execut˘a urm˘atorul algoritm:
- Se init ¸ializeaz˘a o coad˘a Q cu graful G.
- Cˆat timp coada Q nu-i vid˘a:
- se extrage ˆın H graful din capul cozii,
- se determin˘a o mult ¸ime de articulat ¸ie A ⊆
V (H), minimal˘aˆın raport cu incluziunea (nici o
submult ¸ime proprie nu-i mult ¸ime de articulat ¸ie
ˆın H), ¸si dac˘a V
1
, . . . , V
k
(k ≥ 2) sunt mult ¸imile
de vˆarfuri ale componentelor conexe ale grafu-
lui H −A, atunci
- se adaug˘a la Q grafurile [A∪ V
1
]
H
, . . . , [A∪ V
k
]
H
.
Se observ˘a c˘a dac˘a graful curent este complet atunci nu se adaug˘a
nimic ˆın coada Q.
a) Ar˘atat ¸i c˘a fiecare graf introdus ˆın coad˘a
este conex.(2 puncte)
b) Demonstrat ¸i c˘a num˘arul total al grafurilor
introduseˆın coada Q nu dep˘a¸se¸ste [G[
2
. (2 puncte)
407
Setul de probleme 3”
Problema 1. Fie ( clasa grafurilor G cu pro-
prietatea c˘a orice arbore dfs al lui G este un
drum (pentru orice ordonare a vˆarfurilor lui G
¸si orice ordonare a listelor de adiacent ¸˘a aso-
ciate acestor vˆarfuri, orice aplicare a unui dfs
genereaz˘a un drum hamiltonian ˆın G).
Demonstrat ¸i c˘a
( = ¡K
1
, K
2
¦ ∪ ∪
n≥3
¡K
n
, C
n
, K
n,n
¦.
(1+3 puncte)
Problema 2. Fie D = (V, E) un digraf (f˘ar˘a bucle) de
ordin n cu mult ¸imea vˆarfurilor V = ¡1, 2, . . . , n¦. Con-
sider˘am urm˘atorul algoritm:
1. SK ← ∅;
for i = 1 to n do \\ stˆanga → dreapta
if (,∃j ∈ SK astfel ˆıncˆat ji ∈ E) then SK ← SK ∪ ¡i¦;
2. for i = n to 1 do \\ dreapta → stˆanga
if i ∈ SK ∧ (∃j ∈ SK astfel ˆıncˆat ji ∈ E) then SK ←SK \ ¡i¦;
3. output SK.
408
Demonstrat ¸i c˘a SK este un seminucleu ˆın D: SK este
nevid˘a, stabil˘a ˆın G[D] (graful suport al digrafului D) ¸si
orice vˆarf din v ∈ V \ SK e accesibil ˆın D, dintr-un vˆarf
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 fiind [E[).
(2+2 puncte)
Problema 3. Ar˘atat ¸i c˘a dac˘a G = (S, T; E) este un
graf bipartit cu urm˘atoarele propriet˘at ¸i:
- [S[ = n; [T[ = m (n, m ∈ N

);
- ∀t ∈ T [N
G
(t)[ > k > 0;(pentru un k oarecare — mai
mic decˆat n);
- ∀t
1
, t
2
∈ T dac˘a t
1
,= t
2
atunci N
G
(t
1
) ,= N
G
(t
2
);
- ∀t
1
, t
2
∈ T dac˘a 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

definim graful G
n
= (V, E) astfel:
— V = ¡(i, j)[1 ≤ i ≤ n, 1 ≤ j ≤ n¦,
— (i, j)(k, l) ∈ E (pentru dou˘a vˆarfuri (i, j) ¸si (k, l) dis-
tincte din V ) dac˘a ¸si numai dac˘a i = l sau j = k.
Demonstrat ¸i c˘a G
n
este universal pentru familia arborilor
de ordin n:
oricare ar fi T un arbore de ordin n exist˘a A ⊂ V astfel
ˆıncˆat T

= [A]
G
n
.
(2+2 puncte)
409
Setul de probleme 4
Problema 1. Prezentat ¸i (pe cel mult o pagin˘a ) o
problem˘a interesant˘a din domeniul IT care s˘a necesite
rezolvarea eficient˘a 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 nume¸ste
st-inevitabil˘a dac˘a exist˘a S ⊂ V astfel incit s ∈ S, t ,∈ S
¸si A = ¡e ∈ E[e = uv, u ∈ S v ,∈ S¦. Ar˘atat ¸i c˘a num˘arul
maxim de mult ¸imi st-inevitabile disjuncte dou˘a cite dou˘a
este egal cu distant ¸a in G de la s la t ¸si c˘a 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 s˘au cu proprietatea c˘a N
G
(v) ,= V − ¡v¦. Dac˘a
pentru A ⊂ V not˘am cu N
G
(A) = ∪
a∈A
N
G
(a) − A, se
observ˘a c˘a exist˘a mult ¸imi de virfuri A care satisfac pro-
priet˘at ¸ile : v ∈ A, [A]
G
este conex, N = N
G
(A) ,= ∅ ¸si
R = V −(A∪ N) ,= ∅ (de exemplu, A = ¡v¦).
410
a) Demonstrat ¸i c˘a dac˘a se consider˘a o mult ¸ime
A maximal˘a (in raport cu incluziunea) satisf˘acind
proprietat ¸ile enunt ¸ate, atunci orice virf din R
este adiacent cu orice virf din N.(2 puncte)
b) Dac˘a, in plus, graful G este ¡C
k
¦
k≥4
-free,
atunci mult ¸imea N de la punctul a) are propri-
etatea c˘a este clic˘a in graful G.(2 puncte)
c) Deducet ¸i c˘a singurele grafuri ¡C
k
¦
k≥4
-free,
regulate ¸si conexe sunt grafurile complete.(2
puncte)
Problema 4. Ar˘atat ¸i c˘a se poate utiliza
o parcurgere dfs pentru a determina un cir-
cuit par intr-un graf 3-regulat oarecare. (2
puncte)
411
Setul de probleme 5
Problema 1. S˘a se arate c˘a un graf G este bipartit
dac˘a ¸si numai dac˘a orice subgraf indus H al lui G satis-
face proprietatea 2α(H) ≥ [H[ (3 puncte)
Problema 2. Demonstarat ¸i c˘a intr-un graf bipartit G
cu n virfuri ¸si m muchii avem inegalitatea 4m ≤ n
2
. (2
puncte)
Descriet ¸i un algoritm care s˘a testeze dac˘a un graf cu n
virfuri ¸si m muchii este complementarul unui graf bipar-
tit in timpul O(n +m) (3 puncte)
Problema 3. Ar˘atat ¸i c˘a 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 c˘a in orice graf conex G =
(V, E) exist˘a o mult ¸ime stabil˘a S astfel incit graful bipar-
tit H = (S, V −S; E
t
) este conex, unde E
t
= E−1
2
(V −S)
. Deducet ¸i c˘a α(G) ≥
[G[−1
∆(G)
pentru orice graf conex G.
(3 puncte)
412
Setul de probleme 6
Problema 1. Pentru d ∈ N

se consider˘a graful G
d
=
K
2
K
2
... K
2
. ¸¸ .
d factori
.
S˘a se determine ordinul, dimensiunea ¸si diametrul lui G
d
.
(2 puncte)
S˘a se arate c˘a G
d
este bipartit ¸si s˘a se determine α(G
d
).
(2 puncte)
Problema 2. Un graf cu cel put ¸in trei virfuri se
nume¸ste confident ¸ial conex dac˘a pentru orice trei virfuri
distincte a, b, c ale grafului exist˘a un drum de la a la
b astfel incit niciunul dintre virfurile interne ale acestui
drum (dac˘a exist˘a astfel de virfuri) nu este c sau un
vecin al lui c. Un exemplu banal de graf confident ¸ial
conex este graful K
n
cu n ≥ 3.
Demonstrat ¸i c˘a un graf conex G = (V, E), cu cel put ¸in
trei virfuri ¸si care nu-i complet, este confident ¸ial conex
dac˘a ¸si numai dac˘a au loc urm˘atoarele dou˘a condit ¸ii :
1. Pentru orice virf v mult ¸imea N(v) = ¡w ∈ V [w ,=
v, vw ,∈ E¦ este nevid˘a ¸si induce un graf conex.
2. Orice muchie a grafului este cont ¸inut˘a 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 fiecare clauz˘a C
i
este
disjunct ¸ia a doi literali C
i
= v
i
∨w
i
, literalii reprezentind
variabile sau negat ¸iile acestora. Problemei i se asociaz˘a
un digraf G cu V (G) = ¡x
1
, x
2
, ., x
n
, x
1
, x
2
, ...., x
n
¦ (adic˘a
tot ¸i literalii posibili) ¸si in care pentru fiecare clauz˘a C
i
=
v
i
∨ w
i
se adaug˘a arcele v
i
w
i
¸si w
i
v
i
(folosind, evident,
convent ¸ia referitoare la dubla negare). Demonstrat ¸i c˘a
exist˘a o atribuire a valorilor de adev˘ar ¸si fals pentru
variabilele booleene, astfel incit fiecare clauz˘a s˘a fie
adev˘arat˘a, dac˘a ¸si numai dac˘a digraful G are poprietatea
c˘a 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 propriet˘at ¸ii de mai sus. (2 puncte)
414
Setul de probleme 7
Problema 1. Gossip Problem. Intr-un grup de n
”doamne”, fiecare cunoa¸ste o parte dintr-o birf˘a pe care
celelalte n-o cunosc. Ele comunic˘a prin telefon ¸si orice
apel telefonic intre orice dou˘a doamne are ca efect fap-
tul c˘a fiecare din ele va afla tot ce cunoa¸ste cealalt˘a.
(a) Descriet ¸i o schem˘a de a da telefoanele astfel incit
intr-un numar minim f(n) de apeluri telefonice, fiecare
”doamn˘a” va afla tot ce ¸stiu celelalte.
Indicat ¸ie: Ar˘atat ¸i c˘a f(2) = 1, f(3) = 3, f(4) = 4 ¸si
pentru n > 4 f(n) = 2n − 4 (u¸sor, indicind scheme de
telefonare cu aceste numere de apeluri). Incercat ¸i sa
argumentat ¸i c˘a 2n −4 este chiar num˘arul minim.
(2 puncte pentru descrierea schemei, 1 punct pentru
demonstrarea optimalit˘at ¸ii)
(b) Modelat ¸i problema in limbajul teoriei grafurilor: schemei
de telefonare ii va corespunde un ¸sir de muchii iar cunoa¸sterea
comun˘a 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 dou˘a funct ¸ii definite
pe multimea arcelor sale, a : E(D) −→R
+
¸si b : E(D) −→
R

+
. Descriet ¸i un algoritm eficient 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 c˘a exist˘a
un element x in mult ¸imea S astfel incit A
1
− ¡x¦, A
2

¡x¦, ..., A
n
−¡x¦ s˘a fie ¸si ele distincte. (2 puncte)
Problema 4. Fie G un graf ¸si c : E(G) −→ R
+
o
funct ¸ie de capacitate a muchiilor. Oric˘arui drum din
graf cu m˘acar o muchie i se asociaz˘a locul ingust ca
fiind muchia sa de capacitate minim˘a . Descriet ¸i un
algoritm eficient care s˘a determine pentru dou˘a 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 nenegativ˘a, ¸si s ,= t dou˘a vˆarfuri fixate. Pentru
rezolvarea problemei P1 (a determin˘arii unui drum de cost a minim
de la s la t ˆın G) se propune urm˘atorul algoritm:
1. for each i ∈ V do p
i
←0;
i ←s;ˆınainte(s) ←s;
2. while i ,= t do
if ∃j ∈ V astfel ˆıncˆat p
i
−p
j
= a
ij
then
¡ ˆınainte(j) ←i; i ←j; ¦
else
¡ p
i
←min
ij∈E
(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 c˘a dac˘a pasul 2 se termin˘a atunci afirmat ¸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 nenegativ˘a. Pentru orice subarbore
T
t
al lui T se define¸ste ponderea sa, w(T
t
), ca fiind suma
ponderilor vˆarfurilor sale.
Ar˘atat ¸i c˘a exist˘a un vˆarf v
0
∈ V astfel ˆıncˆat nici unul
din subarborii lui T −v
0
nu are ponderea mai mare decˆat
1
2
w(T).(1 punct)
Descriet ¸i un algoritm cu timpul O([V [) pentru g˘asirea lui
v
0
. (2 puncte)
417
Problema 3. Dac˘a G ¸si H sunt dou˘a gra-
furi, notat ¸ia G → H semnific˘a faptul c˘a exist˘a
f : V (G) → V (H) astfel ˆıncˆat ∀ uv ∈ E(G)
avem c˘a f(u)f(v) ∈ E(H) (exist˘a un morfism
de grafuri de la G la H).
Justificat ¸i corectitudinea unui algoritm care s˘a
r˘aspund˘a ˆı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. Dac˘a H este un graf, atunci
q(H) noteaz˘a num˘arul componentelor conexe
de ordin impar ale lui H, iar ν(H) cardinalul
maxim al unui cuplaj al lui H . Demonstrat ¸i c˘a
pentru orice graf G are loc relat ¸ia:
max
S⊂V (G)
(q(G−S) −[S[) = [V (G)[ −2ν(G) .
(Se presupune cunoscut˘a teorema lui Tutte)(4 puncte)
418
Setul de probleme 7”
Problema 1. Determinat ¸i num˘arul cuplajelor perfecte
ale grafului:
1 2 3 2n-1
2n
(3 puncte)
Problema 2.
a) Fie D = (V, E) un digraf aciclic cu n vˆarfuri ¸si m arce
¸si A, B ⊂ V dou˘a mult ¸imi disjuncte, stabileˆın G(D) (gra-
ful suport al digrafului). Fie d(A, B) := min¡d(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, dac˘a acesta exist˘a).
Descriet ¸i un algoritm de complexitate C(n +m) pentru
aflarea unei mult ¸imi maximale 1 de drumuri disjuncte
(cu mult ¸imile de vˆarfuri disjuncte) de la A la B, fiecare
de lungime d(A, B) (maximalitatea lui 1 este ˆın raport
cu incluziunea, adic˘a nu mai exist˘a un alt drum de la A
la B care s˘a aib˘a lungimea d(A, B) ¸si s˘a fie disjunct de
orice drum din 1).
b) Ar˘atat ¸i cum poate fi folosit algoritmul de la a) pen-
tru implementarea algoritmului lui Hopcroft & Karp de
aflare 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
vˆarfuri 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 (dac˘a arcul e
j
iese din i atunci a
ij
= 1, dac˘a arcul
e
j
intr˘a ˆın i atunci a
ij
= −1, altfel a
ij
= 0). Ar˘atat ¸i c˘a
pentru orice submatrice p˘atrat˘a B a lui A are loc:
det(B) ∈ ¡−1, 0, 1¦.
(2 puncte)
Problema 4.
ˆ
Intr-un graf f˘ar˘a vˆarfuri izolate se con-
struie¸ste un drum P astfel: se pleac˘a dintr-un vˆarf oare-
care de start ¸si apoi, din vˆarful curent ˆın care ne afl˘am,
alegem un vecin diferit de vˆarfurile deja vizitate. Atunci
cˆand nu mai este posibil˘a 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 f˘acute. Proprietarul grafului solicit˘a o plat˘a
pentru folosirea acestuia ˆın procesul de construct ¸ie a
drumului P. Aceast˘a plat˘a se poate faceˆınaintea fiec˘arei
alegeri ¸si, dac˘a se pl˘ate¸ste 1 RON se obt ¸ine dreptul de
a face aceast˘a alegere, iar dac˘a se pl˘atesc T >> 1 RONi
atunci se obt ¸ine dreptul de a face gratuit toate alegerile
urm˘atoare. Dup˘a terminarea construct ¸iei se poate com-
para suma pl˘atit˘a, Apriori(P), cu cea care s-ar fi f˘acut
dac˘a s-ar fi cunoscut drumul P, notat˘a Posteriori(P).
G˘asit ¸i o strategie de plat˘a astfel ˆıncˆat pentru orice graf
¸si orice drum construit P s˘a 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 t˘aietur˘a orice mult ¸ime A
de muchii ale lui G cu proprietatea c˘a exist˘a o bipartit ¸ie
(S, V (G) − S) a mult ¸imii virfurilor lui G astfel incit A
este mult ¸imea muchiilor lui G cu extremit˘at ¸ile in clase
diferite ale bipartit ¸iei.
a) Ar˘atat ¸i c˘a dac˘a funct ¸ia de cost are proprietatea c˘a
orice t˘aietur˘a are o unic˘a muchie de cost minim, atunci
exist˘a un unic arbore part ¸ial de cost minim. (2 puncte)
b) Deducet ¸i c˘a, dac˘a funct ¸ia de cost c este injectiv˘a,atunci
G are un unic arbore part ¸ial de cost minim. (1 punct)
c) Sunt adev˘arate reciprocele afirmat ¸iilor a) si b) ? (1
punct)
Problema 2. Consider˘am o numerotare fixat˘a a
celor m > 0 muchii ale unui graf conex G = (V, E) de
ordin n. Pentru orice submult ¸ime de muchii A con-
sider˘am x
A
∈ GF
m
vectorul m-dimensional cu elemente
0,1 definit 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 c˘a mult ¸imea vectorilor caracteristici ai
tuturor t˘aieturilor grafului G, la care ad˘aug˘am ¸si vectorul
nul, formeaza un subspat ¸iu vectorial X al lui GF
m
.(1
punct)
b) Demonstrat ¸i c˘a vectorii caracteristici ai mult ¸imilor
muchiilor circuitelor grafului G genereaz˘a un subspat ¸iu
vectorial U al lui GF
m
ortogonal pe X. (1 punct)
c) Ar˘atat ¸i c˘a dim(X) ≥ n −1 (1 punct)
d) Ar˘atat ¸i c˘a dim(U) ≥ m−n +1(1 punct)
e) Deducet ¸i c˘a dim(X) = n−1 ¸si c˘a dim(U) = m−n+1.
(1 punct)
Problema 3. Ar˘atat ¸i c˘a 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 r˘ad˘acina r
(un virf oarecare) ¸si cu parent(v) p˘arintele nodului v ∈ V,
v ,= r. Un cuplaj M al lui T se nume¸ste propriu dac˘a
orice virf expus v (relativ la M ) in T are un frate w
(dou˘a virfuri sunt frat ¸i dac˘a au acela¸si p˘arinte) astfel
incit w parent(v) ∈ M. a)Demonstrat ¸i c˘a orice cuplaj
propriu este de cardinal maxim. (1 punct)
b)Ar˘atat ¸i c˘a 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 9
Problema 1. Fie G = (S, T; E) un graf bipartit. Utilizat ¸i
teorema lui Hall pe un graf convenabil pentru a demon-
stra c˘a pentru orice intreg k, cu 0 ≤ k ≤ [S[, graful G
are un cuplaj de cardinal cel put ¸in [S[ −k dac˘a ¸si numai
dac˘a ∀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 maxim˘a printre toate cuplajele grafului.
a) Ar˘atat ¸i c˘a un cuplaj de grad maxim este de cardinal
maxim (2 puncte)
b) Dem. c˘a exist˘a in graful G un cuplaj care sat-
ureaz˘a toate virfurile de grad maxim dac˘a ¸si numai dac˘a
orice cuplaj de grad maxim are aceea¸si proprietate. (2
puncte)
c) Demonstrat ¸i c˘a dac˘a mult ¸imea virfurilor de grad maxim
ale grafului G induce un graf bipartit, atunci G are un
cuplaj care satureaz˘a toate virfurile de grad maxim. (2
puncte)
d) Deducet ¸i c˘a mult ¸imea muchiilor unui graf bipartit G
poate fi partit ¸ionat˘a in ∆(G) cuplaje.(2 puncte)
423
Problema 3. Consider˘am urm˘atoarea prob-
lem˘a de decizie:
Instant ¸˘a: G = (V, E) un graf, k ∈ N, b ∈ N

.
Intrebare : Exist˘a in G un subgraf H cu b
muchii, f˘ar˘a virfuri izolate ¸si cu ordinul lui H
cel put ¸in k ?
Ar˘atat ¸i c˘a problema se poate rezolva in timp
polinomial. (2 puncte)
Problema 4. Ar˘atat ¸i, utilizind teorema lui
Tutte, c˘a orice graf 2-muchie conex 3-regulat
are un cuplaj perfect. (2 puncte)
424
Setul de probleme 10
Problema 1. Fie G un graf conex cu n virfuri ¸si T
G
familia arborilor s˘ai part ¸iali. Se consider˘a graful H =
(T
G
, E(H)) unde T
1
T
2
∈ E(H) ⇐⇒[E(T
1
).E(T
2
)[ = 2.
a) Demonstrat ¸i c˘a H este conex ¸si are diametrul cel mult
n −1. (2 puncte)
b)Demonstrat ¸i c˘a 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
fixat al s˘au. Se coloreaz˘a toate arcele lui H cu galben,
ro¸su ¸si verde arbitrar, cu singura condit ¸ie ca arcul ts s˘a
fie galben (se poate intimpla ca s˘a nu avem arce ro¸sii
sau verzi). Demonstrat ¸i algoritmic c˘a are loc exact una
din urmatoarele situat ¸ii:
i) exist˘a 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 aceea¸si orientare.
ii) exist˘a o partit ¸ie (S, T) a lui V astfel incit s ∈ S, t ∈ T,
toate arcele de la S la T sunt ro¸sii ¸si toate arcele de la
T la S sunt ro¸sii sau galbene.
(2 puncte)
425
Problema 3. Fie G = (V, E) un graf. O mult ¸ime de
virfuri A ⊆ V se nume¸ste m-independent˘a dac˘a exist˘a un
cuplaj M al lui G astfel incit A ⊆ S(M). Demonstrat ¸i c˘a
dac˘a A ¸si B sunt mult ¸imi m-independente ¸si [A[ < [B[,
atunci ∃b ∈ B − A : A ∪ ¡b¦ este m-independent˘a
(mult ¸imile m-independente maximale au acela¸si 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
¦. Dac˘a M este un cuplaj
perfect in K
n,n
(fiecare 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 c˘a
∀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 nume¸ste stabil dac˘a :
∀b ∈ B dac˘a f <
b
M(b), atunci M(f) <
f
b ¸si, de aseme-
nea,
∀f ∈ F dac˘a b <
f
M(f), atunci M(b) <
b
f .
S˘a se arate c˘a pentru orice ordon˘ari ale preferint ¸elor ex-
ist˘a un cuplaj stabil ¸si s˘a se construiasc˘a unul in C(n
3
).
(4 puncte)
426
Setul de probleme 11
Problema 1. Se dispune de un algoritm care primind
la intrare un graf G ¸si o funct ¸ie de pondere nenegativ˘a
pe mult ¸imea muchiilor acestuia, returneaz˘a un cuplaj
perfect in graful G de pondere minim˘a (printre toate
cuplajele perfecte ale grafului; dac˘a G nu are cuplaj per-
fect se anunt ¸˘a acest lucru). Ar˘atat ¸i c˘ase poate utiliza
acest algoritm pentru determinarea eficient˘a a cuplaju-
lui de cardinal maxim intr-un graf oarecare. (3 puncte)
Problema 2. Ar˘atat ¸i c˘a se poate determina, intr-o
matrice cu elemente 0 ¸si 1 dat˘a, o mult ¸ime de cardinal
maxim de elemente egale cu 0 ¸si care s˘a nu se g˘aseasc˘a
pe aceea¸si linie sau coloan˘a, cu ajutorul unui algoritm de
flux maxim (pe o ret ¸ea convenabil definit˘a). (3 puncte)
Problema 3. Digraful G = (V, E) descrie topologia in-
terconectarii intr-o ret ¸ea de procesoare. Pentru fiecare
procesor v ∈ V se cunoa¸ste inc˘arcarea sa load(v) ∈ R
+
.
Se cere s˘a se determine (cu ajutorul unei probleme de
flux maxim) un plan de echilibrare static˘a a inc˘arc˘arii
procesoarelor : se va indica pentru fiecare procesor ce
cantitate de inc˘arcare va trimite ¸si la ce procesor ast-
fel incit, in final, toate procesoarele s˘a aib˘a aceea¸si
inc˘arcare. (4 puncte)
427
Problema 4. S˘a se determine fluxul de valoare maxim˘a
in reteaua din figura 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 capacit˘at ¸ile)
(4 puncte)
428
Setul de probleme 11’
Problema 1. Consider˘am urm˘atoarele prob-
leme de decizie:
PERF Instant ¸˘a: G un graf.
Intrebare: Are G un cuplaj perfect?
3PERF Instant ¸˘a: G un graf cu gradul fiec˘arui vˆarf ≤ 3.
Intrebare: Are G un cuplaj perfect?
Demonstrat ¸i c˘a PERF se reduce polinomial la
3PERF (4 puncte)
Problema 2. Demonstrat ¸i c˘a nu exist˘a nici
o permutare e
1
, e
2
, . . . , e
10
a muchiilor grafu-
lui complet K
5
, astfel ˆıncˆat 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)
429
Problema 3. Un organizator al unei conferint ¸e trebuie s˘a asigure
fet ¸e de mas˘a (curate) pentru fiecare din cele D zile cˆat dureaz˘a
conferint ¸a.
Se cunoa¸ste num˘arul M
i
al meselor de care e nevoie ˆın ziua i a
conferint ¸ei (i = 1, D). Se consider˘a c˘a toate cele M
i
fet ¸e de mas˘a
se murd˘aresc la sfˆar¸situl zilei i (i = 1, D).
Organizatorul are de alesˆıntre a cump˘ara fet ¸e de mas˘a noi, la pret ¸ul
unitar p, sau, ˆın dimineat ¸a zilei i, s˘a trimit˘a la cur˘at ¸at fet ¸e de mas˘a
murdare (din zilele precedente; i ≥ 2). Cur˘at ¸˘atoria are dou˘a tipuri
de servicii: serviciul rapid, prin care se returneaz˘a fet ¸ele de mas˘a
curate la ˆınceputul zilei i + 1 la un cost unitar c
1
, ¸si serviciul lent
prin care returneaz˘a fet ¸ele de mas˘a 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 planifi-
care a modului de cump˘arare ¸si trimitere la cur˘at ¸˘atorie a fet ¸elor de
mas˘a, astfel ˆıncˆat s˘a satisfac˘a toate cererile pe durata conferint ¸ei,
la un pret ¸ minim.
(Se presupune c˘a nu exist˘a fet ¸e de mese ˆın stoc, la ˆınceputul
conferint ¸ei, ¸si c˘a valoarea acestora dup˘a terminarea conferint ¸ei e
neglijabil˘a).
S˘a se formuleze problema organizatorului ca o problem˘a de flux de
cost minim (justificare). (4 puncte)
Problema 4. O euristic˘a natural˘a pentru colorarea vˆarfurilor unui
graf G = (V, E) este urm˘atoarea:
a) Se alege o D-ordonare a lui G, adic˘a o ordonare V = ¡v
i
1
, v
i
2
, . . . , v
i
n
¦
astfel ˆıncˆat d
G
(v
i
1
) ≥ d
G
(v
i
2
) ≥ . . . ≥ d
G
(v
i
n
).
b) Se coloreaz˘a greedy vˆarfurile: lui v
i
1
i se atribuie culoarea 1 ¸si
apoi pentru fiecare vˆarf v
i
j
, cu j = 2, . . . , n, se atribuie cea mai mic˘a
culoare posibil˘a (cel mai mic num˘ar natural p cu proprietatea c˘a nu
a fost atribuit drept culoare unuia dintre vecinii s˘ai deja colorat ¸i).
430
Consider˘am urm˘atoarea problem˘a de decizie:
3GCOL Instant ¸˘a: G un graf.
Intrebare: Exist˘a o D-ordonare a vˆarfurilor lui G astfel ˆıncˆat
euristica de mai sus d˘a o 3-colorare a lui G ?
Demonstrat ¸i c˘a problema
3COL Instant ¸˘a: G un graf.
Intrebare: Admite G o 3-colorare ?
se reduce polinomial la 3GCOL. (4 puncte)
431
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 ie¸sirea
¸si c : E(G) → R
+
funct ¸ia de capacitate). Presupunem
(f˘ar˘a a restrˆange generalitatea !) c˘a st ¸si ts nu sunt arce
ˆın G. Se dispune ¸si de o funct ¸ie de m˘arginire inferioar˘a
m : E(G) → R
+
, satisf˘acˆand m(e) ≤ c(e) pe orice arc
e al lui G. Numim flux legal ˆın R orice flux x ˆın R cu
proprietatea c˘a x(e) ≥ m(e) ∀e ∈ E(G).
a) Demonstrat ¸i c˘a pentru orice flux legal x ¸si orice
sect ¸iune (S, T) ˆın R are loc
v(x) ≤

i∈S,j∈T,ij∈E(G)
c(ij) −

i∈S,j∈T,ji∈E(G)
m(ji).
b) Se construie¸ste din R ret ¸eaua R astfel:
- se adaug˘a la G o intrare nou˘a s ¸si o ie¸sire nou˘a t;
- pentru ∀v ∈ V (G) se adaug˘a arcul sv de capacitate
c(sv) =

uv∈E(G)
m(uv);
- pentru ∀v ∈ V (G) se adaug˘a arcul vt de capacitate
c(vt) =

vu∈E(G)
m(vu);
- se adaug˘a arcele st ¸si ts de capacitate c(st) = c(ts) =
∞;
- se define¸ste c pe arcele ij ale lui G ca fiind c(ij) =
c(ij) −m(ij).
432
Demonstrat ¸i c˘a exist˘a un flux legal ˆın ret ¸eaua R dac˘a ¸si
numai dac˘a exist˘a un flux de valoare M =

e∈E(G)
m(e)
ˆın ret ¸eaua R = (G, s, t, c) (G este digraful construit mai
sus, c este funct ¸ia de capacitate definit˘a mai sus).
c) Utilizˆand un flux 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 flux legal de valoare
maxim˘a ˆıntr-o ret ¸ea ˆın care pe fiecare arc este precizat˘a
capacitatea ¸si marginea inferioar˘a.
(2+2+2 puncte)
Problema 2. Dac˘a H este un graf conex, A ⊆ V (H)
o mult ¸ime nevid˘a de vˆarfuri ale sale ¸si w : E(H) → 1
+
,
atunci se nume¸ste arbore Steiner corespunz˘ator tripletei
(H, A, w) un arbore T(H, A, w) = (V
T
, E
T
), subgraf al lui
H, cu proprietatea c˘a A ⊆ V
T
¸si suma costurilor muchiilor
sale, s[T(H, A, w)] =

e∈E
T
w(e), este minim˘a printre tot ¸i
arborii subgrafuri ale lui H care cont ¸in A.
a) Justificat ¸i c˘a determinarea lui T(H, A, w) se poate
face ˆın timp polinomial pentru cazul cˆand A = V (H)
sau [A[ ≤ 2.
433
b) Fie G = (V, E) un graf conex cu mult ¸imea de vˆarfuri
V = ¡1, . . . , n¦ ¸si A ⊆ V . Pe mult ¸imea muchiilor lui G
este dat˘a o funct ¸ie de cost c : E →1
+
.
Consider˘am ¸si graful complet K
n
cu mult ¸imea de vˆarfuri
V ¸si cu funct ¸ia de cost c : E(K
n
) → 1
+
dat˘a de c(ij) =
min
[ P drumˆın G de la i la j ]
c(P) pentru orice ij ∈ E(K
n
).
Demonstrat ¸i c˘a s[T(G, A, c)] = s[T(K
n
, A, c)] ¸si c˘a din
orice arbore Steiner T(K
n
, A, c) se poate construi un ar-
bore Steiner T(G, A, c).
c) Ar˘atat ¸i c˘a exist˘a un arbore Steiner T(K
n
, A, c) cu pro-
prietatea c˘a vˆarfurile sale care nu-s din A au gradul cel
put ¸in 3. Deducet ¸i (folosind aceast˘a proprietate ) c˘a
exist˘a ˆıntotdeauna un arbore Steiner T(K
n
, A, c) cu cel
mult 2[A[ −2 vˆarfuri.
((1+1)+(1+2)+(2+1) puncte)
434
Setul de probleme 12
Problema 1. Fie v valoarea fluxului maxim in ret ¸eaua
R = (G, c, s, t). Demonstrat ¸i c˘a exist˘a 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 , definit pentru orice
arc ij prin x
ij
= 0 +Σ
t:ij∈P
t
v
t
, este flux in R de valoare
maxim˘a v. (4 puncte)
Problema 2. Numim GP-descompunere a grafului
graful complet K
n
orice mult ¸ime , = ¡B
1
, ...., B
k(,)
¦,
unde : fiecare B
i
este un subgraf bipartit complet al lui
K
n
, orice dou˘a grafuri B
i
si B
j
au mult ¸imile de muchii dis-
juncte ¸si ∪
i=1,k(,)
E(B
i
) = E(K
n
). Ar˘atat ¸i c˘a 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 c˘a ∀uv ∈ E : f(u)f(v) ∈ E. Demonstrat ¸i
c˘a ω(G) ≤ [f(V )[. Este adev˘arat c˘a pentru orice graf
G = (V, E) exist˘a funct ¸ii f cu proprietatea de mai sus ¸si
astfel incit [f(V )[ ≤ ∆(G) +1 ? (4 puncte)
435
Problema 4. Fie G = (V, E) un graf. Nu-
mim partit ¸ie special˘a 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.
Ar˘atat ¸i c˘a graful circuit C
n
(n ≥ 3) nu are
partit ¸ii speciale.
Descriet ¸i un algoritm polinomial care s˘a testeze
dac˘a un graf dat are partit ¸ii speciale. (2 puncte)
436

Motivatie: Grafurile sunt considerate cele ¸
mai utilizate ”structuri” abstracte din Informatic˘ . a

Scop: Familiarizarea studentilor cu princi¸
palele notiuni ¸i rezultate din Teoria Grafurilor ¸ s ¸i aplicarea acestora ˆ proiectarea unor algos ın ritmi eficienti pentru diversele probleme de op¸ timizare pe grafuri.

Continut: Probleme, Algoritmi, Complexi¸
tate; Vocabular al Teoriei Grafurilor; Probleme de drum (parcurgeri, drumuri minime, conexiune); Arbori partiali de cost minim (union¸ find, complexitate amortizat˘); Cuplaje; Fluxa uri; Reduceri polinomiale pentru probleme de decizie pe grafuri; Abord˘ri ale problemelor NPa hard pe grafuri; Grafuri planare.
1

Bibliografie:
- Manualul cursului : CROITORU C., Tehnici de baz˘ ˆ optimizarea a ın combinatorie, Editura Universit˘¸ii ”Al. I. Cuza“ at Ia¸i, Ia¸i,1992.(Slide-urile sunt f˘cute utilizˆnd s s a a acest text). - Se poate consulta ¸i capitolul 3 din s CROITORU C., Introducere in proiectarea algoritmilor paraleli, Editura Matrix Rom, Bucure¸ti, 2002. s - TOMESCU I., Probleme de combinatorica ¸i s teoria grafurilor, Editura did ¸i ped, Bucure¸ti, s s 1981. - DIESTEL R., Graph Theory, Electronic Edition -T.H. CORMEN, C.E. Leiserson, R.L. Rivest, C. Stein: Introduction to Algorithms , The MIT Press 2001, 2nd edition
2

0.

Probleme,Algoritmi,Complexitate

Vom considera o problem˘ (computational˘) a ¸ a ca fiind o aplicatie ¸ P : I → O,
(I multimea intr˘rilor problemei, multimea instantelor ¸ a ¸ ¸ problemei; O multimea ie¸irilor, r˘spunsurilor, solutiilor) ¸ s a ¸

care pentru fiecare intrare i ∈ I ofer˘ o ie¸ire a s P(i) ∈ O. Dac˘ O = {da, nu} atunci P se va numi proba lem˘ de decizie, P(i) ∈ {da, nu} va fi r˘spunsul a a (la ˆ ıntrebarea pus˘ de P), iar forma uzual˘ de a a prezentare a problemei va fi: P Intrare: i ∈ I. Intrebare: descriere ... ?

Exemplu:
Compus Intrare: n ∈ N n ≥ 2. Intrebare: Exist˘ p, q ∈ N p, q ≥ 2 ¸i n = pq? a s
3

Un alt tip de probleme care apar frecvent sunt cele de c˘utare : a multimea O contine pentru fiecare i ∈ I m˘car ¸ ¸ a o solutie acceptabil˘ ˆ raport cu un anumit ¸ a ın criteriu precizat, iar problema cere g˘sirea unei a astfel de solutii. ¸ O clas˘ special˘ de astfel de probleme este a a cea a problemelor de optimizare, care sunt de maximizare sau minimizare. Exemple:
Drum Intrare: G un graf, a, b dou˘ vˆrfuri ale lui G. a a Ie¸ire: P un drum ˆ G de la a la b (dac˘ ∃). s ın a Intrare: G graf, a, b vˆrfuri ˆ G, a ın o functie de lungime a muchiilor lui G. ¸ ∗ un drum ˆ G de la a la b cu suma Ie¸ire: P s ın lungimilor muchiilor minim˘, printre a toate drumurile de la a la b ˆ G. ın

DrMin

MaxCut Intrare: G graf, o functie de lungime a muchiilor lui G. ¸ Ie¸ire: O bipartitie (S, T ) a multimii vˆrfurilor s ¸ ¸ a grafului G cu suma lungimilor muchiilor dintre cele dou˘ clase maxim˘. a a
4

Oric˘rei probleme de optimizare i se poate asoa cia o problem˘ de decizie (care ne va da informatii a ¸ asupra dificult˘¸ii ei computationale). Pentru cele at ¸ dou˘ probleme de optimizare de mai sus, avem: a
DrMin-D Intrare: G graf, a, b vˆrfuri ˆ G, k ∈ N, a ın o functie de lungime a muchiilor lui G. ¸ ˆ Intrebare: Exist˘ P drum ˆ G de la a la b a ın cu suma lungimilor muchiilor ≤ k ? Intrare: G graf, k ∈ N, o functie de lungime a muchiilor lui G. ¸ ˆ Intrebare: Exist˘ (S, T ) bipartitie a multimii a ¸ ¸ vˆrfurilor lui G cu suma lungimilor a muchiilor dintre cele dou˘ clase ≥ k ? a

MaxCut-D

Vom considera ˆ continuare doar probleme de ın decizie. Pentru a fi rezolvate cu ajutorul calculatorului problemele sunt codificate. Vom considera Σ o multime finit˘ fixat˘ nu¸ a a mit˘ alfabet, Σ∗ multimea tuturor cuvintelor a ¸ peste Σ.
5

Obiectele care apar ˆ descrierea unei probın leme (numere rationale, grafuri, functii, ma¸ ¸ trici etc.) vor fi reprezentate cu ajutorul unor cuvinte w ∈ Σ∗. Lungimea cuvˆntului w se va a nota cu |w|. Orice multime de cuvinte peste Σ, ¸ deci o submultime a lui Σ∗ se nume¸te limbaj ¸ s (peste Σ). Problemele de decizie au forma Dat un anumit obiect, are el o anumit˘ proprietate? Cum a obiectele le reprezent˘m cu ajutorul cuvintelor a ˆ ınseamn˘ c˘ problema se reduce la ˆ a a ıntrebarea Dat un cuvˆnt, are el o anumit˘ proprietate? a a Vom considera problem˘ de decizie o functie a ¸ P : Σ∗ → {da, nu}. Limbajul asociat problemei P este s P −1(da) = {w|w ∈ Σ∗ ¸i P (w) = da}.
6

Vom considera c˘ un algoritm este o functie ∗ a ¸ A : Σ∗ → {da, nu, nedecidabil}. Limbajul L ⊆ Σ∗ este acceptat de algoritmul A dac˘ L = {w|w ∈ Σ∗ ¸i A(w) = da}. a s Limbajul L ⊆ Σ∗ este decis de algoritmul A dac˘ ∀w ∈ L : A(w) = da ¸i ∀w ∈ L : A(w) = nu. a s Limbajul L ⊆ Σ∗ este acceptat de algoritmul A ˆ timp polinomial dac˘ L este acceptat de ın a A ¸i ∃k ∈ N astfel ˆ at pentru orice w ∈ L s ıncˆ algoritmul A evalueaz˘ A(w) = da ˆ timpul a ın O(|w|k ). Limbajul L ⊆ Σ∗ este decis de algoritmul A ıncˆ ˆ timp polinomial dac˘ ∃k ∈ N astfel ˆ at ın a pentru orice w ∈ Σ∗ algoritmul A evalueaz˘ a A(w) = da, dac˘ w ∈ L ¸i A(w) = nu, dac˘ a s a w ∈ L, ˆ timpul O(|w|k ). ın
∗ Prefer˘m a

un mod informal de prezentare a notiunilor ¸ de algoritm ¸i timp de executie s ¸
7

s a 2. a s a a s 8 . 1. atunci a s nu se cunoa¸te nici o demonstratie a apartes ¸ nentei DrM in-D ∈ P (¸i nici nu se crede c-ar ¸ s exista una).Clasa de complexitate P = {L ⊂ Σ∗|∃A alg. deci P = P . De exemplu. ın Observatii. Dac˘ se permit ¸i valori negative. a.ˆ L e decis de A ı. atunci ea a a este rezolvabil˘ ˆ timp polinomial dac˘ lima ın a a bajul L = P −1(da) satisface L ∈ P. Se verific˘ u¸or c˘ dac˘ P ∈ P atunci ¸i Σ∗ \ P ∈ P. a. Dac˘ not˘m ¸ a a P = {L ⊂ Σ∗|∃A alg. ın se observ˘ imediat c˘ P ⊆ P ¸i nu e dificil s˘ a a s a se arate ¸i incluziunea invers˘.ˆ L e acceptat de A ı. ˆ timp polinomial}. ˆ timp polinomial}. Se noteaz˘ aceasta (cam abuziv) P ∈ P. problema DrM IN -D este rezolvabil˘ ˆ timp polinomial dac˘ functia de lungime a ın a ¸ (specificat˘ ˆ intrarea ei) este cu valori nenega ın ative. Apartenenta ¸ Compus ∈ P s-a demonstrat abia ˆ anul 2002. ın P: Dac˘ P e o problem˘ de decizie.

s |y| = O(|x|k ) ¸i A(x. y) = da}. nedecidabil}.ˆ ı. s ı.Verificare ˆ timp polinomial. ˆ A(w. Pentru A(x. nu. atunci ea este a a a problem˘ (din) NP dac˘ limbajul L = P −1(da) a satisface L ∈ NP. ın Un algoritm de verificare este o functie ¸ A : Σ∗ × Σ∗ → {da. L = {x ∈ Σ∗ | ∃y ∈ Σ∗. 9 . y) = da} }. ˆ ı. Clasa de complexitate NP: NP = {L ⊆ Σ∗ | ∃A algoritm de verificare cu timp de lucru polinomial a. ∃k ∈ N a. Dac˘ P e o problem˘ de decizie. Limbajul L ⊆ Σ∗ este verificat de algoritmul de verificare A dac˘ a L = {w|w ∈ Σ∗ ¸i ∃y ∈ Σ∗ a. y). x este intrarea iar y este certificatul.

a satisf˘cˆnd A (x. Sintagma Nedeterminist Polinomial se justific˘ dac˘ am considera algoritmi nedea a termini¸ti ˆ care controlul executiei este astfel ˆ at s ın ¸ ıncˆ dup˘ fiecare pas este posibil s˘ se execute unul oarea a care dintre pa¸ii specificati ˆ s ¸ ıntr-o multime finit˘ de pa¸i ¸ a s a a succesori. nu. nedecidabil}. NP este mnemonic pentru Nede¸ terminist Polinomial ¸i nu pentru NePolinomial. ¸ 10 . s a ın Din definitiile de mai sus ar fi fost mai normal s˘ not˘m ¸ a a VP (verificabil polinomial). nu. Un astfel de algoritm accept˘ un cuvˆnt de intrare dac˘ este posibil˘ o executie care s˘ conduc˘ a a ¸ a a la rezultatul da. Se poate ar˘ta c˘ aceasta definitie a a ¸ a accept˘rii nedeterministe este echivalent˘ cu cea de a a a ın verificare dat˘ mai sus. s Un argument c˘ nu e bine s˘ asimil˘m NP cu a a a nepolinomial este ¸i faptul c˘ P ⊆ NP. x) = A(x) pentru orice x ∈ Σ∗ . nedecidabil} algoritm care decide L ˆ timp polinomial.Observatie. ˆ care certificatul este utilizat pentru efectuarea alegerilor corecte ale pa¸ilor urm˘tori s a ai unei executii a algoritmului nedeterminist. Consider˘m A : Σ∗×Σ∗ → {da. atunci exist˘ A : a a a ın Σ∗ → {da. s a Justificarea este imediat˘: Dac˘ L ∈ P. Se vede a a u¸or c˘ L este verificat de A ˆ timp polinomial.

a a ˆ Intrebare: ∃ un unic drum de la a la b ˆ G? ın 11 . as s ın M axCut-D ∈ NP. Dac˘ am considera urm˘toarea problem˘ de a a a decizie: UnDrum Intrare: G un graf. ın Intuitiv. a a ¸ De exemplu. b dou˘ vˆrfuri ale lui G. pentru problema M axCut-D un r˘spuns a afirmativ are drept certificat o partitie (S ∗. Deci. NP este clasa tuturor problemelor de decizie pentru care se poate verifica un r˘spuns a pozitiv (da) rapid dac˘ ni se d˘ o solutie.NP noteaz˘ clasa problemelor de decizie pena tru care r˘spunsurile afirmative au certificate a care pot fi folosite pentru a demonstra succint (ˆ timp polinomial) corectitudinea lor. a. T ∗ ) a multimii ¸ ¸ vˆrfurilor grafului (iar proprietatea c˘ suma lungimilor a a s a ın muchiilor cu o extremitate ˆ S ∗ ¸i cealalt˘ ˆ T ∗ nu ın dep˘¸e¸te pragul k se face ˆ timp polinomial).

el nu ne asigur˘ c˘ nu a a mai exist˘ ¸i altele. Exemplu de problem˘ din co-NP: a NeHam Intrare: G un graf. L = P −1 (nu) ∈ NP). O problem˘ de decizie P ∈ co-NP dac˘ a a L = P −1 (da) ∈ co-NP (echivalent. O demonstratie succint˘ a s ¸ a (graful e mare) pare a nu exista. P ⊆ NP ∩ co-NP.Cum s-ar putea justifica un r˘spuns da la o a problem˘ U nDrum? Dac˘ prezent˘m un drum a a a anume drept certificat. ˆ Intrebare: Este adev˘rat c˘ ˆ G nu exist˘ a a ın a un circuit care s˘ treac˘ exact o dat˘ a a a prin fiecare vˆrf al s˘u? a a Observatie. a Clasa de complexitate co-NP: co-NP = {L ⊆ Σ∗ | Σ∗ \ L ∈ NP}. ¸ 12 . Deci nu ¸tim s dac˘ U nDrum ∈ NP.

algoritm de reducere polinomial˘. ¸ a s Fie A un algoritm polinomial care decide L ¸i F un als goritm de reducere polinomial˘ a lui L la L. a ¸ 2. ¸ a Limbajul L ⊆ Σ∗ este NP-dificil (engl.Relatia ∝ este tranzitiv˘: L1 ∝ L2. 1. L2 ⊆ Σ∗. A (x) = da ⇔ A(F (x)) = da ⇔ F (x) ∈ L ⇔ x ∈ L . a A = A ◦ F este un algoritm polinomial care decide L . L2 ∝ L3 ⇒ L1 ∝ L3. s a f se nume¸te functie de reducere ¸i algoritmul polinomial s ¸ s F care calculeaz˘ f . (∀x ∈ Σ∗. Dac˘ L ∈ P ¸i L ∝ L. Spunem c˘ L1 se reduce polia s a nomial la L2. Fie L1. dac˘ exist˘ f : Σ∗ → Σ∗ o functie polinomial a a ¸ calculabil˘ astfel ˆ at ∀w ∈ Σ∗: w ∈ L1 dac˘ a ıncˆ a ¸i numai dac˘ f (w) ∈ L2. atunci L ∈ P. a Limbajul L ⊆ Σ∗ este NP-complet dac˘ a L ∈ NP ¸i L este NP-dificil. Atunci. A e polinomial deoarece multimea polinoamelor ¸ eˆ ınchis˘ la operatia de compunere). ¸i not˘m aceasta prin L1 ∝ L2. NP-hard) dac˘ ∀L ∈ NP are loc L ∝ L. a a Observatii. s 13 .Reduceri polinomiale.

¸i not˘m s a −1 −1 P1 ∝ P2. Dac˘ g˘sim un algoritm ¸ a a polinomial pentru una dintre ele. a Problema de decizie P este NP-dificil˘ dac˘ a a ∀P ∈ NP are loc P ∝ P . aceste probleme a ¸ a nu admit algoritmi polinomiali de rezolvare. de¸i nu a a exist˘ o demonstratie. a Rezult˘ c˘ problemele NP-complete formeaz˘ submultimea lui NP a a a ¸ care contine cele mai dificile probleme. putem construi un algoritm polia s nomial pentru oricare alt˘ problem˘ din NP.Terminologia se transfer˘ pentru probleme de decizie: a Spunem c˘ problema de decizie P1 se reduce a polinomial la problema de decizie P2. s a Folosind observatia 1 ¸i faptul c˘ P ⊆ NP rezult˘ urm˘toarea ¸ s a a a Teorem˘ Dac˘ P o problem˘ oarecare NPa a a complet˘ satisface P ∈ P atunci P = NP. Diagrama urm˘toare a sugereaz˘ relatiile care se crede c˘ exist˘ ˆ a ¸ a a ıntre aceste clase de complexitate: 14 . a a Problema de decizie P este NP-complet˘ dac˘ P ∈ NP ¸i P este NP-dificil˘. oamenii cred c˘. de fapt. Din p˘cate. dac˘ L1 = P1 (da) ∝ L2 = P2 (da).

dac˘ problema de decizie asociat˘ este a a a a¸a. if a problem is NP-hard. but you’re probably pretty sure that I don’t own a talking dog.’ You probably don’t know whether or not I own a dog. then it can speak fluent English’ has a natural corollary: No one in their right mind should believe that I own a dog! Likewise. no sane person would believe me if I said I owned a dog that spoke fluent English. Univ. So the statement ‘If I own a dog. s a ¸ vom spune c˘ o problem˘ oarecare P (nu neaparat de a a a a ¸ decizie) este NP-dificil˘ dac˘ existenta unui algoritm polinomial pentru P implic˘ P = NP. Nobody has a mathematical proof that dogs can’t speak English. a Comentariu metaforic: Saying that a problem is NPhard is like saying ‘If I own a dog.NP-hard P NP NP-complete Se obi¸nuie¸te s˘ se spun˘ c˘ o problem˘ de optimizare s s a a a a este NP-dificil˘. of. Illinois] 15 . no one in their right mind should believe it can be solved in polynomial time. then it can speak fluent English. Pentru ca s˘ ne aliniem la definitiile precedente. Nevertheless. [Jeff Erickson.

F ∨ F = F . ¸i e clar c˘ se poate face ˆ timp polinomial. un} o multime finit˘ de variabile ¸a ¸ a booleene.(A) = A. F ∧ A = F ∧ F = A ∧ F = F . . n} astfel ˆ at ıncˆ vij = uα sau vij = uα. . . F ∨ A = A ∨ F = A ∨ A = A. F = A. . . C = C1 ∧ C2 ∧ . . . ˆ a ı. ¸ care ˆ 1971 a ar˘tat c˘ SAT ∈ NP. (F ) = F . ∧ Cm o formul˘ ˆ form˘ a ın a conjunctiv˘ peste U : a Ci = vi1 ∨ vi2 ∨ . . m. . . unde ∀ij ∃α ∈ {1. . F } a.Singura clas˘ de complexitate pentru care nu a am sugerat un exemplu este cea a problemelor NP − complete. Primul om care a demonstrat existenta unei astfel de probleme este Cook. A = F . Intrebare: Exist˘ o atribuire t : U → {A. unde ın a a SAT Instant˘: U = {u1. s a ın 16 . t(C) = A ? Evaluarea lui t(C) se bazeaz˘ pe formulele uzuale din a calculul boolean: A ∧ A = A. ∨ viki ∀i = 1. .

a ¸ Se poate ar˘ta u¸or c˘ SAT ∝ 3SAT ¸i deci se a s a s a ¸ obtine c˘ 3SAT este NP-complet˘ (apartenenta ¸ a la NP e clar˘ fiind o restrictie a lui SAT care e a ¸ din NP. iar tranzitivitatea relatiei ∝ ˆ ¸ ımpreun˘ a cu teorema lui Cook termin˘ demonstratia). s 3SAT este restrictia lui SAT ˆ care fiecare ¸ ın clauz˘ Ci are exact trei literali (ki = 3). a ın O demonstratie c˘ orice limbaj din NP se reduce poli¸ a nomial la SAT necesit˘ o abordare formal˘ notiunilor de a a ¸ algoritm ¸i timp de executie (pe care le-am considerat s ¸ aici la nivel intuitiv) ¸i o omitem.Apartenenta lui SAT la NP e clar˘. a ¸ 17 . un a literal vij fiind. a¸a cum este descris mai sus. un certifi¸ a cat pentru r˘spunsul da este o atribuire t0 care a poate fi verificat˘ ˆ timp polinomial. o s variabil˘ sau negatia ei.

nada. a a Pentru pasul 2 se poate consulta http://www. a a 5. Se ˆ ıncearc˘ construirea unui algoritm de a reducere F de la L la L. 4.Schita de demonstratie de mai sus este uzual˘ ¸ ¸ a ˆ demonstratiile de NP-completitudine ¸i o exın ¸ s plicit˘m: a Pentru a ar˘ta c˘ o problem˘ de decizie P este a a a NP-complet˘ se procedeaz˘ astfel: a a 1.kth. Se arat˘ c˘ L = P − 1(da) satisface L ∈ NP. a a 2.se/~viggo/problemlist/ 18 . a 3. Se demonstreaz˘ c˘ F e algoritm de reducere. Se selecteaz˘ un limbaj L despre care ¸tim a s c˘ este NP-complet. Se arat˘ c˘ F este algoritm polinomial.

I.

Vocabular al Teoriei grafurilor

1. Definitia unui graf ¸ Un graf este o pereche G = (V (G), E(G)), unde - V (G) este o multime finit˘ nevid˘, iar ¸ a a - E(G) este o submultime a multimii P2(V (G)) ¸ ¸ a p˘rtilor cu dou˘ elemente ale lui V (G). a¸ a V (G) se nume¸te multimea vˆ s ¸ ırfurilor grafului G ¸i num˘rul elementelor sale s a V (G) , este ordinul grafului G; E(G) este multimea muchiilor grafului G ¸i ¸ s num˘rul s˘u de elemente, E(G) , este dimena a siunea grafului G. Atunci cˆ ınd nu exist˘ posibilitatea confuziilor, a vom nota simplu, G = (V, E).
19

Dac˘ e = {u, v} ∈ E(G) este o muchie a graa fului G vom nota e = uv (pentru simplificarea scrierii) ¸i vom spune c˘: s a • muchia e une¸te vˆ s ırfurile u ¸i v; s • vˆ ırfurile u ¸i v sunt adiacente ˆ G; s ın • muchia e este incident˘ cu vˆ a ırfurile u ¸i v; s • vˆ ırfurile u ¸i v sunt vecine ˆ G; s ın • vˆ ırf. u ¸i v sunt extremit˘¸ile muchiei e. s at Dac˘ v ∈ V (G), atunci multimea a ¸ NG(v) = {w|w ∈ V (G), vw ∈ E(G)} se nume¸te vecin˘tatea vˆ s a ırfului v ˆ G. ın Se mai noteaz˘ NG(v) = ΓG(v). a
20

Remarc˘m faptul c˘ graful G poate fi definit a a (ˆ mod echivalent) ca o pereche V (G), ΓG ın unde ΓG : V (G) → P V (G) asociaz˘ fiec˘rui vˆ vecin˘tatea sa. a a ırf a Dou˘ muchii e ¸i e care au o extremitate coa s mun˘ se numesc adiacente. a Intuitiv, un graf G = (V (G), E(G)) poate fi reprezentat (dup˘ cum sugereaz˘ ¸i numele a a s s˘u) cu ajutorul unei figuri plane format˘ dintra a o multime de mici forme geometrice aflat˘ ¸ a ˆ corespondent˘ cu multimea de vˆ ın ¸a ¸ ırfuri V (G), dou˘ forme fiind unite printr-o curb˘ simpl˘ a a a dac˘ ¸i numai dac˘, perechea de vˆ a s a ırfuri corespunz˘toare lor este o muchie a grafului G. a Corespondenta dintre vˆrfurile grafului ¸i fig¸ a s urile geometrice considerate este vizualizat˘ a
21

uneori cu etichete ata¸ate vˆrfurilor. De asemes a nea, muchiile pot fi etichetate. ˆ plus, sunt In utilizate diferite atribute grafice pentru expresivitatea desenului, diagramei. De exemplu,

figura ¸i s reprezint˘ acela¸i graf, de¸i lipsa etichetelor a s s face dificil˘ realizarea acestui fapt. a Urm˘toarele trei reprezent˘ri ale grafului a a G = ({1, 2, 3, 4}, {12, 13, 14, 23, 24, 34}) sunt mult mai clare:
1 2 1 3 3 3 4 4 4 2 1 2

22

O multime independent˘ de vˆ ¸ a ırfuri (sau multime stabil˘) ˆ G este o multime S ⊆ ¸ a ın ¸ V (G) de vˆ ırfuri cu proprietatea c˘ a P2(S) ∩ E(G) = ∅ (adic˘ o multime de vˆ a ¸ ırfuri neadiacente du˘ a cˆ dou˘ ). ıte a Cardinalul maxim al unei multimi stabile se ¸ nume¸te num˘rul de stabilitate sau num˘rul s a a de independent˘ al grafului G ¸i se noteaz˘ ¸a s a cu α(G). De exemplu, ˆ graful G de mai jos multimea ın ¸ {a} este multime stabil˘ (maximal˘ ˆ raport ¸ a a ın cu incluziunea), dar num˘rul de stabilitate este a n, multimea {1, . . . , n} fiind stabil˘ de cardinal ¸ a ¸ maxim (n ≥ 1). ˆ graful H s-au evidentiat In dou˘ multimi stabile care partitioneaz˘ multimea a ¸ ¸ a ¸ vˆrfurilor, iar α(H) = 6. a
1 2 a a 3 n G H d 6 1 b 4 2 c 5 e

23

Problema urm˘toare este natural˘, u¸or de fora a s mulat ¸i apare deseori ˆ diferite aplicatii: s ın ¸ P1 Intrare: G un graf. Ie¸ire: α(G) ¸i un ”martor”: s s S m.stabil˘ ˆ G, cu |S| = α(G). a ın

De¸i foarte simpl˘ (de formulat, la o prim˘ s a a vedere), problema este NP-dificil˘. Problema a de decizie corespunz˘toare, a SM Intrare: Intrebare: G un graf, k ∈ N. Exist˘ S m.stabil˘ ˆ G, a a ın cu |S| ≥ k?

este NP-complet˘ (Karp, 1972). Probabil c˘ o a a cauz˘ a dificult˘¸ii acestei probleme este faptul a at c˘ dou˘ multimi stabile maximale (ˆ raport a a ¸ ın cu incluziunea) pot avea raportul cardinalelor oricˆt de mare (vezi graful G din figura de la a pagina precedent˘). a
24

O multime independent˘ de muchii sau cu¸ a plaj ˆ graful G este o multime de muchii neaın ¸ diacente dou˘ cˆ dou˘ . Cardinalul maxim al a ıte a unei multimi independente de muchii ˆ G se ¸ ın nume¸te num˘rul de muchie-independent˘ s a ¸a al grafului G ¸i se noteaz˘ ν(G). s a Exemplu, pentru graful G:

num˘rul de muchie independent˘, ν(G) este 6, a ¸a un cuplaj cu acest num˘r de muchii fiind pus a ˆ evident˘. Problema ın ¸a P2 Intrare: G un graf. Ie¸ire: ν(G) ¸i un ”martor”: s s M cuplaj ˆ G, cu |M | = ν(G). ın
25

este foarte asem˘n˘toare cu P1 (este de fapt, a a o restrictie a lui P1 pentru intr˘ri care sunt ¸ a line-grafuri) ¸i totu¸i s-a ar˘tat c˘ este ˆ P( s s a a ın Edmons, 1965). Diferenta de complexitate provine, probabil, ¸ din faptul c˘ raportul dintre cardinalele a dou˘ a a cuplaje maximale ˆ raport cu incluziunea nu ın poate dep˘¸i 2. as

Dac˘ G = (V (G), E(G))este un graf ¸i p ∈ a s N∗, se nume¸te p−colorare a (vˆ s ırfurilor) lui G o aplicatie c : V (G) → {1, . . . , p} cu pro¸ prietatea c˘ c−1(i) este o multime stabil˘ ˆ a ¸ a ın G, ∀i ∈ {1, . . . , p} (remarc˘m c˘, din definitia a a ¸ multimilor stabile, ∅ este o multime stabil˘ ). ¸ ¸ a Num˘rul cromatic al grafului G, notat χ(G), a este cea mai mic˘ valoare a lui p ∈ N∗ pentru a care G admite o p-colorare.
26

Ie¸ire: χ(G) ¸i un ”martor”: s s o χ(G)-colorare a lui G. sunt In evidentiate 2 color˘ri una cu 5 culori ¸i una cu ¸ a s 4 culori. Se poate argumenta c˘ χ(G) = 4. ın sau ˆ problemele de acoperire din wireless netın works): P3 Intrare: G un graf. 27 .Exemplu: ˆ graful G desenat mai jos. a 5-colorare 4-colorare rosu= culoarea 1 galben= culoarea 2 verde=culoarea 3 albastru=culoarea 4 negru=culoarea 5 Problema urm˘toare apare ˆ diverse situatii a ın ¸ practice (de exemplu ˆ problemele de orar.

. ¸i cum proba a s lema P3 cere de fapt s˘ partition˘m multimea a ¸ a ¸ de vˆrfuri a grafului ˆ a ıntr-un num˘r cˆt mai mic a a de multimi stabile. este cea mai mic˘ valoare a lui p ∈ N∗ pentru a care G admite o p-colorare a muchiilor. a O p−colorare a muchiilor lui G este o aplicatie ¸ c : E(G) → {1. dac˘ G este un graf perfect). este normal ca ¸i aceast˘ ¸ s a problem˘ s˘ fie NP-dificil˘. Problema de dea a a cizie COL Intrare: Intrebare: G un graf. Exist˘ ˆ a restrictii a ıns˘ ¸ ale problemei pentru care avem apartenent˘ la ¸a P (de exemplu. . ∀i ∈ {1. p}. Indicele cromatic al grafului G. k ∈ N. notat χ (G). . . . p} cu proprietatea c˘ c−1(i) a este un cuplaj al lui G. . 28 .Din problema P1 ¸tim c˘ multimile stabile ale s a ¸ grafului sunt greu de ”st˘pˆnit”. . Admite G o k-colorare? este NP-complet˘ chiar dac˘ o restriction˘m a a ¸ a la cazul particular k = 3. .

Exemplu: In graful de mai jos este evidentiat˘ o 3-colorare a muchiilor. Ie¸ire: χ (G) ¸i un ”martor”: s s o χ (G)-colorare a muchiilor lui G. 29 . ˆ a s a ıntrucˆt muchiile incia dente ˆ acela¸i vˆrf trebuie s˘ aib˘ culori disın s a a a tincte. Problema P4 Intrare: G un graf. este ¸ a clar c˘ este ¸i optim˘.

¸i not˘m ∼ a a ¸ aceasta prin G = H. iar problema P2 fiind a din P) ca ea s˘ fie rezolvabil˘ polinomial. Dou˘ grafuri. problema P4 poate a ın a fi rezolvat˘ ”aproximativ” cu o eroare de o unitate (deci dac˘ se gre¸este. dac˘ exist˘ o bijectie ϕ : V (G) → V (H) cu proprietatea c˘ aplicatia a ¸ ψ : E(G) → E(H). E(G)) ¸i a s H = s a (V (H). G = (V (G). definit˘ pentru orice uv ∈ E(G) prin ψ(uv) = a ϕ(u)ϕ(v) este o bijectie. ¸ 30 .s-a dovedit a fi NP-dificil˘. a a Diferenta fat˘ de P3 (P4 este de fapt o restrictie ¸ ¸a ¸ a ın a lui P3 pe clasa line-grafurilor) este c˘ ˆ timp ce P3 s-a demonstrat c˘ nu poate fi u¸or aproxa s imabil˘ (ˆ timp polinomial). atunci colorarea a s ¸ a ın ¸a obtinut˘ are cel mult o culoare ˆ plus fat˘ de a cea optim˘). de¸i era de a¸teptat a s s ca (lucrˆnd cu cuplaje. E(H)) se numesc izomorfe.

H grafuri. a¸a cum se a s sugereaz˘ ˆ figur˘ a ın a a b d 2 1 4 c e 3 5 G H Problema urm˘toare este util˘ ˆ multe proba a ın leme de modelare discret˘ (de exemplu ˆ chimie) a ın ISO Intrare: Intrebare: G. ∼ G = H? 31 .(deci. dou˘ grafuri sˆ izomorfe dac˘ exist˘ o a ınt a a bijectie ˆ ¸ ıntre multimile lor de vˆ ¸ ırfuri care induce o bijectie ˆ ¸ ıntre multimile lor de muchii). ¸ Grafurile urm˘toare sunt izomorfe.

Nu s-a demonstrat dac˘ aceast˘ problem˘ este a a a sau nu NP-complet˘ (aparteneta la NP este a ¸ clar˘). s s vˆrfurile au acela¸i num˘r de muchii incidente. Exemplul s urm˘tor arat˘ dificultatea problemei (cele dou˘ a a a grafuri au acela¸i ordin. a s a ¸i totu¸i ele nu-s izomorfe: in primul apar cirs s cuite de lungime 4. Se pare c˘ face parte dintr-o clas˘ a a a de probleme aflat˘ ˆ a ıntre P ¸i NP). un autoa morfism al lui G este o permutare a lui V (G) 32 . E(G))este un graf. iar ˆ al doilea nu !) ın G H Dac˘ G = (V (G). aceea¸i dimensiune.

a Multimea automorfismelor grafului G formeaz˘. ın ¸ ¸ un grup numit grupul automorfismelor grafului G. ∀uv ∈ E(G). {w |∃ϕ ∈ Aut(G) : ϕ(v) = w} = V (G) Exemplu: 0 1 6 2 5 4 3 33 . este bijectiv˘ ). ψ(uv) = ϕ(u)ϕ(v). ¸ a ˆ raport cu operatia de compunere a aplicatiilor. ϕ bijectiv˘) cu proprietatea a c˘ induce o permutare a lui E(G) a ( ψ : E(G) → E(G). Aut(G) este tranzitiv dac˘ a ∀v ∈ V (G). notat Aut(G).( ϕ : V (G) → V (G).

¸ Un element e ∈ P2 V (G) cu m(e) > 0 este muchie a multigrafului. a a Oric˘rui multigraf M i se poate asocia un graf a G(M ). simpl˘ dac˘ m(e) = 1. modific˘rile de reprezentare sunt eva idente. se obtine a ¸ ¸ notiunea de multigraf. adic˘ este ¸ a dat˘ o functie m : P2 V (G) → N. graful suport al multigrafului desenat mai jos. Variatii ˆ definitia unui graf ¸ ın ¸ a) Dac˘ ˆ definitia unui graf. a 0 1 6 2 5 4 3 34 .2. este graful desenat pe pagina precedent˘. a s at Pictural. obtinut ¸ prin ˆ ınlocuirea fiec˘rei muchii multiple cu o sina gur˘ muchie cu acelea¸i extremit˘¸i. a a multipl˘ dac˘ m(e) > 1. se consider˘ a ın ¸ a E(G) o multimultime pe P2 V (G) . numit graful suport al lui M .

uneori grafurile – a¸a cum le-am definit– se mai numesc ¸i grafuri s s simple .b) Dac˘ ˆ definitia unui graf se consider˘ E(G) a ın ¸ a ca o multimultime pe multimea p˘rtilor nevide ¸ ¸ a¸ cu cel mult dou˘ elemente ale lui V (G). 35 . s O muchie e ∈ E(G). e = {v} se nume¸te bucl˘ s a ˆ vˆ ın ırful v. a 0 1 0 1 3 5 4 3 2 3 2 G(M) M Pentru evitarea confuziilor. Exemplul urm˘tor arat˘ un graf general M ¸i a a s graful s˘u suport. atunci a G se nume¸te graf general sau pseudograf.

ad˘ugˆ a ınd curbei ce une¸te dou˘ figs a uri asociate vˆrfurilor o s˘geat˘ pentru a prea a a ciza perechea de vˆ ırfuri corespunz˘toare arcua lui desenat. u domin˘ pe v. s ınt a este incident din u . a este incident cu v spre interior. not˘m a = uv ¸i a ın a s spunem c˘ a u ¸i v sˆ adiacente. v) este arc ˆ D. a este incident spre v. A(D)) unde V (D) este o multime finit˘ nevid˘ (multimea ¸ a a ¸ vˆ ırfurilor digrafului D). iar A(D) ⊆ V (D) × V (D) este multimea arcelor ¸ digrafului D.c) Un digraf este o pereche D = (V (D). Dac˘ a = (u. a a este incident cu u spre exterior. u este extremitatea initial˘ a lui a ¸i v este ¸ a s extremitatea final˘ a lui a. a Pictural. digrafurile se reprezint˘ la fel ca ¸i a s grafurile. 36 .

Exemplu: 1 3 7 4 5 2 6 8 9 0 O pereche de arce de forma vw ¸i wv se nume¸te s s pereche simetric˘ de arce. ˆ general. 37 . a Dac˘ D este un digraf. un graf general M (D). ıl a obtinem. a Dac˘ D este un digraf. inversul s˘u D este a a digraful obtinut din D prin ˆ ¸ ınlocuirea fiec˘rui a arc vw cu opusul s˘u wv. atunci ˆ a ınlocuind fiecare arc cu multimea de vˆ ¸ ırfuri care ˆ formeaz˘. ¸ ın Graful suport al acestuia se nume¸te graful s suport al digrafului D.

a Un digraf complet simetric este un digraf ˆ ın care fiecare pereche de vˆ ırfuri este unit˘ prin a exact o pereche de arce simetrice. ınt Dinamo 1 4 2 3 Steaua Stiinta Rapid Petrolul 0 38 .Dac˘ M (D) este graf atunci D se nume¸te graf a s orientat (poate fi gˆ ındit ca obtinut prin ”ori¸ entarea” fiec˘rei muchii a grafului M (D)). Un turneu este un digraf ˆ care orice dou˘ ın a vˆ ırfuri sˆ unite prin exact un arc.

Ele se mai ¸ numesc sisteme finite de multimi ¸i vom ar˘ta ¸ s a c˘ pot fi studiate via grafurile bipartite. Acestea se consider˘ a fi num˘rabile. a a a ( se obtin astfel hipermuchiile).d) Grafurile infinite se obtin prin ˆ aturarea ¸ ınl˘ conditiei de finitudine a multimii de vˆ ¸ ¸ ırfuri ¸i s (sau) muchii. 39 . mecanisme generative). a a iar tratarea lor utilizeaz˘ instrumente care nu a sunt neaparat combinatorii ( de exemplu. ırf e) Hipergrafurile se obtin renuntˆnd la conditia ¸ ¸a ¸ c˘ muchiile pot avea cel mult dou˘ vˆrfuri. de¸i a s exist˘ rezultate combinatorii importante ¸i cu a s aplicatii directe (de exemplu ˆ bazele de date) ¸ ın ˆ formalismul care urmeaz˘ extinderea trat˘rii ın a a grafurilor (din punct de vedere combinatoriu sau algebric). Un graf G local finit este un graf infinit ˆ care NG(v) este finit˘ pentru ın a orice vˆ v.

Un exemplu de graf trivalent este graful lui Petersen: Gradul maxim al unui vˆrf al grafului G se a noteaz˘ cu ∆(G). atunci valenta sau gradul lui v ˆ G. a ¸ ın notat dG(v) sau ρG(v) este |{e | e ∈ E. E)este un graf ¸i v ∈ V un vˆ a s ırf al s˘u. e incident˘ cu v}|. a Un vˆ de grad 0 se nume¸te izolat. Un graf s 3−valent se numeste graf trivalent sau cubic. a 40 . Grade Dac˘ G = (V. iar gradul minim δ(G) . Un s graf 0−valent se nume¸te graf nul. Dac˘ toate s a vˆ ırfurile lui G au aceea¸i valent˘ ρ atunci G s ¸a se nume¸te graf ρ−valent sau ρ−regulat. un vˆ ırf s ırf de grad 1 se nume¸te pendant.3.

Concepte analoage se pot defini ¸i pentru dis grafuri. D v u w 41 . este num˘rul a D D arcelor incidente cu v spre interior. D − dD (w) = 1. d+(v) = 2. ˆ digraful D desenat mai jos avem ın d− (v) = 1. valenta ¸ exterioar˘ sau gradul exterior notat ρout(v) a sau ρ+(v) sau d+(v). D D − dD (u) = 3. De exemplu. este num˘rul arcelor ina D D cidente cu v spre exterior. d+(u) = 0. Dac˘ v este un vˆ al digrafului D a ırf atunci valenta interioar˘ sau gradul interior ¸ a notat ρin(v) sau ρ− (v) sau d− (v). d+(w) = 3.

H este subgraf al lui G iar In a subgraful indus de multimea de vˆrfuri {3. E(G))este un graf H = (V (H). P2(A) ∩ a E(G)) se nume¸te subgraf indusˆ G de multimea s ın ¸ de vˆ ırfuri A (se mai noteaz˘ ¸i G[A]). 4. 8. Subgrafuri Un subgraf al grafului G = (V (G). V (H) = V (G) atunci H se nume¸te a ın s graf partial al lui G (ˆ limba englez˘. s Dac˘ ˆ plus. E(H)) care satisface: V (H) ⊆ V (G) ¸i E(H) ⊆ E(G).4. 6. 6. Dac˘ A ⊆ V (G) atunci [A]G = (A. span¸ ın a ning subgraph). 4.10}] 10 42 . 10}]: 2 1 3 1 2 3 4 8 4 5 6 4 6 6 7 8 9 7 8 3 10 G H 10 G[{4. a s ˆ figura urm˘toare. 8.8.6.3. 10} ¸ a este G[{3.

23. 36. Pentru G graful din figura precedent˘ ¸i E = {12. 810. E ) este a ın graful partial sectionat de E ˆ G. dac˘ A = {v}. ın a atunci G − {v} se noteaz˘ G − v. grafuri generale sau digrafuri. a Dac˘ E ⊆ E(G) atunci E G = (V (G). iar G − e = ¸ G−{e} (e ∈ E(G)). 59. 14.Subgraful [V (G) \ A]G se noteaz˘ G − A ¸i este a s subgraful lui G obtinut prin ˆ ¸ ındep˘rtarea a vˆ ırfurilor din A. 43 . G − E ¸ ¸ este prin definitie E(G) \ E G. 25. ˆ particular. 710. 910}. as obtinem c˘ E G este graful G : ¸ a 2 1 3 4 5 6 7 8 9 10 G’ Concepte similare se pot defini ˆ mod analog ın pentru multigrafuri.

Graful initial Complementarul Graful complet -graful reprezentativ al muchiilor lui G este graful L(G) cu V (L(G)) = E(G) ¸i s E(L(G)) = {ee | e. e ¸i e adiacente ˆ G}. e ∈ E(G).5. Operatii cu grafuri ¸ Dac˘ G = (V (G). s ın a b a c e c d g f Graful initial f h e d g b h Line-graful sau 44 . atunci : a -complementarul s˘u este graful G cu a s V (G) = V (G) ¸i E(G) = P2 V (G) \ E(G). E(G))este un graf.

y ∈ V (G) ∪ E(G).-graful total al grafului G este graful T(G) cu V (T (G)) = V (G) ∪ E(G) ¸i s E(T (G)) = {xy|x. E(G) \ {vw} ∪ {vz. ın d 1 a 2 a 1 d 4 3 b 4 2 c Graful initial c b 3 Graful total -graful obtinut din G prin insertia unui vˆ ¸ ¸ ırf (z) pe o muchie (e = vw) este graful G = (V (G) ∪ {z}. s 45 . zw}) (z ∈ V (G). e ∈ E(G)). / z v w v w Dou˘ grafuri obtinute prin insertii succesive de vˆ a ¸ ¸ ırfuri pe muchiile aceluia¸i graf se numesc homeomorfe. x ¸i y s adiacente sau incidente ˆ G}.

Dac˘ V (G) = V (G ) atunci reuniunea celor a dou˘ grafuri ¸i intersectia lor se definesc a s ¸ G ∪ G = (V (G). E(G) ∪ E(G )). se spune c˘ a G este contractibil la H. a . z v w G G|e Dac˘ H se poate obtine prin contractii suca ¸ ¸ cesive de muchii din graful G. E(G))¸i G = (V (G ). E(G )) s dou˘ grafuri. E([V (G) \ {v. G ∩ G = (V (G). w} ∪ {z}. E(G) ∩ E(G )). Fie G = (V (G). w}]G)∪ {yz | yv sau yw ∈ E(G)}). 46 .-graful obtinut din G prin contractia muchiei ¸ ¸ e = vw ∈ E(G) este graful G|e = (V (G) \ {v.

1 5 4 G 2 3 5 4 1 2 3 G’ Intersectia Reuniunea -Dac˘ V (G)∩V (G ) = ∅ atunci G ∪ G = (V (G)∪ a s V (G ). 47 . Reuniunea a s disjunct˘ a k grafuri izomorfe cu G se noteaz˘ kG. E(G)∪E(G )) se nume¸te reuniunea disjunct˘ a grafurilor G ¸i G . a a 1 5 4 G 2 3 e d G’ a b c Reuniunea disjuncta -Suma a dou˘ grafuri G ¸i G este graful a s G+G =G∪G.

w)(v . w. w )|v. v ∈ V (G).G G’ G+G’ -Produsul cartezian al grafurilor G ¸i G este s graful G × G cu V (G × G ) = V (G) × V (G ) ¸i s E(G × G ) = {(v. w ∈ V (G ) s v = v ¸i ww ∈ E(G )sau w = w ¸i vv ∈ E(G)} s G’ G: G x G’ 48 .

s K1 K2 K3 K4 K5 Graful nul de ordin n : Nn = K n.6. Clase de grafuri Graful complet de ordin n : Kn cu V (Kn ) = n ¸i E(Kn ) = P2 V (Kn ) . N1 N2 N3 N4 N5 49 .

. . .Circuitul de ordin n (n ≥ 3) : cu V (Cn ) = {1. 23. . Cn C3 C4 C5 C6 C7 Drumul de ordin n : Pn P1 = K1. n − 1n. . . P2 = K2. . P1 P2 P3 P4 P5 50 . n1}. n ≥ 3 : Pn = Cn − e (e ∈ E(Cn)). . n} ¸i s E(Cn ) = {12.

T . rezult˘ c˘ determinarea num˘rului a a a de clic˘ al unui graf ¸i a unei clici de cardinal a s maxim este problema P1 pcu intrarea G. ¸ ın Dac˘ S ¸i T satisfac S ∪ T = V (G). E(G)).Un subgraf complet (de ordin q) al unui graf G se nume¸te clic˘ ( q-clic˘) a lui G. s a a Cardinalul maxim al unei clici a lui G se nume¸te s num˘rul de clic˘ sau num˘rul de densitate a a a al lui G ¸i se noteaz˘ ω(G). atunci s ınt s ın graful bipartit G se noteaz˘ G = (S. evident s a ω(G) = α(G). S ∪ T = ∅ a s ¸i S. Exemple: omega 3 omega 2 omega 4 omega 2 omega 5 Un graf bipartit este un graf G cu proprietatea c˘ V (G) se poate partitiona ˆ dou˘ a ¸ ın a multimi independente ˆ G. a 51 . T sˆ independente ¸i nevide ˆ G. Cum.

G 1 2 F3 1 5 6 F1 Hipergraful H 7 3 4 F2 4 5 6 7 F3 Graful bipartit asociat lui H F2 2 3 G F1 52 .3 Pentru orice hipergraf H = (V. E(GH )). s K1.3 K3. E). T . ∀F ∈ E vF ∈ E(GH ) ⇔ v ∈ F .t unde s a s = |S| ¸i t = |T |.2 K1. atunci graful bipartit G = (S. E. dac˘ G = (S.1 K2. atunci ∀e ∈ E(G) are o extremitate ˆ S ın ¸i cealalt˘ ˆ T . E(G)) se nume¸te s graf bipartit complet ¸i se noteaz˘ Ks. se poate asocia un graf bipartit GH = (V. E(G)) este un graf bia partit.3 K2.Deci. s a ın Dac˘ ∀v ∈ S ¸i ∀w ∈ T a s vw ∈ E(G). T . unde ∀v ∈ V .

Un graf care nu-i planar se num¸te neplanar. E(G))se nume¸te planar s dac˘ poate fi reprezentat ˆ plan astfel ˆ ıt a ın ıncˆ fiec˘rui vˆ s˘-i corespund˘ un punct al planua ırf a a lui. Exemple minimale s de grafuri neplanare sˆ grafurile K5 ¸i K3. ınt s Planar Planar Planar K5 neplanar 53 .O constructie invers˘ evident˘. Un graf G = (V (G). ne arat˘ c˘ ¸i ¸ a a a a s pentru orice graf bipartit se poate asocia un hipergraf. iar muchiilor le corespund curbe simple ce unesc punctele corespunz˘toare extremit˘¸ilor a at lor ¸i ˆ plus aceste curbe se interesecteaz˘ s ın a (eventual) numai ˆ vˆ ın ırfuri.3.

clasa grafurilor nule poate fi definit˘ ca fiind clasa graa furilor K2-free. O modalitate uzual˘ de a defini clase de graa furi este de a interzice aparitia unor subgrafuri ¸ induse. 54 . De exemplu. Dac˘ F este o multime de grafuri. clasa grafurilor triangulate (sau cordale) este clasa grafurilor (Ck )k≥4-free.De¸i problema s PLAN Intrare: G un graf. pentru grafurile acelei clase. ea subsumˆnd a notiuni de topologie. s-a dovedit c˘ este din P ¸ a ( Hopcroft & Tarjan . Intrebare: Este G planar ? pare mult mai dificil˘ decˆt problema stabilei a a maxime (P1 din cursul trecut). clasa grafurilor ale c˘ror coma ponente conexe sunt subgrafuri complete este clasa grafurilor P3-free. O(n + m)). atunci un a ¸ graf G se nume¸te F -liber (sau F -free) dac˘ s a G nu are ca subgraf indus pe niciunul dintre grafurile lui F . 1972.

v ¸i w se numesc extremit˘¸ile mersului. vr−1. E(G))un graf. Dac˘ vˆ a ırfurile sˆ distincte atunci mersul se ınt nume¸te drum (path) de la v la w. s at Dac˘ muchiile mersului sˆ a ınt distincte atunci mersul se nume¸te parcurs (trail) ˆ G de la v s ın la w. vr−1vr . s 3 2 4 1 8 9 6 parcurs T: 9 5 drum P: 6 3 2 8 9 4 8 4 9 1 2 8 5 mers M: 1 2 8 2 3 6 5 8 55 . . . . Drumuri ¸i circuite s Fie G = (V (G). . v0v1.7. vr (= w). Se nume¸te mers (walk) de lungime r de la s v la w ˆ G un ¸ir de vˆ ın s ırfuri ¸i muchii s (v =)v0. v1.

Dac˘ ˆ a ıntr-un mers toate vˆ ırfurile sˆ distincte. ınt cu exceptia extremit˘¸ilor. a a a 2 3 2 4 1 8 9 6 5 circuit par : 9 1 2 circuite impare : 1 4 8 9 8 8 9 4 Lungimea celui mai scurt circuit al grafului G (dac˘ G are circuite) se nume¸te gratia (girth) a s ¸ grafului G ¸i se noteaz˘ cu g(G).Dac˘ v = w atunci mersul (parcursul) se nume¸te a s ˆ ınchis. atunci mersul se nume¸te ¸ at s circuit (sau drum ˆ ınchis). lungimea celui s a mai lung circuit al lui G se nume¸te s circumferinta lui G ¸i se noteaz˘ c(G). ¸ s a 56 . Un circuit este par sau impar dup˘ cum lungimea a sa (num˘rul muchiilor) este par˘ sau impar˘.

w ∈ V (G)}. a Definitiile de mai sus se extind. w)|v. 57 .pentru digrafuri singura modificare fiind aceea c˘ se ˆ a ınlocuiesc muchiile cu arce. lungimea celui mai scurt drum de la v la w ˆ G se ın nume¸te distanta ˆ G de la v la w ¸i se noteaz˘ s ¸ ın s a dG(v. notat d(G) este d(G) = max{dG(v.Dac˘ v ¸i w sˆ a s ınt vˆ ırfuri ale lui G. w). ˆ mod evi¸ ın dent. Diametrul grafului G. d(G)=3 d(G)=4 ˆ proiectarea retelelor de interconectare a procesoarelor In ¸ este important ca graful G reprezentˆnd reteaua s˘ aib˘ a ¸ a a gradul maxim ∆(G) mic ¸restrictie tehnologic˘) ¸i di( ¸ a s ametrul d(G) mic ˆ raport cu num˘rul vˆrfurilor (restrictie ın a a ¸ de calitate a interconect˘rii).

conexe ¸i a s maximale cu aceast˘ proprietate. s Orice graf G poate fi unic exprimat ca o reuniune disjunct˘ de subgrafuri induse. a a s a a 58 .Un graf este conex dac˘ exist˘ (m˘car) un a a a drum ˆ ıntre orice dou˘ vˆ a ırfuri ale sale. a ın Graful din figura de mai sus are 4 componente conexe: una cu 1 vˆrf. se pot defini componentele conexe ca subgrafurile induse de clasele de echivalent˘ determinate pe V (G) de relatia de ¸a ¸ echivalent˘ ρ ⊆ V (G) × V (G) definit˘ prin : ¸a a v ρ w ⇔ exist˘ ˆ G un drum de la v la w ). un graf care nu este conex se nume¸te neconex. aceste suba grafuri se numesc componentele conexe ale grafului G (mai precis. una cu 2 vˆrfuri ¸i dou˘ cu 5 vˆrfuri.

Concepte analoage se pot defini ¸i pentru dis grafuri. a ın • D este unilateral conex dac˘ ∀(v. Unilateral conex Tare conex Conex 59 . w) ∈ V (D) × a V (D) exist˘ un drum ˆ D de la v la w. graful suport al a lui D. dac˘ D este un digraf atunci : a • D este tare conex dac˘ ∀(v. • D este conex dac˘ G(D). este conex. w) ∈ a V (D) × V (D) exist˘ ˆ D un drum de la a ın v la w sau un drum de la w la v.

un vˆ v ∈ V (G) cu a ırf proprietatea c˘ G − v este neconex se nume¸te a s vˆ (punct) de articulatie. de articulatie Multime de articulatie Fara multimi de articulatie 60 . de articulatie Fara pcte. ınt s a Time to leave the trees !!! Dac˘ G este un graf conex. ¸ a Pct. Un graf ale c˘rui componente conexe a sˆ arbori se nume¸te p˘dure. mai general. o ırf ¸ multime A de vˆ ¸ ırfuri ale unui graf G se nume¸te s multime separatoare de vˆ ¸ ırfuri (multime de ¸ articulatie) dac˘ G − A este neconex.Un graf conex care nu are circuite se nume¸te s arbore.

Fie p un num˘r ˆ a ıntreg pozitiv. notat k(G). G este 1-conex dac˘ ¸i numai dac˘ a s a este conex. ıt Evident. Un graf 2-conex se mai nume¸te s ¸i bloc. s a Num˘rul de conexiune al lui G. a un graf G cu m˘car p vˆ a ırfuri este p−conex dac˘ G = Kp sau are cel putin p + 1 vˆ ¸ ırfuri ¸i nu are s multimi separatoare de vˆ ¸ ırfuri de cardinal mai mic decˆ p. este cel mai mare num˘r natural p pentru care a G este p−conex. k(G)=3 k(G)=4 61 .

s ın o multime A de muchii ale unui graf G se ¸ nume¸te multime separatoare de muchii dac˘ s ¸ a G − A este neconex. mai general. o muchie e ∈ a E(G) cu proprietatea c˘ G − e este neconex a se nume¸te punte ˆ graful G. noa tat λ(G). Un graf G cu cel putin p vˆ ¸ ırfuri este p−muchie-conex dac˘ nu admite multimi sepa ¸ aratoare de muchii de cardinal mai mic decˆ p. Punte Multime separatoare de muchii lambda(G)=3 62 . este cel mai mare num˘r natural p a pentru care G este p−muchie-conex .Dac˘ G este un graf conex. ıt Num˘rul de muchie-conexiune al lui G.

Un (di)graf G se nume¸te hamiltonian dac˘ s a are un circuit care trece prin fiecare vˆ ırf. fiecare arc al digrafului).Un graf (sau digraf) se nume¸te eulerian dac˘ s a admite un parcurs ˆ ınchis care folose¸te fiecare s muchie a grafului (respectiv. Intrebare: Este G hamiltonian ? 63 . problema s a HAM Intrare: G un graf. 1 2 11 10 3 9 6 7 8 4 2 Graf care nu-i hamiltonian 3 Graf hamiltonian 5 7 6 1 8 4 5 Graf Eulerian ˆ timp ce problema test˘rii dac˘ un graf este In a a elerian este foarte simpl˘ (Euler 1736 : conex a ¸i cu toate vˆrfurile de grad par).

planar.este NP-complet˘. Apartenenta la NP este a ¸ evident˘: un circuit hamiltonian. si nehamiltonian (Tutte) 64 . Intrebare: Este adev˘rat c˘ G nu-i hamiltonian? a a nu se cunoa¸te o demonstratie a apartenentei s ¸ ¸ la NP ( se observ˘ c˘ este din co-NP). Nu se a a poate da o demonstratie succint˘ c˘ graful de ¸ a a mai jos nu e hamiltonian: 3-conex. se poate ina dica printr-o permutare a vˆrfurilor care poate a fi testat˘ ˆ timp liniar. ˆ schimb pentru proba ın In lema NH Intrare: G un graf.

1 ¸i s -1. unde aij = ⎧ ⎨1 ⎩0 dac˘ vi ¸i vj sˆ adiacente a s ınt altminteri. evident se poate indica ¸i ın s orientarea arcelor. vn}. Matricea de incident˘ a grafului G este ma¸a tricea B = (bij )n×m. Dac˘ G = ({v1. se pot asocia similar astfel In de matrici. Matrici asociate. folosind elementele 0. em}) este un a graf. . 65 . . ˆ care. unde bij = ⎧ ⎨1 ⎩0 dac˘ vi ¸i ej sˆ incidente a s ınt altminteri. atunci Matricea de adiacent˘ a grafului G este ma¸a tricea A = (aij )n×n. .8. . . . . {e1. . ˆ cazul digrafurilor.

66 . re¸a spectiv. 1 5 1 7 2 3 4 6 4 3 2 5 matricea de adiacent˘ este: ¸a ⎛ ⎜ ⎟ ⎜1 0 0 1 1 ⎟ ⎜ ⎟ ⎜1 0 0 1 1 ⎟ .Pentru graful din figura de mai jos. A=⎜ ⎟ ⎜0 1 1 0 1 ⎟ ⎝ ⎠ 0 1 1 0 0 ⎞ 0 1 1 1 0 iar matricea de incident˘: ¸a ⎛ ⎞ ⎜ ⎟ ⎜1 0 1 0 0 0 1⎟ ⎜ ⎟ ⎜0 1 0 1 0 1 0⎟ . B=⎜ ⎟ ⎜0 0 1 1 1 0 0⎟ ⎝ ⎠ 0 0 0 0 0 1 1 1 1 0 0 1 0 0 Valorile proprii ¸i polinomul caracteristic ale matricii de s adiacent˘ se numesc valorile proprii ale grafului. polinomul caracteristic al grafului.

pentru un vˆrf oarecare v ∈ V . deci orice ¸ ¸ algoritm. n} ¸i |E| = e. Fie G = (V. Cu aceast˘ structur˘ de date testarea dac˘ a a a dou˘ vˆrfuri sunt sau nu adiacente se face ˆ a a ın + O(1). 2.9 Structuri de date utilizate ˆ reprezentarea ın (di)grafurilor. s are complexitatea Ω(n2). dar parcurgerea lui NG(v) (sau NG (v)). . . . necesit˘ Ω(n) a a operatii. E) un (di)graf cu V = {1. care folose¸te o astfel de reprezentare. . s Cele mai uzuale structuri de date utilizate pentru reprezentarea (di)grafului G sunt: ¸a a) matricea de adiacent˘ ¸a Dac˘ A = (aij )n×n este matricea de adiacent˘ a a lui G atunci. ¸ 67 . reprezentarea acesteia cu ajutorul unui tablou bidimensional va necesita O(n2) operatii pentru orice initializare.

unul ˆ A(v) ¸i cel˘lalt ˆ A(w).b) listele de adiacent˘ ¸a Pentru fiecare vˆ v ∈ V se consider˘ o list˘ ırf a a A(v) a vecinilor s˘i ˆ G. ¸a ın s a ın Spatiul total de memorie utilizat va fi de O(n+ ¸ 2e). s Pentru cazul ˆ care G este graf. a ın Dac˘ G este graf. ınl˘ ¸ Testarea dac˘ un vˆrf fixat v este adiacent cu a a un vˆrf oarecare w ˆ G se face ˆ Ω(dG(v)). Pentru cazul ˆ care G este digraf. atunci A(v) contine a ¸ NG(v) = {v|w ∈ V ¸i vw ∈ E} iar dac˘ G este s a digraf atunci A(v) contine ¸ + NG (v) = {v|w ∈ V ¸i vw ∈ E}. spatiul ın ¸ de memorie utilizat este de O(n + e). dar a ın ın se poate parcurge NG(v) ˆ timpul O(dG(v)) ¸i ın s nu O(n) ca ˆ cazul matricii de adiacent˘. Listele de adiacent˘ pot fi reprezentate cu aju¸a torul tablourilor sau ca structuri dinamice de date (liste ˆ antuite). fiecare muchie ın vw ∈ E va genera dou˘ elemente ˆ listele a ın de adiacent˘. ın ¸a 68 .

Pentru digraful desenat mai jos. se ın ¸ poate trece la probleme algoritmice specifice. sunt reprezentate listele de adiacent˘: ¸a 1 2 A(1) 3 A(2) A(3) 5 6 A(5) A(6) 3 5 6 2 3 Cu notiunile si terminologia minimal˘ descris˘ ¸ a a ˆ sectiunile 1-9 ale acestui prim capitol. 69 .

Graph search. Parcurgeri sistematice ale (di)grafurilor. se cere s˘ se genereze s a ”eficient” multimea ¸ S = {v ∈ V |∃D drum ˆ G de la s la v}. . ın 70 . . .paradigm˘ algoritmic˘ utilizat˘ a a a pentru a desemna o metod˘ sistematic˘ de a a parcurgere a multimii vˆrfurilor la care se poate ¸ a ajunge prin drumuri ˆ ıntr-un (di)graf de la un vˆrf fixat. . n} ¸i s ∈ V . E) un (di)graf cu multimea vˆ ¸ ırfurilor V = {1. a Dat G = (V.II Probleme de drum ˆ (di)grafuri ın 1.

bfs .breadth first search Initial. s a for w ∈ A(v) do { if label(w) < 0 then { label(w) ← label(v) + 1.(Di)graful G e reprezentat cu listele de adiacent˘ (e ¸a nevoie de aflarea eficient˘ a multimii vecinilor nodului a ¸ curent. ˆ procesul sistematic de vizitare). a ¸terge vˆrful din capul cozii Q. ¸ label(s) ← 0 parent(s) ← 0. ∀v ∈ V are eticheta label(v) < 0. parent(w) ← v. creeaz˘ coada Q continˆnd s. a ¸ a while Q = ∅ do { v←vˆrful din capul cozii Q. ın Prezent˘m succint cele dou˘ tehnici principale de para a curgere. introdu w ˆ coada Q ın } } } 71 .

∀v ∈ V label(v) = dG(s. a s 1 2 A(1) 3 A(2) A(3) 5 6 A(5) A(6) 3 5 6 2 6 2 5 6 2 3 1 3 1 2 0 1 2 0 5 1 3 1 2 72 . ˆ figura urm˘toare sunt desenati arborii coreIn a ¸ spunz˘tori lui bfs(1) ¸i bfs(2).S = {v ∈ V |label(v) ≥ 0}. . ¸ a a complexitatea timp a lui bf s(s) este O(nS + mS ).variabila parent define¸te arborele bfs asos ciat c˘ut˘rii din s: dac˘ G e graf atunci acesta a a a este arbore partial al componentei conexe a ¸ lui G la care apartine s. . unde nS = |S| iar mS = |E([S]G)|.deoarece fiecare list˘ de adiacent˘ a unui vˆrf a ¸a a din multimea S este traversat˘ exact o dat˘. a a a . dac˘ G este digraf ¸ a atunci acesta este o arborescent˘ (arbore ori¸a entat cu toate vˆrfurile accesibile prin drumuri a din r˘d˘cin˘).Evident: . v).

creeaz˘ stiva S continˆnd s. label(s) ← 0 parent(s) ← 0. introdu w ˆ stiva S ın } else NOP (aici. a ¸ a nS ← 1 while S = ∅ do { v←vˆrful din capul stivei S. dar se poate utiliza !!) else ¸terge vˆrful din capul stivei S s a // s-a terminat c˘utarea din v. rezult˘ imediat c˘ as a a S = {v ∈ V |label(v) ≥ 0} ¸i complexitatea timp s a lui df s(s) este O(nS + mS ). ∀v ∈ V are eticheta label(v) < 0 ¸ ¸i toti pointerii de parcurgere a listelor de adiacent˘ sunt la ˆ s ¸ ¸a ınceput. parent(w) ← v. a } Iar˘¸i. nS ++.depth first search Initial. 73 . a w ← next[A(v)] if ∃w then if label(w) < 0 then { label(w) ← nS .dfs .

(care sunt preproces˘ri uzuale pentru proba leme mai complicate). De data aceasta graful este dat implicit. 74 . Ele sunt esentiale ˆ problemele din Inteligenta Artifi¸ ın ¸ cial˘.Pentru exemplul nostru de lucru. pentru determinarea componenın ın ın telor tari conexe ˆ digrafuri. este ın folosit pentru descrierea algoritmului ¸i analizele de coms plexitate. ˆ fiecare nod (stare) se dispune de un predicat preconditie ¸ care este utilizat de o functie neighbours care intoarce ¸ lista nodurilor accesibile ˆ contextul curent din acel nod. unde spatiul st˘rilor de c˘utare poate fi v˘zut ca a ¸ a a a ın un graf . ın Graful explicit care se poate construi ˆ principiu. componentelor 2-conexe ˆ grafuri etc.. s ¸ 1 2 A(1) 3 A(2) A(3) 5 6 A(5) A(6) 3 5 6 2 6 4 5 6 2 3 1 3 3 2 0 1 2 0 5 1 3 2 3 Parcurgerile sistematice sunt importante pentru obtinerea ¸ unor algoritmi eficienti pentru determinarea componen¸ telor conexe ˆ grafuri. arborii dfs(1) ¸i dfs(2) sunt ilustrati mai jos.

. n}. lungimea. atunci costul arcului ij ımp ˆ nodul din lista de adiacent˘ a ın ¸a este un cˆ lui i ce reprezint˘ acest arc. . Dac˘ digraful G este reprezentat cu ajutorul a ¸a listelor de adiacent˘. Consider˘m dat˘ o functie a a ¸ a : E → R cu interpretarea: ∀ij ∈ E a(ij) =costul arcului ij (ponderea.2. Fie G = (V. Probleme de drum minim. . E) un digraf cu multimea vˆ ¸ ırfurilor V = {1. . a s ¸ ¸ Pentru u¸urinta notatiilor vom folosi reprezentarea digrafului G cu ajutorul matricii de cost-adiacent˘ ¸a A = (aij )n×n cu aij = ⎧ ⎨a(ij) ⎩∞ dac˘ ij ∈ E a altfel Aici ∞ desemneaz˘ un num˘r real mare ˆ raa a ın port cu celelalte costuri (de exemplu ∞ > n × maxij∈E a(ij)) ¸i vom presupune ˆ plus c˘ s ın a 75 . etc).

vr−1vr }. a(Dii) = 0. vom nota cu a ın Dij = {Dij | Dij drum ˆ G de la i la j}. vr (= j) multimea vˆ ¸ ırfurilor este V (Dij ) = {v0. Costul unui drum Dij ∈ Dij se define¸te s a(Dij ) = 0 + ij∈E(Dij ) aij . . j ∈ V . . Vom a s nota Dij = Dik ◦ Dkj . Orice vˆ k = i. (Este posibil.∞ ∓ a = ∞. determin˘ pe Dij ırf a dou˘ drumuri Dik ∈ Dik ¸i Dkj ∈ Dkj . . . . ın a Dac˘ i. j al lui Dij . vr } ¸i multimea arcelor s ¸ E(Dij ) = {v0v1. . . ˆ particular. In 76 . ∞ + ∞ = ∞. vr−1vr . v1v2. . . . v0v1. v1. Pentru Dij ∈ Dij Dij : (i =)v0. vr−1. ca ∞ s˘ semnifice a acces terminat cu insucces ˆ structura de date ın ˆ care se reprezint˘ matricea A). de asemenea. . v1. .

t ∈ V (G). ∗ S˘ se determine Dij ∈ Dij ∀i. astfel ˆ ıt a ıncˆ ∗ a(Dst ) = min{a(Dst) | Dst ∈ Dst}. j ∈ V . s.ˆ a ı. a 77 . P3 Date G digraf. ∗ S˘ se determine Dst ∈ Dst. ∗ ı. s ∈ V (G). a. se poate considera ¸a c˘ Dij = ∅ ∀i. Observatii: ¸ 1.a : E(G) → R. a. S˘ se determine Dsi ∈ Dsi ∀i ∈ V (G).Principalele probleme de drum (de cost) minim care apar ˆ aplicatii practice (sau sˆ utile ˆ ın ¸ ınt ın rezolvarea altor probleme de optimizare combinatorie) sˆ ınt: P1 Date G digraf. ∗ a(Dij ) = min{a(Dij ) | Dij ∈ Dij }. Cu conventia folosit˘ ˆ reprezentarea ma¸ a ın tricilor de cost adiacent˘.s = t.ˆ a ∗ a(Dsi ) = min{a(Dsi) | Dsi ∈ Dsi}. P2 Date G digraf. a : E(G) → R. a : E(G) → R. j ∈ V (G).

sˆ a ın ınt nevide ¸i. Rezult˘ c˘ toate multimile pe care se cona a ¸ sider˘ minimele ˆ problemele precedente. Sˆ ınt posibile ˆ a solutii mai eficiente. cu costul a a ∞. 3. cum digrafurile considerate sˆ fis ınt nite. atunci Dij ın a este drum ˆ digraful complet simetric obtinut ın ¸ din G prin ad˘ugarea arcelor lips˘.Dac˘ a(Dij ) < ∞ atunci Dij este drum (adev˘rat) a a ˆ G de la i la j. Problema (P3) se poate rezolva iterˆ ınd un algoritm de rezolvare a problemei (P2). ıns˘ ¸ 78 . a 2. iar dac˘ a(Dij ) = ∞. Algoritmii de rezolvare a problemei (P1) se obtin din algoritmii de rezolvare a proble¸ mei (P2) ad˘ugˆ a ındu-li-se un test suplimentar (evident) de oprire. deci minınt imele considerate exist˘. rezult˘ c˘ aceste multimi sˆ finite (ˆ a a ¸ ınt ın fiecare drum vˆ ırfurile sˆ distincte).

Aplicatii. 79 . E) reprezint˘ o retea de comunicatie a ¸ ¸ cu nodurile V ¸i rutele directe ˆ s ıntre noduri formˆ multimea E. ınd ¸ Dac˘ a(e) reprezint˘ lungimea arcului e. Considerˆ ınd aij = − log pij . presupunˆ ınd c˘ arcele a functioneaz˘ independent unele de altele. 1] este probabilitatea de functionare a ¸ a arcului ij ∈ E atunci. prob¸ a abilitatea de functionare a drumului D este ¸ p(D) = ij∈E(D) pij . a) G = (V. Vom schita ˆ continuare trei aplicatii ¸ ¸ ın ¸ practice posibile ale acestor probleme. Dac˘ pij ∈ (0. problema drumului de cost minim de la s la t semnific˘ detera minarea drumului cel mai sigur de la s la t. care se pun ˆ astfel de retele: ın ¸ ”determinarea drumurilor celor mai scurte”. atunci a a a cele trei probleme de mai sus reprezint˘ probleme naturale.

. . (Not˘m c˘ ¸ a a a problemele practice sˆ mai complexe datorit˘ ınt a restrictiilor de utilizare concurent˘ a resurselor ¸ a . ıt a at Se cunoa¸te. at Ideea general˘ pe care se bazeaz˘ pachetele a a soft care rezolv˘ astfel de probleme este de a a asocia proiectului un digraf aciclic (reteaua ¸ PERT) astfel: 80 . ¸ Se cere s˘ se determine un plan de orgaa nizare a proiectului astfel ˆ ıt timpul toıncˆ tal de executie s˘ fie minim. An} multimea activit˘¸ilor atomice ale unui proiect de anvergur˘ (n este mare). .b) Retele PERT (Project Evaluation and Re¸ view Technique).de c˘tre diversele aca tivit˘¸i). utilaje. ¸ at Fie P = {A1. . pentru fiecare activitate Ai tims pul de executie ti . .oameni. a P este o multime partial ordonat˘ cu relatia de ¸ ¸ a ¸ ordine ⇔ activitatea Aj nu poate ˆ ıncepe Ai < Aj decˆ dup˘ terminarea activit˘¸ii Ai. etc.

Fiec˘rei activit˘¸i Al i se asociaz˘ arcul il jl de a at a cost a(il jl ) = tl . Un drum de cost maxim se nume¸te drum s critic. <) ¸i un eveniment t (END) de care vor fi s unite prin cˆ un arc fiecare element maximal ıte al lui P . ˆ digraful obtinut (care este evident aciclic) ¸ In costul maxim al unui drum de la s la t reprezint˘ a cel mai scurt timp posibil de executie a proiec¸ tului. ır¸ at Dac˘ activitatea Ak poate ˆ a ıncepe imediat dup˘ a terminarea activit˘¸ii Al . Nodul il reprezint˘ evenimentul de ˆ a ınceput al activit˘¸ii Al . 81 . ˆ ıntrucˆ ˆ ırzierea oric˘rei activit˘¸i coreıt ıntˆ a at spunz˘toare unui arc de pe drumul critic cona duce la ˆ ırzierea ˆ ıntˆ ıntregului proiect. a Se asociaz˘ un eveniment s (START) unit prin a arce de cost 0 cu elementele minimale ale lui (P. se introduce ˆ digraf at ın arcul jl ik ( activitate fictiv˘) de cost 0. iar nodul jl reprezint˘ evenimenat a tul de sfˆ sit al activit˘¸ii Al .

. n. . i = 1. 82 . an ¸i de un rucsac de volum s b (ai ∈ Z+ . . A4: t4 0 A1: t1 0 0 A2: t2 A5: t5 0 0 0 0 A8: t8 0 End Start 0 A6: t6 0 A3: t3 0 0 A7: t7 0 A9: t9 0 0 A10:t10 0 c) Problema rucsacului. b ∈ Z+. ai ≤ b ∀i = 1. Dispunem de n obiecte de volume a1. . n).Figura de mai jos ilustreaz˘ tipul de digraf a (aciclic) care se formeaz˘ ¸i se evidentiaz˘ un a s ¸ a posibil drum critic. Dificultatea major˘ este a ˆ constructia digrafului (modelarea problemei ın ¸ reale) ¸i problema devine extrem de interesant˘ s a dac˘ (dar ¸i NP-dificil˘) dac˘ se introduc ¸i a s a a s alte tipuri de restrictii ˆ ¸ ıntre activit˘¸i (nu nuat mai temporale).

. . unde Vi = {i0. n. Arcele lui G sˆ ınt: 83 . . i = 1. n . Consider˘m G = (V. i1. E) un digraf cu a V = {s} ∪ V1 ∪ V2 ∪ . de¸i interesant˘ ˆ unele aplicatii s a ın ¸ (de exemplu la ˆ arcarea vapoarelor ˆ ınc˘ ıntr-un port) a fost aleas˘ pentru a pune ˆ evident˘ a ın ¸a leg˘tura dintre metoda program˘ dinamice (disa rii crete) ¸i problemele de drum minim ˆ s ıntr-un digraf. Problema. ib} este asociat obiectului i. 1}∀i = 1. ∪ Vn ∪ {t}. . .Cunoscˆ ınd ”profitul” pi ∈ R+ adus de introducerea obiectului i ˆ rucsac. . xi ∈ {0. se cere s˘ se ın a determine o ˆ arcare a rucsacului de profit ınc˘ total maxim: n max i=1 pixi | n i=1 aixi ≤ b.

sau nu se a pune obiectul 1 ˆ rucsac. iar profitul a a s ınc˘ ce se va ad˘uga este 0). b: (i − 1)j ij cu a((i − 1)j ij ) = 0. deci se ın r˘mˆne pe acela¸i nivel de ˆ arcare j. n ∀j = 0. • ∀j = 0. atunci de la ˆ arcarea rucsacului cu primele ınc˘ i − 1 obiecte se trece la o ˆ arcare cu primele i ınc˘ obiecte ˆ care nu este selectat obiectul i.• s10 ¸i s1a1 cu a(s10 ) = 0 ¸i a(s1a1 ) = p1. a a a • ∀i = 2. profitul fiind 0 ¸i nivelul ın s de umplere r˘mˆnˆnd 0). (dac˘ decidem s˘ nu introducem obiectul i ˆ ruca a ın sac. b: nj t cu a(nj t) = 0. s s ( se pune obiectul 1 ˆ rucsac ¸i se obtine profitul ın s ¸ p1. (se poate ajunge la o ˆ arcare j prin introducerea ınc˘ ınc˘ obiectului i de volum ai la o ˆ arcare a primelor i − 1 obiecte de nivel j − ai). 84 . ajungˆndu-se la nivelul a1 de umplere. a Dac˘ j − ai ≥ 0 atunci avem ¸i arcul a s (i − 1)j−ai ij cu a (i − 1)j−ai ij = pi.

Figura urm˘toare ilustreaz˘ constructia acesa a ¸ tui digraf. 0 0 s 1:0 p2 2:0 n:0 0 p1 1:1 0 2:1 n:1 0 2:a2 n:2 0 0 t 2:a1 1:a1 p2 2:a1+a2 0 0 1:b 2:b n:b 85 .

Se observ˘ din constructie. oric˘rei multimi de obiecte cu suma a ¸ volumelor nedep˘¸ind b ˆ corespunde un drum as ıi de la s la t ˆ G. Solutia polinomial˘ ¸ a descris˘ mai sus conduce la un digraf aciclic cu O(nb) a vˆrfuri. care nu-i dimensiunea intr˘rii !!! a a 86 . ın Rezult˘ c˘ dac˘ ˆ digraful G se determin˘ un a a a ın a drum de cost maxim de la s la t se rezolv˘ a problema rucsacului. Not˘m c˘ descrierea (static˘) a digrafului G a a a poate fi u¸or transformat˘ ˆ una procedural˘ s a ın a astfel ˆ ıt digraful s˘ reprezinte doar ilustrarea ıncˆ a unei metode de programare dinaminc˘ (prospeca a tiv˘) pentru rezolvarea problemei rucsacului. s Reciproc. c˘ orice drum de a ¸ a la s la t ˆ G corespunde unei submultimi de ın ¸ obiecte cu suma volumelor mai mic˘ sau egal˘ a a cu b ¸i de profit egal cu costul acestui drum. Atentie ! ¸ Problema rucsacului este referit˘ uzual a ca una din problemele NP-dificile.

∗ Demonstratie: ”⇐” Fie Dsi ( i ∈ V ) solutii ¸ ¸ ∗ ale problemei (P2) cu a(Dsi ) = min{a(D) | D ∈ ∗ Dsi}.Rezolvarea problemei P2 Teorem˘. . . . s ∈ V ¸i a : E → R. . . a(C) > 0. ∃Dsi ∈ Dsi astfel a s a ∗ ∗ ˆ ıt a(Dsi) = ui ¸i a(Dsi) = min{a(D) | D ∈ ıncˆ s Dsi}. Fie G = (V. ⎪ ui = min(uj + aji ) ⎩ j=i ∗ dac˘ ¸i numai dac˘ ∀i ∈ V . a 87 . un) este o solutie a sistemului ¸ (∗) ∀i = s. V = a ıncˆ {1. . . E) digraf. ın ⎧ ⎪ us = 0 ⎨ Atunci (u1. n}. 1. astfel ˆ ıt s (I) ∀C circuit ˆ G. Not˘m cu ui = a(Dsi ) (i ∈ V ). .

a Dsj j i s D* sj 88 . i ∈ V (Dsj ). Avem dou˘ cazuri posibile: ∗ ∗ 1. ji. s ∗ ceea ce contrazice alegerea drumului Dsi (vezi figura urm˘toare).Ipoteza (I) asigur˘ faptul c˘ us = 0. ¸ a ∗ Pentru i = s drumul Dsi are un penultim vˆ ırf j. a a a Presupunem c˘ ui > uj + aji . Dac˘ Dsj este drumul de la s la j determia ∗ ∗ ırful j. adic˘ a(Dsj ) > a a ∗ a a(Dsj ). adic˘ a a a prima ecuatie a sistemului (*) este verificat˘. i) ∈ Dsi ∗ ∗ ¸i a(D1) = a(Dsj ) + aji < a(Dsj ) + aji = a(Dsi ). Atunci D1 = Dsj ◦ (j. avem: ui = a(Dsi) = nat pe Dsi de vˆ ∗ a(Dsj ) + aji ≥ a(Dsj ) + aji = uj + aji . Ar˘t˘m c˘ ui = uj + aji .

Atunci.∗ ∗ 2. ınd a Dij Dsj j i s D* sj C Deci am demonstrat c˘ ∀i = s ⇒ ui = uj + aji. i) are costul a(C) = ∗ a(Dij ) + aji = a(Dsj ) − a(Dsi) + aji = uj + aji − ∗ a(Dsi) ≤ uj +aji −a(Dsi) = uj +aji −ui < 0. Atunci circuitul C = Dij ◦ (j. ca mai sus. Fie Dsj = Dsi ◦ Dij cele dou˘ a ∗ drumuri determinate pe Dsj de vˆ ırful i. a 89 . a Dac˘ ui nu satisface (*). atunci ar exista j1 a astfel ˆ at ui > uj1 + aj1i. ji. ıncˆ se poate construi un drum de cost mai mic decˆt ui de la s la i. contrazicˆ ipoteza (I) (vezi figura urm˘toare). i ∈ V (Dsj ).

dac˘ j este vˆ a a ırful dinaintea lui i pe un drum de cost minim de la s la i atunci ¸i portiunea de drum de la s la j este drum de s ¸ cost minim de la s la j. dac˘ Dsi = Dsj ◦ Dji atunci Dsj a ∗ (respectiv Dji) sˆ drumuri de cost minim de ınt la s la j (respectiv de la j la i). . ∗ (b) ∀i ∈ V ui = min{a(D) | D ∈ Dsi}(= a(Dsi)). . ∀i ∈ V. ”⇒”. . un) este o a a solutie a lui (*) atunci ¸ (a) ∃Dsi ∈ Dsi : ui = a(Dsi). rezult˘ : a (Principiul optimalit˘¸ii al lui Bellman) dac˘ at a ∗ Dsi este drum de cost minim de la s la i atunci ∗ ∀j ∈ V (Dsi ). a a ¸ a Not˘m c˘ de fapt am dovedit mai sus c˘ a(Dsj ) = a a a ∗ a(Dsj ) adic˘. Inductiv.Rezult˘ c˘ suficienta teoremei este demonstrat˘. . Dovedim c˘ dac˘ (u1. 90 .

ik−1}. consider˘m urm˘torul algoritm: a a a v ← i. // ∃w pentru c˘ uv satisface (*) a ik+1 ← s } ik ← v. . k + +. Nu este posibil ca ˆ ıntr-o iteratie oarecare w ∈ ¸ {i0. while v = s do a ıncˆ { determin˘ w astfel ˆ ıt uv = uw + awv . i1i0. ınd 91 . .(a) Dac˘ i = s. . i1. Dac˘ i = s. k ← 0. . ik+1ik . . c˘ci atunci s-ar obtine un circuit a ¸ C de cost total 0. . atunci us = 0 ¸i drumul Dss a s satisface a(Dss) = 0 = us. v ← w S˘ observ˘m c˘ algoritmul determin˘ drumul a a a a D : (s =)ik+1. . contrazicˆ ipoteza (I). i0(= i) cu D ∈ Dsi satisf˘cˆ a(D) = a(ik+1 ik ) + · · · + a ınd a(i1i0) = (uik − uik+1 ) + (uik−1 − uik ) + · · · + (ui0 − ui1 ) = ui0 − uik+1 = ui − us = ui. .

Presupunem c˘ u = (u1. n. ¸ a a ∗ (b) Fie ui = a(Dsi) ∀i ∈ V . Conform primei p˘rti a demonstratiei ui. Atunci avem: ui > ui = ui1 + ai1i = ui1 + ai1i (din alegerea lui i) ≥ ui pentru c˘ ui satisface (*). deci c˘ ui ¸ a a a a reprezint˘ costuri de drumuri minime. . se observ˘ c˘ ui = ui1 + ai1i. a ıncˆ s j = i. satisfac sisa¸ ¸ temul (∗). . . Cum us = us = 0. . uj = uj . . . a 92 . . un) = a u = (u1. i = 1.Din constructie. . un). unde Dsi este drumul construit la (a) pentru ui. rezult˘ c˘ a a exist˘ i = s astfel ˆ ıt ui = ui ¸i ∀j ∈ V (Dsi). a a Contradictia g˘sit˘ arat˘ c˘ u = u.

pˆ a se depisın˘ ˆ teaz˘ vˆ a ırful s. ˆ ınainte[ˆ ınainte[i]]. a ¸ Algoritmii pe care ˆ vom prezenta se vor ocupa ıi de rezolvarea sistemului (∗).n] cu componente din V ∪ {0. . atunci ¸ se observ˘ c˘. Drumurile ¸ ¸ corespunz˘toare se obtin ca la (a). Totu¸i. Rezult˘ c˘ dac˘ ˆ algoritmul de rezolvare a lui a a a ın (∗) construim un tablou ˆ ınainte[1. . 2.Observatii 1. k este s a vˆ ırful dinaintea lui i de pe drumul minim de la s la i de cost ui. ın s ınainte[i]. } cu interpretarea final˘ a ”ˆ ınainte[i]=vˆ ırful dinaintea lui i de pe drumul minim de la s la i”. Dac˘ algoritmii de rezolvare a lui (∗) vor a evita (prin modul de actualizare a vectorului ˆ ınainte) aparitia circuitelor de cost total 0. dac˘ avem s a ui = uk + aki atunci a¸a cum am v˘zut. atunci vˆ ırfurile acestui drum pot fi determinate ˆ O(n) construind ¸irul i... a a 93 . Din demonstratie rezult˘ c˘ pen¸ ¸ a a tru rezolvarea problemei P2 este suficient s˘ a obtinem o solutie a sistemului (∗).

ın 3. rezolvarea problemelor In (P1)-(P3) corespunz˘toare se poate face utia lizˆ algoritmii pentru digrafuri. algoritmii pentru ın digrafuri sˆ valabili doar dac˘ toate cosınt a turile sˆ nenegative.de¸i nu mai are loc unicitatea solutiei sistemus ¸ lui (∗). Rezult˘ a a c˘ ace¸ti algoritmi vor rezolva problema (P2) a s ˆ conditia ın ¸ (I ) ∀C circuit ˆ G. a(C) ≥ 0. Dificultatea unei astfel de abord˘ri rezult˘ din a a introducerea pentru muchii de cost negativ a unor circuite de lungime 2 de cost negativ. ˆ cazul grafurilor. ˆ cazul grafurilor. prin ˆ ınd ınlocuirea fiec˘rei muchii cu o pereche de arce simeta rice de acela¸i cost ca ¸i muchia pe care o s s ˆ ınlocuiesc. problema (P2) este rezolvat˘. ınt 94 . Deci.

95 . ˆ particular.4. Dac˘ digraful initial are circuite. Avˆ ˆ vedere c˘ multimile Dij sˆ finite. max x = −(min(−x)) x∈A x∈A prin ˆ ınlocuirea costurilor aij cu −aij este posibil˘ doar ˆ cazul digrafurilor ˆ care pentru a ın ın orice circuit C avem a(C) ≤ 0. aceast˘ abordare este posibil˘ ˆ In a a ın cazul digrafurilor f˘r˘ circuite (ca ˆ aplicatiile a a ın ¸ s b) ¸i c) prezentate). problemele a ¸ de drum de cost maxim se pot dovedi u¸or s (prin reducerea polinomial˘ la probleme hamila toniene) a fi N P -dificile. Utilizarea ideii uzuale. ınd ın a ¸ ınt se pot considera probleme analoge problemelor (P1)-(P3) ˆ ınlocuind min cu max.

G este un digraf f˘r˘ circuite dac˘ ¸i a a a a s numai dac˘ admite o numerotare aciclic˘ . v2. ¸ 96 . contradictie ). . v1 sˆ vˆ a ınt ırfurile unui circuit atunci. obtinem ord[v1] < ord[v2] < . Are loc urm˘toarea a Lem˘. cum G are o numerotare aciclic˘. E) este un vector ord[v] v ∈ V . vk . < ord[vk ] < a ¸ ord[v1]. . . . . (cu interpretarea ord[v] = num˘rul de ordine a al vˆ ırfului v) astfel ˆ ıt ıncˆ ∀vw ∈ E ⇒ ord[v] < ord[w].Rezolvarea problemei (P2) ˆ cazul digraın furilor f˘r˘ circuite a a O numerotare aciclic˘ a (vˆ a ırfurilor) digrafului G = (V. Este evident c˘ dac˘ G admite o numerotare aciclic˘ atunci G nu are cira cuite (dac˘ v1. . a a ¸ a a Demonstratie.

datorit˘ finitudinii digrafului. Vom construi un algoritm care s˘ rezolve proba lema ˆ timp O(n + e). dac˘ G nu are circuite atunci exa ist˘ un vˆ a ırf v0 ∈ V astfel ˆ ıt d− (v0) = 0 ıncˆ G (altfel. punem ord[v0] ← 1. consider˘m G ← G-v0 ¸i repet˘m rationamentul a s a ¸ (proprietatea de a nu avea circuite se transmite la subdigrafuri induse).Reciproc. Linia algoritmului: 97 . Aflarea unei numerot˘ri aciclice a unui digraf a se nume¸te ¸i sortare topologic˘ ˆ s s a ıntrucˆt se a sorteaz˘ multimea V ˆ a ¸ ıntr-un mod compatibil cu ”topologia” digrafului. Dimensiunea ¸a problemei este O(n + e). Vom presupune c˘ digraful este reprezentat a cu ajutorul listelor de adiacent˘. ın Acest lucru este posibil datorit˘ unei utiliz˘ri a a judicioase a structurilor de date. se poate a construi un circuit).

parcurgˆnd toate listele de adiacent˘ (la ˆ alnirea a ¸a ıntˆ lui w ˆ lista de adiacent˘ a unui vˆrf oarecare ın ¸a a v se execut˘ d−(w)++ .determin˘m gradele interioare ale vˆ a ırfurilor. crearea unui vˆ ın a ırf de grad interior 0 va implica memorarea lui ˆ ın stiva S0..sc˘dem 1 din gradele interioare ale vˆ a ırfurilor din lista de adiacent˘ a vˆ ¸a ırfului tocmai numerotat(”ˆ scoatem din digraf”) . ıl (c).Parcurgem vectorul d− ¸i vˆ G s ırfurile de grad interior 0 le memor˘m ˆ a ıntr-o stiv˘ S0. a G . (d). s-a obtinut numerotarea aciclic˘ dorit˘ ¸ a a (sortarea topologic˘). a (b). a Dac˘ nu s-au numerotat toate vˆ a ırfurile rezult˘ a c˘ digraful contine circuite.ˆ modificarea anterioar˘. a 98 .scoatem vˆ ırful din topul stivei S0 ¸i-l numerot˘m. a s (a).relu˘m secventa (a) − (c) pˆ a cˆ a ¸ ın˘ ınd stiva devine vid˘. ˆ cazul epuiz˘rii a ¸ ın a vˆ ırfurilor.

u1 ← 0. evident O(1 + 2 + · · · + n − 1) = O(n2). for j := 1 to i − 1 do if ui > uj + aji then { ui ← uj + aji . {O(n + e) operatii } a ¸ ınainte[1] ← 0. vˆrful 2 numerotat cu a a 2 etc. ˆ for i := 2 to n do { ui ← ∞. ˆ ınainte[i] ← 0. dup˘ sortarea topologic˘ a digrafului.) ¸i ˆ plus vˆrful s din enuntul problemei P2 este s ın a ¸ vˆrful 1(pentru c˘ nu vor exista drumuri de la vˆrful s la a a a vˆrfuri cu num˘r de ordine mai mic decˆt el). 2. Sorteaz˘ topologic G. 99 .Revenim la rezolvarea problemei P2. ˆ aceste a a a In ipoteze sistemul (∗) se poate rezolva prin substitutie: ¸ 1. vom In a a c˘ considera vˆrfurile sunt ordonate conform numerot˘rii a a a aciclice(vˆrful 1 numerotat cu 1. ˆ ınainte[i] ← j } } Complexitatea pasului 2 este. ˆ acest caz.

V (Dsi ) \ S = {i}} Dac˘ se reu¸e¸te construirea lui S astfel ˆ ıt a s s ıncˆ S = V . a ıte ırf 100 .Rezolvarea problemei (P2) ˆ cazul cosın turilor nenegative. a Initial. 1961). se va considera S = {s} ¸i ˆ n − 1 pa¸i ¸ s ın s se adaug˘ la S cˆ un nou vˆ din V . atunci conditia (I’) este a ¸ ˆ ındeplinit˘ ¸i o solutie a sistemului (∗) se poate as ¸ obtine cu ajutorul urm˘torului algoritm (Dijk¸ a stra. atunci problema e rezolvat˘. Se consider˘ S ⊆ V astfel ˆ ıt pe parcursul a ıncˆ algoritmului are loc (D ) : ∀i ∈ S ∀i ∈ V \ S ui = min{a(Dsi) | Dsi ∈ Dsi } ui = min{a(Dsi) | Dsi ∈ Dsi . Algoritmul lui Dijkstra Dac˘ aij ≥ 0 ∀ij ∈ E.

Algoritmul lui Dijkstra 1. S ← {s}. Deci trebuie dovedit c˘ dac˘ uj ∗ = min{uj | j ∈ a a V \ S} atunci uj ∗ = min{a(Dsj ∗ ) | Dsj ∗ ∈ Dsj ∗ }. ˆ ınainte[s] ← 0. for i ∈ V \ {s} do { ui ← asi. ¸ Ar˘t˘m mai ˆ ıi c˘ ˆ ipoteza c˘ (D) are loc. a a ıntˆ a ın a a atunci ad˘ugarea lui j ∗ la S nu contrazice (D). } Corectitudinea algoritmului va rezulta dac˘ vom a ar˘ta c˘. a S :← S ∪ {j ∗}. while S = V do { for j ∈ V \ S do if uj > uj ∗ + aj ∗ j then { uj ← uj ∗ + aj ∗j . ˆ ınainte[j] ← j ∗ } determin˘ j ∗ ∈ V \ S : uj ∗ = min{uj | j ∈ V \ S}. 101 . atunci. (D) are loc de asemenea. dac˘ ˆ a a a ınaintea unei iteratii din pa¸ sul 2 are loc (D). dup˘ executia acelei a ¸ iteratii. us ← 0. ˆ ınainte[i] ← s } // dup˘ aceste initializ˘ri (D) are loc a ¸ a 2.

V (Dsj ) \ S = {j. avem a(Dsk ) = uk . V (Dsj ∗ ) \ S = 1 a a {j ∗}}. j ∗} . Pentru ca ¸i cea de-a doua parte a conditiei (D) s ¸ s˘ aib˘ loc dup˘ aceast˘ atribuire.Presupunem c˘ exist˘ Dsj ∗ ∈ Dsj ∗ astfel ˆ ıt a a 1 ıncˆ 1 a(Dsj ∗ ) < uj ∗ . V (Dsj ) \ S = {j}}. Obtinem ¸ 1 ∗ uj ∗ > a(Dsj ∗ ) = uk + a(Dkj ) ≥ uk (costurile sˆ ınt nenegative). ıncˆ / 1 1 1 Atunci a(Dsj ∗ ) = a(Dsk ) + a(Dkj ∗ ). V (Dsj ) \ (S ∪ {j ∗}) = {j}} = min min{a(Dsj ) | Dsj ∈ Dsj . Cum S satisface (D). 102 . s˘ observ˘m a a a a a a c˘ ∀j ∈ V \ (S ∪ {j ∗}) avem a min{a(Dsj ) | Dsj ∈ Dsj . Rezult˘ c˘ V (Dsj ∗ ) \ S = {j ∗}. dup˘ atribuirea ¸ ¸ a a a a S := S ∪ {j ∗}. Contradictia obtinut˘ arat˘ c˘. 1 Din alegerea lui k. prima parte a conditiei (D) are ¸ loc. avem uj ∗ = min{a(Dsj ∗ ) | Dsj ∗ ∈ Dsj ∗ . avem V (Dsk ) \ S = {k} ¸i s 1 cum (D) are loc. min{a(Dsj ) | Dsj ∈ Dsj . 1 ın Fie k primul vˆ al drumului Dsj ∗ (ˆ parcurgırf erea sa din s) astfel ˆ ıt k ∈ S. ceea ce contrazice alegerea lui j ∗.

¸ ın a a c˘ci S satisface (D). primul din cele dou˘ minime a de mai sus este uj . ıt 1 avem a(Dsj∗) = uj ∗ (altfel s-ar contrazice alegerea 1 ınlocuind ˆ D 1 . considerˆ ınd k vˆ ırful dinaintea lui j de 1 pe drumul Dsj avem k = j ∗. k ∈ S ¸i αj = s 1 a(Dsk ) + akj .Cum (D) are loc. 1 Dac˘ drumul Dj ∗j este de lungime 1 atunci a avem αj = uj + aj ∗j . ¸ ˆ Intrucˆ S satisface (D). avem αj = a 1 1 a(Dsj ∗ ) + a(Dj ∗ j ). a 103 . uk este costul unui ıt drum minim de la s la k cu vˆ ırfurile continute ¸ ˆ S deci αj este costul unui drum de la s la j ın cu vˆ ırfurile continute ˆ S. Rezult˘ c˘ αj ≥ uj . obtinem αj = uk + akj . ˆ Intrucˆ S ∪ {j ∗} satisfce prima parte a lui (D). Altfel. Cum S ∪ {j ∗} satisface prima parte a lui (D). Fie αj valoarea celui de1 al doilea minim ¸i fie Dsj drumul pentru care s 1 se realizeaz˘. portiunea D 1 cu un ın sj ¸ lui Dsj ˆ sj∗ drum de cost mai mic). Cum j ∗ ∈ V (Dsj ). Deci αj = uj ∗ + 1 a(Dj ∗ j ).

1977). i ∈ U = V \ S. iar actualiz˘rile a a ın a necesare ˆ pasul 2 s˘ se fac˘ ˆ timpul toın a a ın tal de O(m log n) unde m = |E| (executˆndua se O(m) descre¸teri de valori ui. a ¸ tabloul ˆ ınainte este actualizat pentru memorarea implicit˘ a drumurilor de cost minim. Este posibil˘ organizarea unor cozi cu prioria tate (de exemplu heap-urile) pentru a memora valorile ui. ˆ deın scrierea dat˘ este O(n2) datorit˘ select˘rii mina a a imelor din pasul 2. Johnson . Evident. ın Rezult˘ c˘ (D) are loc pe tot parcursul algoa a ritmului ¸i deci valorile finale ale variabilelor s ui reprezint˘ solutia sistemului (∗). a Complexitatea timp a algoritmului. fiecare neces sitˆnd O(log n) operatii.Am obtinut c˘ singurul caz ˆ care αj < uj este ¸ a ın ¸ a atunci cˆ αj = uj ∗ +aj ∗ j < uj . astfel ˆ ıt extragerea ıncˆ minimului s˘ se fac˘ ˆ O(1). a ¸ 104 . situatie testat˘ ınd ˆ ciclul for al pasului 2.

Cea mai bun˘ implementare se obtine utilˆzˆnd a ¸ a a heap-uri Fibonacci. A) cu proprietatea c˘ a fiecare vˆrf are gradul interior cel mult 1. Dac˘ uv ∈ A atunci u este p˘rintele lui v iar v a a este copilul lui u. A) ˆ care copiii fiec˘rui vˆrf v pot fi ın a a ordonati astfel ˆ at copilul num˘rul i are la ¸ ıncˆ a rˆndul s˘u cel putin i − 2 copii. ceea ce conduce la o complexitate timp de O(m + n log n) (Fredman ¸i s Tarjan. a a a O p˘dure Fibonacci este o p˘dure cu r˘d˘cini a a a a F = (V. a a ¸ 105 . Op˘dure cu r˘d˘cini ( rooted forest) este un a a a digraf aciclic D = (V. atunci a a a a a a ea este un arbore cu r˘d˘cin˘. iar cele cu grad exterior 0 sunt frunzele lui D. a Vˆrfurile de grad interior 0 sunt r˘d˘cinile lui a a a D. Dac˘ p˘durea are o singur˘ r˘d˘cin˘. 1984).

k). . a Dem. σ(vi ) ≥ 2(d (vi)−1)/2 ≥ 2(i−1)/2. . . a¸a c˘ utiliz˘m un rationament a s a a ¸ inductiv. ˆ a Intr-o p˘dure Fibonacci F = (V. + a a a Ar˘t˘m c˘ σ(v) ≥ 2(d (v)−1)/2. ˆ d+ (vi) ≥ i − 2. ıntrucˆt a Avem. Deci σ(v) = 1+ k σ(vi) ≥ 1+ k 2(i−3)/2 ≥ i=1 i=1 · · · ≥ 2(k−1)/2. A) a fiecare vˆrf are cel mult 1 + 2 log |V | copii. ¸i teorema e demonstrat˘. Fie k = d+(v) ¸i fie vi copilul num˘rul i al lui s a v (i = 1. Not˘m cu σ(v) num˘rul vˆrfurilor accea a a sibile din v ˆ F (ordinul subarborelui cu r˘d˘cina ın a a v). . care va implica prin logaritmare afirmatia din enuntul teore¸ ¸ mei. Se observ˘ c˘ inegalitatea precedent˘ are loc a a a pentru v frunz˘.Teorem˘. s a 106 + .

Teorema anterioar˘ ne asigur˘ c˘ num˘rul a a a a r˘d˘cinilor nu va dep˘¸i 2 + 2 log |U |. ¸ (iii) dac˘ j1 ¸i j2 sunt dou˘ r˘d˘cini distincte a s a a a atunci d+ (j1) = d+(j2).Un heap Fibonacci continˆnd valorile reale ¸ a (uj . a a a a 107 . a (ii) dac˘ h este copilul num˘rul i al lui j ¸i h ∈ T a a s atunci h are cel putin i − 1 copii.cˆte o list˘ dublu ˆ antuit˘ Cj a copiilor a a ınl˘ ¸ a fiec˘rui j ∈ U . a -functia p : U → U . j ∈ U ) este o p˘dure Fibonacci F = (U. unde p(j) = p˘rintele lui j ¸ a (dac˘ j e r˘d˘cin˘ p(j) = j). a a as Heapul Fibonacci va fi reprezentat cu ajutorul urm˘toarei structuri de date: a . A) a (fiecare vˆrf j are ordonati copii astfel ˆ at a ¸ ıncˆ copilul num˘rul i are cel putin i−2 copii) ˆ care a ¸ ın este precizat˘ o multime T ⊂ U astfel ˆ at: a ¸ ıncˆ ( i) dac˘ jk ∈ A atunci uj ≤ uk .

. . deci ˆ O(log p). . . . . . a Teorem˘. vk copii lui j. ¸ -functia b : {0. . unde a ın p este num˘rul de vˆrfuri din p˘durea initial˘. . Un astfel de element ın j (cu uj minim) se poate ¸terge astfel: s -fie v1. . . s s a -acum v1. a a a ¸ a Dem. . . vk au devenit r˘d˘cini. iar conditiile a a ¸ (i) ¸i (ii) nu-s afectate. a a a -functia l : U → {0. . Pentru g˘sirea unui j care minimizeaz˘ a a uj este suficient s˘ parcurgem ub(i) pentru i = a 0. . t} → U (cu t = 1 + 2 log |U |) ¸ cu proprietatea c˘ b(d+ (j)) = j pentru fiecare a r˘d˘cin˘ j. structura de date poate fi actualizat˘ ˆ timpul O(m + p + n log p). Pentru g˘sirea ¸i ¸tergerea de n ori a a s s a unui j care minimizeaz˘ uj ¸i descre¸terea de a s s m ori a unei valori uj . t.-functia d+ : U → N. s 108 . -¸tergem j ¸i arcele ce ies din j din p˘dure. . 1} cu l(j) = 1 dac˘ ¸i nu¸ a s mai dac˘ j ∈ T .

d ¸i p (ˆ timpul procesului. vk : repar˘(r): dac˘ ∃s r˘d˘cin˘ cu d+ (r) = d+(s) a a a a a a atunci: dac˘ ur ≤ us. . . . altfel se scoate v a / a din T ¸i se aplic˘ declar˘ r˘d˘cin˘(v): s a a a a a 109 . a Descre¸terea unei valori uj pentru un j ∈ U se s face astfel: declar˘ r˘d˘cin˘(j): a a a a dac˘ j are un p˘rinte. s a ˆ acest fel conditiile (i) ¸i (iii) sunt mentinute. altfel ( ur > us). In ¸ s ¸ iar existenta r˘d˘cinii s de mai sus. fie acesta v. ¸ s ın se actualizeaz˘ structura de date). . s s a a dac˘ v ∈ T se adaug˘ v la T . atunci a a se ¸terge arcul vj ¸i se aplic˘ repar˘(r). se face cu ¸ a a ajutorul funtiilor b. adaug˘ s ca ultim copil a a al lui r ¸i repar˘(r). adau˘ r s a ca ultim copil al lui s ¸i repar˘(s).-pentru repararea conditiilor (iii) se execut˘ ¸ a pentru fiecare r = v1.

a s a s respectiv descre¸terilor lui ... rezult˘ a ¸ ın a c˘ algoritmul are complexitatea O(m+p+n log p) a ¸i teorema e demonstrat˘. deoarece cre¸tem T cel mult o dat˘ dup˘ ce a s a a descrescut un uj . Cum decizia dac˘ s˘ se apeleze una sau alta a a dintre cele dou˘ functii se face ˆ O(1).) num˘rul cre¸terilor.Not˘m cu incr(. ˆ timpul operatiilor s ın ¸ din enuntul teoremei. Dac˘ R este multimea r˘d˘cinilor. Avem: ¸ num˘rul de apeluri ale lui declar˘ r˘d˘cin˘= a a a a a decr(uj )+decr(T ) ≤ ≤decr(uj )+incr(T )+p ≤2decr(uj )+p=2m + p.) ¸i decr(. avem: a ¸ a a num˘rul de apeluri ale lui repar˘= a a decr(A)+decr(T ) ≤ ≤decr(A)+incr(R)+p =2decr(A)+p ≤2(n log p+ num˘rul de apeluri ale lui declar˘ r˘d˘cin˘)+p a a a a a ≤ 2(n log p + 2m + p) + p.. s a 110 .

Demonstratia rezult˘ din teorema precedent˘ ¸ a a ¸i din urm˘toarea figur˘ care indic˘ un mod de s a a a constructie a heap-ului initial (binomial): ¸ ¸ B4 B3 B2 B1 B0 111 .Corolar. Algoritmul lui Dijkstra pentru rezolva rea problemei P2 se poate imlementa cu ajutorul heap-urilor Fibonacci ˆ complexitatea timp ın O(m + n log n).

ˆ cazul cel mai nefavorabil. Complexitatea. (ii) ∀ij ∈ E g(i) ≤ aij + g(j). dac˘ sˆ a ınt satisf˘cute conditiile (ii). a ¸ 112 .Dac˘ se dore¸te rezolvarea problemei (P1) cu a s ajutorul algoritmului lui Dijkstra. atunci g(i)=distanta (euclidian˘) de la ¸ a i la t este un estimator consistent. ¸ O functie g : V → R+ se nume¸te estimator ¸ s consistent dac˘ a (i) ∀i ∈ V ui + g(i) ≤ min{a(Dst) | Dst ∈ s Dst ¸i i ∈ V (Dst)}. S˘ observ˘m c˘ g(i) = 0 ∀i este un estimator a a a consistent (trivial). la inın troducerea lui t ˆ S. Totu¸i. ˆ situatii practice cona ıne s s ın ¸ crete exist˘ posibilitatea de a gr˘bi introduca a erea lui t ˆ S utilizˆ ın ınd o functie de dirijare a ¸ procesului de constructie a lui S. se poate opri algoritmul. ın r˘mˆ aceea¸i. atunci. Dac˘ ˆ a V (G) este o multime de puncte din a ıns˘ ¸ plan.

O ima a plementare care nu are aceste deficiente este ¸ urm˘toarea datorat˘ lui Glover.Dac˘ g este un estimator consistent atunci se a ın poate modifica alegerea lui j ∗ ˆ algoritm astfel: uj ∗ + g(j ∗) = min{uj + g(j) | j ∈ V \ S}. Avantajul este acela c˘ se vor introduce ˆ S a ın vˆ ırfuri care s˘ ne apropie de t. Algoritmul r˘mˆ a ıne valabil (demonstratia este ¸ identic˘ situatiei g(i) = 0 ∀i ¸i se folose¸te (ii) a ¸ s s repetat). listele de adiacent˘ sˆ ın ¸a ınt memorate ˆ memoria secundar˘). ˆ cazul digrafurilor cu multe vˆ In ırfuri (ˆ care. de exemplu. respectiv neaplicabil˘. a s ırf lista sa de adiacent˘) aceast˘ implementare ¸a a este neeficient˘. Klingman ¸i a a s Philips (1985) 113 . sau ˆ cazul ın a ın digrafurilor date functional (se dispune de o ¸ procedur˘ care construie¸te pentru un vˆ dat. a ˆ implementarea care rezult˘ din descrierea In a a algoritmului lui Dijkstra. s-a presupus c˘ se dispune de matricea de cost-adiacent˘ a di¸a grafului.

+ L ← NG (i).Partition Shortest Path ( PSP) algorithm: 1. ˆ ınainte(j) ← i. N OW ← {s}. ˆ ınainte(s) ← 0. S ← ∅. N EXT ← ∅.// se genereaz˘ ˆ L. 2. us ← 0. while N OW ∪ N EXT = ∅ do { while N OW = ∅ do { Extrage i din NOW. lista de a ın adiacent˘ ¸i costurile corespunz˘toare ¸a s a for j ∈ L do if j ∈ N OW ∪ N EXT then / { uj ← ui + aij . S ← S ∪ {i}. introdu j ˆ NEXT ın } else if uj > ui + aij then { uj ← ui + aij ˆ ınainte(j) ← i } } if N EXT = ∅ then { determin˘ d = min{ui | i ∈ N EXT }. a transfer˘ ∀i ∈ N EXT cu ui = d ˆ NOW a ın } } 114 .

.. u2 = (u2. u1 ). n − 1 a s (BM ) um = min{a(D) | D ∈ Dsi. algorita a ıncˆ mul lui Dijkstra nu mai este valabil ˆ general ın (introducerea lui j ∗ ˆ S poate conduce la vioın larea conditiei (D)). . . u2 . . . . . Dac˘ exist˘ ij ∈ E astfel ˆ ıt aij < 0. n n 1 1 n−1 n−1 n−1 un−1 = (u1 . .Rezolvarea problemei (P2) ˆ cazul genın eral. . . u2 ). ¸ Consider˘m ∀i ∈ V ¸i ∀m = 1. . . . . . atunci un−1 este solutia sistemului (∗). i Cum orice drum ˆ G are cel mult n − 1 arce ın rezult˘ c˘ dac˘ reu¸im constructia lui a a a s ¸ u1 = (u1. ¸ Algoritmul care rezult˘ este urm˘torul: a a 115 . nr arcelor lui D este ≤ m}. ¸ Considerˆ ınd ˆ ındeplinit˘ conditia (I’) vom rea ¸ zolva sistemul (∗) prin aproximatii succesive. un ).

Fie i ∈ V ¸i cons s sider˘m multimile de drumuri: a ¸ A = {D | D ∈ Dsi. Ford. for m := 1 to n − 2 do for i := 1 to n do um+1 ← min um. Moore (∼ 1960) 1. min{a(D) | D ∈ C}) 116 . num˘rul arcelor lui D ≤ m}. num˘rul arcelor lui D ≤ m+1}. s i // evident (BM) are loc 2. num˘rul arcelor lui D = m+1}.Algoritmul lui Bellman. C = {D | D ∈ Dsi. minj=i(um + aji ) i j i Pentru a demonstra corectitudinea algoritmului. a Atunci A = B ∪ C ¸i s min{a(D) | D ∈ A} = min(min{a(D) | D ∈ B}. ar˘t˘m c˘ dac˘ um(m ≥ 1) satisface (BM) a a a a atunci ¸i um+1 o satisface. for i ∈ V \ {s} do u1 ← asi. a a B = {D | D ∈ Dsi. u1 ← 0.

min{a(D) | D ∈ i C}). s ˆ ıntrucˆ Dsj ıt Rezult˘ c˘ a a min{a(D) | D ∈ A} = min{um. Dac˘ j este vˆ a ırful ce-l precede pe i ˆ D0 (exın a ist˘. rezult˘ c˘ a a min{a(D) | D ∈ A} = min(um. ˆ a ıntrucˆ D0 are m˘car 2 arce) atunci ıt 0 a(D0) = a(Dsj ) + aji ≥ um + aji . j 0 are m arce ¸i um satisface (BM). D0 ∈ C.Cum um satisfac (BM). Fie min{a(D) | D ∈ C} = a(D 0). i Observ˘m c˘ algoritmul are complexitatea de a a O(n3) dac˘ determinarea minimului din pasul a 2 necesit˘ O(n) operatii. la stabilirea s a minimului din pasul 2. minj=i(um + i j ın aji )} valoare care ˆ algoritm se atribuie lui um+1. 117 . initializat ˆ mod evident ˆ ¸ ın ın pasul 1 ¸i actualizat corespunz˘tor. a ¸ Determinarea drumurilor minime se face mentinˆ ¸ ınd vectorul ˆ ınainte.

se poate obtine o implementare a acestui algo¸ ritm. Dac˘ la algoritm se adaug˘ ¸i pasul 3: a a s n−1 + aji )) 3. n−1 > minj=i(uj then”exist˘ circuit de cost negativ “. care s˘ aib˘ complexitatea O(nm). folosind a a o coad˘ U Q ˆ care se vor p˘stra vˆ a ın a ırfurile i ¸ c˘rora li se modific˘ ui curent (se va renunta. Depistarea circuitului C se face simplu (O(n)) utilizˆ vectorul ˆ ınd ınainte. 118 . la memorarea tuturor aproximatiilor ¸ succesive).Observatii: ¸ 1. if (∃i ∈ V a. Mai mult.ˆ ui ı. din demonstratia corectitudinii ¸ algoritmului ar trebui s˘ nu se poat˘ mic¸ora a a s n−1 ui ). a se obtine posibilitatea test˘rii ˆ O(n3) a ¸ a ın existentei unui circuit C de cost negativ ˆ di¸ ın graful G (altfel. Dac˘ exist˘ k < n − 1 astfel ˆ ıt uk = uk+1 a a ıncˆ atunci algoritmul se poate opri. 2. a a evident.

j))n×n cu elementele avˆ ınd semnificatia ¸ ˆ ınainte(i. se obtine un algoritm de complexitate O(n3). ¸ 119 . Problema se reduce la determinarea matricii ınd se cunoa¸te A mas U = (uij )n×n. j ∈ V. . atunci. atunci cˆ tricea de cost-adiacent˘.j)=vˆ ırful dinaintea lui j de pe drumul de cost minim de la i la j ˆ G. iterˆ a a a a ınd algoritmul lui Dijkstra pentru s ∈ {1. . . n}. . ın S˘ observ˘m c˘ dac˘ aij ≥ 0 ∀ij. a Drumurile de cost minim vor fi obtinute ˆ O(n) ¸ ın dac˘ odat˘ cu determinarea matricii U se va a a construi matricea ˆ Inainte=(ˆ ınainte(i. Consider˘m a uij = min{a(Dij ) | Dij ∈ Dij } ∀i.Rezolvarea problemei (P3).

Solutia I a. Rezult˘ c˘ se poate itera algoritmul lui Dijkstra a a pentru obtinerea drumurilor de cost a minim ¸i ¸ s din relatia (2) se observ˘ c˘ un drum este de ¸ a a cost a minim dac˘ ¸i numai dac˘ este drum de as a cost a minim. Consider˘m a : E → R+ dat˘ de a a aij = aij + α(i) − α(j). ı. dar a ¸ exist˘ ¸i arce de cost negativ. n se obtine un algoritm de complexitate O(n4). s ın (2) a(Dij ) = a(D) + α(i) − α(j).Dac˘ G nu contine circuite de cost negativ. iterˆ algoritmul as ınd ¸ lui Bellman Ford pentru s = 1. Ar˘t˘m ˆ continuare c˘ se poate proceda ¸i a a ın a s mai eficient. Avem aij ≥ 0 ¸i. oricare ar fi Dij ∈ Dij . ∀ij ∈ E. ¸ Fie α : V → R a. ˆ plus. Rezult˘ urm˘torul algoritm: a a 120 . ˆ ∀ij ∈ E α(i) + aij ≥ α(j).

adic˘ ∀ij ∈ E a uj ≥ ui + aij . ¸ Fie um = min{a(Dij ) | Dij ∈ Dij . V (Dij ) \ {i. 2. n}. . a s s 2. fixˆ ın ınd s ∈ V ¸i rezolvˆ (P2) cu alg. i ∈ V ) este solutie a lui ¸ In a a (P2). j ∈ V ) este solutie a sistemu¸ lui (∗) ⇒ uj = mini=j {ui + aij }. j ∈ {1. 2. sau. n + 1. s ınd ˆ adev˘r. . . .1. A construind U ¸i ˆ a s Inainte. aij + ui − uj ≥ 0. . m−1}} ∀i. se poate considera α(i) = ui ∀i ∈ V . j} ⊆ ij {1. 121 . m = 1. atunci (uj . Determin˘ α ¸i construie¸te A. . dac˘ (ui. Solutia a II a. 3. Rezolv˘ (P3) pt. . Bellman-Ford. . Pasul 1 se poate realiza ˆ timpul O(n3). Deci. Determin˘ U (uij := uij − α(i) + α(j) ∀ij). a Pasul 2 al algoritmului necesit˘ O(n)3) operatii a ¸ prin iterarea algoritmului lui Dijkstra.

. . cu V (C) \ {i} ⊆ {1. n. ¸i atunci. um +um } ∀i. j ∈ V. im mj Evident. evident u1 = aij ∀i. . In um+1 = min{um. . dac˘ se obtine um < 0 atunci digraful a ¸ ii contine un circuit de cost negativ C care trece ¸ prin vˆ ırful i. ij im mj ij Aceast˘ ultim˘ relatie se poate justifica induca a ¸ tiv: un drum de cost minim de la i la j care nu are vˆ ırfuri interioare ≥ m poate s˘ nu contin˘ a ¸ a vˆ ırful m. . at s a este um + um . ˆ plus. . din principiul ops timalit˘¸ii al lui Bellman ¸i ipoteza inductiv˘. . sau poate s ij contine vˆ ¸ ırful m. m − 1}. m = 1. . j ∈ V (presupunem ij matricea A avˆ ınd elementele diagonale egale cu 0).Atunci. Aceast˘ solutie a problemei (P3) este cunosa ¸ cut˘ ca algoritmul lui Floyd-Warshal ¸i poate a s fi descris astfel: 122 . ¸i atunci are costul um.

complexitatea algoritmului este de O(n3). j) if (i = j ∧ aij < 0) then return ”circuit negativ“ } Evident. ˆ ınainte(i. ınainte(i. Dac˘ digraful nu contine circuite ¸ a ¸ de cost negativ. Observatie. val¸ ınd orile finale ale elementelor diagonale dau costul minim al unui circuit ce trece prin vˆ ırful corespunz˘tor. i) ← 0 } if i = j then { aii ← 0. a 123 .1: for i := 1 to n do for j := 1 to n do { ˆ ınainte(i. j) ← i.ˆ } 2: for m := 1 to n do for i := 1 to n do for j := 1 to n do if aij > aim + amj then { aij ← aim + amj . j) ←ˆ ınainte(m. atunci initializˆ aii ← ∞.

. Dac˘ not˘m U m = (um) cu m ∈ {0. Dij are cel mult m arce} ij ∀i. n − 1. a ˆ Intregul proces de calcul se poate rescrie matricial dac˘ se consider˘ urm˘torul produs pe a a a multimea matricilor p˘trate cu elemente reale: ¸ a 124 .Solutia a III a. . j ∈ V . 2 . ∀m = 1. a iterarea algoritmului lui Bellman Ford revine la: 1. . 1. Fie a a um = min{a(Dij ) | Dij ∈ Dij . 2. . for i. Consider˘m aii = 0 ∀i ∈ V (G ¸ a nu contine circuite de cost < 0). n − a a ij 0 are toate elementele ∞ cu exceptia 1}. . . ¸ Iterarea algoritmului lui Bellman Ford corespunde urm˘toarei abord˘ri. ij 2. . for m := 0 to n − 2 do for i. j ∈ V do um+1 = mink (um + akj ). se realizeaz˘ pena tru k = j. ij ik (ˆ minimul anterior. comparatia cu um din ın ¸ ij algoritmul Bellman Ford. j ∈ V do u0 ← ∞ if i = j else 0. ¸i utilizˆ s ınd ipoteza c˘ ajj = 0). unde U ¸ celor de pe diagonal˘ care-s egale cu 0 atunci.

C ∈ Mn×n B ⊗ C = P = (pij ) unde. atunci calculul matricii P este similar ˆ ınmultirii uzuale a matricilor. ˆ ¸ In plus operatia ⊗ este asociativ˘. Rezult˘ c˘ determinarea succesiv˘ a matricilor a a a A.∀B. . . pij = mink=1. U 2 = A(2). atunci A(2 ) = A(n−1) ∀k : 2k ≥ n − 1. ¸ a Cu aceste notatii avem ¸ s a a U m+1 = U m ⊗ A ¸i inductiv rezult˘ c˘ U 1 = A. . U n−1 = A(n−1) unde A(k) = A(k−1) ⊗ A ¸i A(1) = A. . . . A(2).n(aik + bkj ). s ˆ ipoteza c˘ graful nu are circuite de cost negIn a k ativ. Se observ˘ c˘. conduce la un algoritm de complexitate O(n3 log n) pentru rezolvarea problemei (P3) 125 . A(4) = A(2) ⊗A(2). dac˘ se folose¸te determinarea a a a s a uzual˘ a minimului. .

.38 (Cooppersmith......81(Strassen 1969).... Winograd 1987))......) Dac˘ ”produsul“ matricial considerat se face a cu algoritmi mai performanti atunci se obtine ¸ ¸ o rezolvare eficient˘ a problemei (n3 din evala uarea precedent˘ se poate ˆ a ınlocui cu nlog2 7 = n2... sau chiar cu n2. dup˘ ¸ ın ¸ a determinarea lui U n−1..... .... 126 ................. matricea ˆ Inainte se va obtine ˆ O(n3) ¸ ın operatii ca ˆ demonstratia teoremei 1...(desigur.

ın S˘ observ˘m c˘ dac˘ x ∈ X ∩ Y atunci drumul a a a a de lungime 0 D = {x} este XY -drum. t. G) multimea tuturor XY ¸ drumurilor ˆ G.3. ¸ s ın ın Numim XY-drum ˆ G orice drum D ˆ G de la un vˆ x ∈ X la un vˆ y ∈ Y . Teorema lui Menger ¸i aplicatii. Fie G = (V. E) (di)graf ¸i X. astfel ˆ ıt ırf ırf ıncˆ V (D) ∩ X = {x} ¸i V (D) ∩ Y = {y}. D1 : a. u. c ¸i D2 : a. Probleme de conexiune. d In a a s sunt singurele XY -drumuri ce pornesc din a : v a t u c b X d Y Vom nota cu D(X. v. Y . 127 . s ˆ figura al˘turat˘. s ¸ Definitie. Y ⊆ V .

G) num˘rul maxim de a XY -drumuri disjuncte ˆ (di)graful G. Y ⊆ ¸ s V . necesit˘ deters a minarea unor multimi de XY -drumuri disjuncte ¸ ¸i cu num˘r maxim de elemente. dar ¸i unele probleme legate de conex¸ s iunea grafurilor ¸i digrafurilor. ın Teorema care precizeaz˘ acest num˘r a fost a a stabilit˘ de Menger ˆ 1927 ¸i constituie unul a ın s din rezultatele fundamentale din teoria grafurilor. s a Vom nota cu p(X. 128 . E) un digraf ¸i X. Y . G) ⇒ ¸ ıncˆ V (D) ∩ Z = ∅.Vom spune c˘ drumurile D1 ¸i D2 sˆ disjuncte a s ınt dac˘ V (D1) ∩ V (D2) = ∅. Y . Definitie. Numim multime XY -separatoare ˆ G o ¸ ın multime Z ⊆ V astfel ˆ ıt ∀D ∈ D(X. din retelele de co ¸ municatie. a Probleme practice evidente. Fie G = (V.

G). G). Z ∈ S(X. Y . G) a D nu este drum ˆ G − Z. Y . Y . Y . G) sau a s T ∈ S(Z. Y. G)}. G) = {Z | Z ¸i cu s XY -separatoare ˆ G} ın k(X. Y . G). G) = min{|Z|. Y . Din definitie. ın (b) X. G) atunci ∀A astfel ˆ ıt a ıncˆ Z ⊆ A ⊆ V avem A ∈ S(X. G) atunci ∀D ∈ D(X. Y. (c) Dac˘ Z ∈ S(X. 129 . Y ∈ S(X. Y . Y . rezult˘ urm˘toarele propriet˘¸i ¸ a a at imediate ale multimilor XY -separatoare: ¸ (a) Dac˘ Z ∈ S(X. G) ¸i T ∈ S(X.Not˘m cu a S(X. Z. Y . (d) Dac˘ Z ∈ S(X. G) atunci T ∈ D(X.

. . Y . Dp sˆ XY -drumuri disjuncte ˆ G. G) = k(X. . Y . 1. atunci ∀Z ∈ S(X. p): ınt p |Z| ≥ |Z ∩ ∪i=1V (Di )| = i=1. Fie G = (V. E) (di)graf ¸i X. G). Dac˘ p = p(X. D2. G) avem Z ∩ V (Di) = ∅ ¸i s cum Di sˆ disjuncte (i = 1. Y . Y. Y ⊆ a s V . 130 .Proprietatea (d) este esential˘ pentru obtinerea ¸ a ¸ teoremei urm˘toare ¸i este evidentiat˘ mai jos a s ¸ a Z X T Y Teorem˘. G). . Deci ∀Z ∈ S(X. Atunci p(X. G) |Z| ≥ p. a s Demonstratie: 10. ˆ particular ın k(X. Y . G) ≥ p(X. Y . G) ¸i ¸ ınt ın D1.p |Z ∩ V (Di)| ≥ i=1. Y .p 1 = p.

Y . (Evident. Y . Y . ˆ s ımpreun˘ cu a 10. G) XY -drumuri disjuncte ˆ G. Y ⊆ V a (∗) ın ∃ k(X. a Cum (∗) se verific˘ pentru (di)grafuri G cu a a(G) = 1. Y . Consider˘m VXZ = {v | ∃D ∈ D(X. Y . 2. Z = X. consider˘m ˆ pasul inductiv c˘ a ın a (∗) are loc pentru orice (di)graf G ¸i orice s X . Y ⊆ V (G ). cu a(G ) < a(G). din (∗) rezult˘ c˘ a a p(X. G) : v ∈ s V (D)}. vom presupune c˘ a X ⊆ Y . Y . G) astfel ˆ ıt a ıncˆ |Z| = k. E) ∀X. G) ≥ k(X. Pentru a exclude cazurile banale. G) ¸i deci. G) > 0. s Cazul 1. Ar˘t˘m prin inductie dup˘ a(G) = |V | + |E| a a ¸ a c˘ ∀G = (V. Z.20. Y ⊆ X ¸i k = k(X. Exist˘ Z ∈ S(X. Y . G) : v ∈ a V (D)} ¸i VZY = {v | ∃D ∈ D(Z. teorema e demonstrat˘). 131 .

atunci se a a obtine c˘ Z nu este XY-separatoare. 132 . Rezult˘ |VZY | < |V |. G) ¸i |Z| = k(X. Z X Vxz Vzy Y Pe de alt˘ parte. dac˘ ex¸ a a ist˘ z ∈ Z astfel ˆ ıt z ∈ VXZ ∩ VZY atunci a ıncˆ / Z −{z} este XY-separatoare. contrazicˆ |Z| = ınd k(X. Y . a a a atunci cum X ∈ S(X. ˆ mod a In similar |VXZ | < |V |. exist˘ x ∈ X −Z (dac˘ X ⊆ Z.S˘ observ˘m c˘ VXZ ∩ VZY = Z a a a (dac˘ exist˘ v ∈ VXZ ∩ VZY − Z. G) s rezult˘ X = Z. Y . Y . contrazicˆ a ınd ipoteza cazului 1) ¸i evident x ∈ VZY (altfel. Z nu ar fi XY s / separatoare). G)).

a(GZY ) < a(G). rezult˘ c˘ exist˘ k XZa a a a s drumuri disjuncte ˆ GXZ ¸i k ZY -drumuri disın s juncte ˆ GZY . GZY ) = k s (Z este XZ. se contrazice definitia ¸ ¸ lui k pentru G.Fie GXZ = [VXZ ]G ¸i GZY = [VZY ]G. Y . ar exista o multime T separatoare de cardinal < k. ¸ Avem k(X. Z X Y 133 .separatoare ˆ GXZ . s Din ipoteza inductiv˘. respectiv ZY -separatoare ın s a ın a ˆ GZY ¸i are cardinalul k. Z. ¸ atunci. dac˘ ˆ unul din cele dou˘ graın furi. X ¸i Y ). Din s observatiile precedente: a(GXZ ). ın rezult˘ c˘ aceste 2k drumuri se pot concatena a a dou˘ cˆ dou˘ ˆ G (vezi figura de mai jos) ¸i a ıte a ın s deci (∗) are loc. GXZ ) = k ¸i k(Z. Cum VXZ ∩ VZY = Z ¸i |Z| = k. utilizˆ ınd observatia (d).

pentru precizarea notatiilor. Consider˘m a a a a / a G = G − e. S˘ observ˘m c˘ y ∈ X. Cum X ⊆ Y . atunci ˆ G exist˘ Z a XY -separatoare cu |Z | = k−1 (se aplic˘. evena tual. X ¸i Y . G ) < k. Z = ¸ X. atunci cele k XY -drumuri a disjuncte din G sˆ XY -drumuri disjuncte ¸i ˆ ınt s ın G deci (∗) are loc pentru G. 134 . Oricare ar fi Z XY -separatoare astfel ˆ ıt |Z| = k avem Z = X sau Z = Y . Y . Fie a ın e = xy prima muchie (arc) a acestui drum (exist˘!). ıncˆ Presupunem. X − {x} a nu este XY -separatoare (are mai putin de k ¸ elemente). s ın a Dac˘ k(X. Avem a(G ) < a(G). s Dac˘ k(X.Cazul 2. G ) = k. Y . Exist˘ deci un XY-drum ˆ G. proprietatea (c)). deci (∗) are loc pentru G . exist˘ x ∈ X − Y . X ¸i Y .

s Cele k drumuri din (∗) sˆ ˆ acest caz ınt ın s {z}z∈Z ¸i (x. e x y Y X Z’ Cu acestea. Din definitia lui k. Din ipoteza cazului 2. s Din alegerea lui x ¸i y avem Z ∪ {x} = Y ¸i s Z ∪ {y} = X. xy. a 135 . y). y ∈ Z ¸i ¸ a a / / s |Z ∪ {x}| = |Z ∪ {y}| = k. rezult˘ c˘ x ∈ Z . rezult˘ atunci c˘ a a Z ∪ {x} = X ¸i Z ∪ {y} = Y .Deci Z nu este XY -separatoate ˆ G (|Z | < k). teorema este demonstrat˘. ın Singurele XY -drumuri pe care Z nu le intersecteaz˘ sˆ cele care au drept prim˘ muchie a ınt a (arc) pe e.

a¸a cum vom ar˘ta ˆ capi¸ s a ın tolul relativ la probleme de flux. Egalitatea min-max din enuntul ¸ ¸ teoremei este interesant˘ ¸i conduce. ˆ graful r˘mas exist˘ s ın a a un drum de la s la t. ˆ cazuri ın particulare. Exist˘ k ıncˆ / a drumuri intern disjuncte de la s la t ˆ graful G ın dac˘ ¸i numai dac˘ ˆ as a ındep˘rtˆ mai putin de k a ınd ¸ vˆ ırfuri diferite de s ¸i t. 1’. 20 Teorema se poate demonstra ¸i algoritmic s ca o consecint˘ a teoremei fluxului maxim¸a sectiunii minime. Forma echivalent˘ ˆ care a fost enuntat˘ ¸i a ın ¸ a s demonstrat˘ initial de Menger (1927) teorema a ¸ 1 este: Teorem˘. astfel ˆ ıt s = t. E) un (di)graf ¸i a s s. t ∈ V .Observatii: 10. la rezultate importante. 136 . a¸a cum as s vom vedea. Fie G = (V. st ∈ E.

arat˘ a c˘ teorema 1 se obtine din teorema 1’. ¸ at s Se observ˘ c˘ dac˘ se consider˘ X = NG(s) ¸i a a a a + − Y = NG(t) (respectiv. a ¸ 137 . X. Y s t X Reciproc. Y din teorema 1.Not˘m c˘ dou˘ drumuri sˆ intern disjuncte a a a ınt dac˘ nu au vˆ a ırfuri comune cu exceptia extremit˘¸ilor. NG (s) ¸i NG (t) ˆ cazul s ın digrafurilor) teorema 1’ se obtine imediat din ¸ teorema 1. o constructie invers˘ celei de mai sus ¸ a asupra tripletului G.

se obtine atunci cˆ G este un graf bipartit iar X ¸ ınd ¸i Y sˆ cele dou˘ clase ale bipartitiei: s ınt a ¸ 138 . {t}. Utilizˆ teorema 2’ obtinem ınd ¸ Corolar.Am definit un graf G p-conex (p ∈ N ∗) dac˘ a G = Kp sau dac˘ |G| > p ¸i G nu poate fi a s deconectat prin ˆ ındep˘rtarea a mai putin de p a ¸ vˆ ırfuri. ın Determinarea num˘rului k(G) de conexiune a a grafului G (cea mai mare valoare a lui p pentru care G este p-conex) se reduce deci la determinarea lui st∈E(G) min p({s}. ın Un caz particular interesant al teoremei 1. G) problem˘ care vom dovedi c˘ se poate rezolva a a ˆ timp polinomial. Un graf G este p-conex dac˘ G = Kp a sau ∀st ∈ E(G) exist˘ p drumuri intern disa juncte de la s la t ˆ G.

care este egal. 2. fundamental˘ ˆ numeroase rationamente ¸ a ın ¸ combinatorii. R.Teorem˘. O aplicatie. a acestei teoreme este teorema lui Hall (1935). R. Vom nota a ¸ familia A = (Ai. conform teoremei 1. 139 . 1931) Dac˘ G = a a (S. Demonstratie: Evident. R. (Konig. cardinalul maxim al ¸ unui cuplaj ˆ G este ın p(S. G). i ∈ I) ¸i vom folosi notatia s ¸ functional˘ uzual˘ ¸ a a A(J) = ∪j∈J Aj (pentru J ⊆ I). cu k(S. atunci cardinalul maxim al unui cuplaj este egal cu cardinalul minim al unei multimi de vˆ ¸ ırfuri incidente cu toate muchiile grafului. Nu¸ s ¸ mim familie de submultimi ale lui S (indexat˘ ¸ a dup˘ I) orice aplicatie A : I → 2S . Teorema rezult˘ imediat dac˘ observ˘m c˘ o a a a a multime de vˆ ¸ ırfuri este SR-separatoare dac˘ ¸i as numai dac˘ este incident˘ cu orice muchie a a a grafului. E) este un graf bipartit. Definitie: Fie I ¸i S multimi finite nevide. G).

i ∈ I) este o familie de submultimi a ¸ ale lui S. i ∈ I) formeaz˘ un sistem In a de reprezentanti ai familiei A. o functie rA : I → S cu proprietatea ¸ c˘ rA (i) ∈ Ai. a Problema central˘ ˆ teoria transversalelor este a ın aceea de a caracteriza familiile A care admit transversale (eventual cu anumite propriet˘¸i). (rA (i). ˆ acest caz. ∀i ∈ I se nume¸te functie de a s ¸ reprezentare pentru familia A. ¸ Dac˘ functia de reprezentare rA este injeca ¸ tiv˘ atunci rA (I) ⊆ S se nume¸te sistem de a s reprezentanti distincti ai familiei A. sau transver¸ ¸ sal˘.Dac˘ A = (Ai. at Prima teorem˘ de acest tip a fost stabilit˘ de a a Hall ˆ 1935: ın 140 .

Familia A = (Ai. ıt a |rA(J)| ≥ |J| (ˆ Suficienta. E) unde am presupus I ∩ S = ∅ (altfel. ar˘t˘m c˘ orice In a a a a multime de vˆ ¸ ırfuri incident˘ cu toate muchiile a lui GA are m˘car |I| elemente. Demonstratie: Necesitatea este evident˘: dac˘ ¸ a a A admite o functie rA de reprezentare injectiv˘ ¸ a atunci ∀J ⊆ I rA(J) ⊆ A(J) ¸i deci |A(J)| ≥ s ıntrucˆ rA este injectiv˘). a 141 . 3. ˆ ipoteza c˘ (H) are loc. s ∈ S ∧ s ∈ Ai}. S. se consider˘ copii izomorfe disjuncte) iar E = a {is | i ∈ I.Teorem˘. Consider˘m graful bipartit GA = ¸ a (I. Se observ˘ c˘ a a NGA (i) = Ai ¸i c˘ A are o transversal˘ dac˘ s a a a ¸i numai dac˘ GA are un cuplaj de cardinal s a |I|. i ∈ I) de submultimi a ¸ ale lui S admite o transversal˘ dac˘ ¸i numai a a s dac˘ a (H) |A(J)| ≥ |J| ∀J ⊆ I.

|X| = a |I | + |S | ≥ |I | + |A(I − I )|. I’ I S S’ 142 . Folosind conditia ¸ (H) obtinem ˆ continuare: |X| ≥ |I | + |A(I − ¸ ın I )| ≥ |I | + |I − I | = |I|. Atunci. adic˘ A(I − I ) ⊆ S . Fie X = I ∪ S ⊂ I ∪ S o multime de vˆ ¸ ırfuri incident˘ cu toate muchiile. Rezult˘ c˘ NGA (I − a a a I ) ⊆ S .ceea ce dovede¸te existenta cuplajului de cars ¸ dinal |I| (utilizˆ ınd teorema 2).

a Un lant ˆ (P. 1950. a Teorem˘. (Dilworth. 4. pena s ¸ a tru a evidentia asem˘narea cu cea a teoremei ¸ a 1. Prefer˘m totu¸i. ınt Un antilant ˆ (P. Fie (P. o demonstratie direct˘. atunci ¸ ¸ a a num˘rul minim de lanturi a c˘ror reuniune (disa ¸ a junct˘) este P este egal cu cardinalul maxim a al unui antilant. ≤) este o submultime A a lui ¸ ın ¸ P cu proprietatea c˘ ∀x.O alt˘ teorem˘ celebr˘ care poate fi obtinut˘ a a a ¸ a ca o consecint˘ imediat˘ a teoremei 2 este teo¸a a rema lui Dilworth. ¸ 143 . ¸ Dac˘ x. y ∈ P . spunem c˘ x ¸i y sˆ comparaa a s ınt bile dac˘ x ≤ y sau y ≤ x. 1950) Dac˘ (P. ≤) este o submultime L a lui P ¸ ın ¸ cu proprietatea c˘ orice dou˘ elemente ale sale a a sˆ comparabile. ≤) a a este o multime partial ordonat˘ finit˘. ≤) o multime finit˘ partial ordonat˘ ¸ a ¸ a (≤ este o relatie de ordine pe P ). y ∈ A x ≤ y ⇒ x = y.

≤) cardinalul maxim al ¸ unui antilant al lui (P. ¸ 144 . . Se observ˘ c˘ P = P − ∪ P + . Dac˘ a(P − L. a2. am} cu m = a(P. P + )]. ≤) = a(P. c˘ exist˘ a(P. ≤) − 1. Fie P − = {x | x ∈ P. ∃aj ∈ A : aj ≤ x}. a a Dca˘ |P | = 1.Demonstratie. . . afirmatia este trivial˘. ≤). P − ∩ P + = A ¸i c˘ a a s a |P − |. ¸ Ar˘t˘m prin inductie dup˘ |P |. c˘ teorema are loc ın a pentru orice multime partial ordonat˘ cu mai ¸ ¸ a putin de |P | ≥ 2 elemente. a Deci. atunci teorema a are loc din ipoteza inductiv˘. presupunem c˘ ˆ P −L exist˘ un antilant a ın a ¸ A = {a1. ¸ ¸ ın Fie L un lant maximal (ˆ raport cu incluziunea) al lui P . ≤). ˆ pasul inductiv. . deci prea ¸ a supunem. ∃ai ∈ A : x ≤ ai} P + = {x | x ∈ P. |P + | < |P | [ elementul maximal (minimal ) al lui L nu apartine lui P − (respectiv. ≤) a a ¸ a a a lanturi a c˘ror reuniune este P (inegalitatea ¸ a invers˘ este imediat˘). Fie a(P.

¸ i i ˆ plus. ¸ a 145 . ≤) i i lanturi a c˘ror reuniune este P .mL+ i L− lant ∧ ai ∈ L− ∀i = 1.mL− i P + = ∪i=1.P a1 a2 A am L + P Se poate. ın i Rezult˘ c˘ (L− ∪ L+ )i=1. aplica ipoteza inductiv˘ pentru a a scrie P − = ∪i=1. m ¸ i i L+ lant ∧ ai ∈ L+ ∀i = 1. ai este element maximal ˆ L− ¸i eleın i s In ment minimal ˆ L+ . deci.m sˆ a a ınt cele a(P. m.

Fie G = (V. atunci G − A este conex ˆ este conex ¸i ∃y ∈ U cu zy ∈ E(G − A) ). E ). x U z G G este p-conex. dac˘ A ⊆ a ıntrucˆ G − A ıt V . z.Structura grafurilor p-conexe. Exist˘ ˆ G p xU s a ın drumuri cu singurul vˆ comun x. s Lema rezult˘. ırf Demonstratie: Consider˘m graful G = (V ∪ ¸ a {z}. ˆ adev˘r. unde E = E ∪ {zy | y ∈ U }. a U ⊆ V |U | = p ¸i x ∈ V − U . |V | ≥ p+1. E) p-conex. aplicˆ a ınd teorema 1’ grafului G ¸i perechii x. 1. Lem˘. acest lucru a este evident din p-conexiunea lui G. s 146 . ∀A cu |A| ≤ p − 1 In a G − A este conex (dac˘ z ∈ A.

xp−2 exist˘ un a circuit ˆ G care le contine. nu se pierde conexiunea . .Lem˘. x2. . prin orice dou˘ muchii trece un cira cuit. ¸ ¸ a Dac˘ p = 2. trebuie s˘ dovedim c˘ ˆ orice graf a a a ın 2-conex. Dac˘ G = (V. ıte ırf s e1 a b e2 G G’ Noul graf este tot 2-conex. E) este un graf pa a conex p ≥ 2. atunci oricare ar fi dou˘ muchii a e1 ¸i e2 ¸i p − 2 vˆ s s ırfuri x1. care ˆ G ın a ın ofer˘ un circuit ce contine e1 ¸i e2. Consider˘m G obtinut din G prin insertia a ¸ ¸ cˆ unui vˆ pe muchiile e1 ( a ) ¸i e2 ( b ). 2. ın ¸ Demonstrtie: Inductie dup˘ p. a ¸ s 147 . Exist˘ a deci ˆ G dou˘ ab-drumuri disjuncte. . . deoarece orice vˆ ırf am scoate.

xp−2. . . . . exist˘ ˆ G p xp−2y drumuri cu a ın y ∈ Y . xp−3 ¸i e1. disjuncte. D˘m o orientare cirırf a cuitului µ ¸i numerot˘m vˆ s a ırfurile sale conform acestei orient˘ri. x2. |Y | ≥ p. 148 . . Conform ipotezei inductive exista un circuit µ ce contine ¸ x1. . e2.Fie p > 2 ¸i presupunem afirmatia adev˘rat˘ s ¸ a a pentru orice graf k-conex k < p. Dxp−2 yp . x2. Putem presupune c˘ extremit˘tile muchiilor e1 a a ¸i e2 nu sˆ printre x1. . . Fie Y mutimea vˆ s ¸ ırfurilor lui µ. . Dxp−2 y2 . Putem presupune c˘ pentru a orice xp−2y astfel de drum. deoarece s ınt altfel. y este primul vˆ ırf din Y ˆ ılnit. . . ¸ ¸ Graful G − xp−2 este (p − 1)-conex. Folosind lema 1. Fie G p-conex. a¸a c˘ aceste drumuri au cˆ un ıntˆ s a ıte singur vˆ comun cu Y . afirmatia ar rezulta prin inductie. .Avem deci drumurile a Dxp−2 y1 .

Dyp−1yp . yp descompun circuitul ˆ druın murile Dy1 y2 . .y1 yp xp-2 y2 yi Vˆ ırfurile y1. xp−2. . Dy2y3 . x2 . . Dypy1 . . . atunci Dxp−2 y2 . . ˆ care nu e a ın continut nici unul din elementele ¸ x1. e2. . ¸ ¸i lema este demonstrat˘. . s a 149 . . . . Fie acest drum Dy1 y2 . . . . . Dy2y3 . Dypy1 . xp−3. e1. Dy1xp−2 este un circuit s ce contine x1. Exist˘ un drum dintre acestea. y2. e1 ¸i e2 . . . . .

5. a a o s Teorem˘. . . . atunci prin orice p vˆ ırfuri ale sale trece un circuit. Cum G ¸ ¸ este p-conex . 6. pentru a demona ın ¸ stra o conditie suficient˘ de hamiltonietate in¸ a teresant˘. . Deoarece graful G este conex. 150 . a Aplic˘m aceast˘ teorem˘. exist˘ e1 = xxp−1 ¸i e2 = yxp ¸i a s s aplic˘m lema 2.Teorem˘. Demonstratie: Presupunem c˘ G nu e hamil¸ a tonian. xp−1. Demonstratie. Fie G p-conex. xp−2. Vom obtine o contradictie. (Dirac 1953) Dac˘ G = (V. Fie x1. xp p ¸ vˆ ırfuri oarecare ale lui G. precum ¸i ideea utia a a s lizat˘ ˆ demonstratia lemei 2. Dac˘ α(G) ≤ p a a atunci G este hamiltonian. exist˘ un circuit de lungime cel a putin p (conform teoremei lui Dirac de mai ¸ sus). datorat˘ lui Erd¨s ¸i Chvatal (1972). x2. E) a a este un graf p-conex p ≥ 2.

w2 . Dac˘ G nu a ın a e hamiltonian. ˆ a / Intrucˆ |C| ≥ p. . vwi ∈ E (altfel am avea circuitul / vwi . exist˘ wswt ∈ E. . pentru fiecare vi. ın wk vs vk wt w s vt v Atunci. Not˘m. ¸ a Deci. . multimea {v. Cum ıt α(G) ≤ p.¸i Dvtv este un circuit de s lungime mai mare decˆ C. w1. cu wi vˆ a ırful succesor al lui vi ˆ parcurgerea lui C.drumul (invers) pe C de la ws la vt . C − wi vi. . a 151 . muchia wt ws. conform ıt lemei 2. contrazicˆ ıt ınd ipoteza c˘ C a este de lungime maxim˘. Dvv2 . . Dvvp (numerotarea vˆ ırfurilor este ˆ ın ordinea ˆ ılnirii lor ˆ ıntˆ ıntro parcurgere fixat˘ a circuitului a ). Dviv de lungime mai mare decˆ C). .drumul (invers) pe C de la vs la wt. . a Dar atunci: Dvvs . wp } nu este stabil˘.Fie C un circuit de lungime maxim˘ ˆ G. wi. . exist˘ v ∈ C. exist˘ p vC-drumuri disjuncte (cu exceptia lui v) a ¸ fie ele Dvv1 .

III. Fie G = (V. a Urm˘toarele afirmatii sˆ echivalente: a ¸ ınt (i) G este arbore. (iii’) G este f˘r˘ circuite ¸i ∀e ∈ E(G). 152 . Mai precis. (iii) G este f˘r˘ circuite ¸i este maximal cu a a s aceast˘ proprietate. (ii) G este conex ¸i este minimal cu aceast˘ s a proprietate. E) un graf. Propriet˘¸i elementare ale arborilor at Definitie: Un arbore este un graf conex ¸i f˘r˘ ¸ s a a circuite. ARBORI 1. G − e este s neconex. G + e a a s are un circuit. a Observatie:Maximalitatea ¸i minimalitatea din conditiile ¸ s ¸ (ii) ¸i (iii) se refer˘ la multimea muchiilor grafului G ¸i s a ¸ s a ın ¸ a se consider˘ ˆ raport cu relatia de ordine dat˘ de incluziune. Teorem˘. cele dou˘ afirmatii se pot formula a ¸ echivalent astfel: (ii’) G este conex ¸i ∀e ∈ E(G). 1.

E ) al lui G. Reciproc. E ) (E ⊆ E) care este arbore. E) un (multi)graf. un graf partial s ¸ ¸ T = (V. T este conex. Vom nota cu TG multimea arborilor partiali ¸ ¸ ai lui G. TG = ∅ dac˘ ¸i numai dac˘ G este conex. T ← G 2. Obs. while (∃e ∈ E(T ) astfel ˆ ıt T \ {e} este conex) do ıncˆ T ← T \ {e} 153 . dac˘ TG = ∅. Se ¸ nume¸te arbore partial al lui G.Definitie: Fie G = (V. as a ˆ adev˘r. atunci exist˘ un arbore a In a a partial T = (V. atunci consider˘m a a urm˘torul algoritm: a 1. deci ¸ ˆ ıntre orice dou˘ vˆ a ırfuri ale lui G exist˘ un drum a cu muchii din E ⊆ E. Prin urmare G este conex. dac˘ G este conex.

E) este conex a ¸ a dac˘ ¸i numai dac˘ oricare ar fi o partitie (V1. deci ¸ este arbore. dup˘ atribuirea din 1. ∅) (v ∈ V . V2) as a ¸ a lui V exist˘ e = v1v2 ∈ E cu vi ∈ Vi i = 1. k := k + 1 } 154 . T1 ← ({v}. a¸a a a s este ¸i din conditia lui while. v2 ∈ V \ V (Tk ). E(Tk+1 ) ← E(Tk ) ∪ {v1v2}.Graful T obtinut este graf partial al lui G. 2. 2. T este conex dup˘ s ¸ a fiecare iteratie) ¸i ˆ plus la oprirea algoritmu¸ s ın lui. oarecare). k ← 1. O alt˘ demonstratie a reciprocei anterioare se a ¸ bazeaz˘ pe observatia c˘ G = (V. //∃ o astfel de muchie din conexiunea lui G V (Tk+1) ← V (Tk ) ∪ {v2} . T satisface conditia ii) din teorema 1. a Dac˘ |V | = n > 0 atunci urm˘torul algoritm a a construie¸te un arbore partial al lui G: s ¸ 1. while k < n do { Fie v1v2 ∈ E cu v1 ∈ V (Tk ). este ¸ ¸ conex (din ipotez˘.

2. . E) cu n vˆ ırfuri: (i) G este arbore. . dac˘ Tk este arbore. . se verific˘ imediat c˘: s ın a a |V (Tk )| = k iar |E(Tk )| = k − 1 ∀k = 1. . 1’. n. Urm˘toarele afirmatii sˆ echivaa a ¸ ınt lente pentru un graf G = (V. atunci din constructie a ¸ s Tk+1 este conex ¸i nu are circuite) ¸i. 155 . (ii) G este conex ¸i are n − 1 muchii. a s (iv) G = Kn pentru n = 1.Se observ˘ c˘ Tk este arbore ∀k = 1. 2 ¸i G = Kn pentru s n ≥ 3 ¸i ad˘ugarea unei muchii la G produce s a exact un circuit. s (iii) G este far˘ circuite ¸i are n − 1 muchii. ˆ plus. s Proprietatea obtinut˘ poate fi folosit˘ pentru ¸ a a completarea teoremei 1 cu alte caracteriz˘ri ale a arborilor: Teorem˘. Aceast˘ demonstratie aplicat˘ unui arbore G a ¸ a cu n vˆ ırfuri dovede¸te ca G are n − 1 muchii. n a a (inductiv.

1] = v0 unde v0 ∈ V este un vˆ oarecare. . ˆ chimie). n}. . Exemplu: ırf 1 5 a 4 1 3 c 2 5 6 a b d E d 4 a 6 b 2 c d c a 3 c b d b 156 . |E| = m. 1. 1] ¸i w = E[i. . V = {1. m ). Num˘rarea ¸i enumerarea arborilor partiali a s ¸ Familia TG a arborilor partiali ai unui (multi)graf ¸ are propriet˘¸i interesante..2] a cu componente din V cu semnificatia c˘ dac˘ ¸ a a v = E[i.. Vom prezenta o at metod˘ (tip backtrack) de generare a elea mentelor lui TG. Vom presupune ˆ plus. ın ¸ ın Fie G = (V. c˘ primele dG(v0) muchii ın a din tabloul E satisfac E[i. atunci vw este muchia s i a grafului G ( i = 1. E). .m. problem˘ de interes practic a ˆ multe aplicatii (de exemplu. Reprezent˘m E printr-un tablou E[1.2. 2]. 2.

. . n}). . . .n−1] cu componente din multimea ¸ 1. list˘ de vˆ a ırfuri. . S. if i = n then //{T (1). . T (n − 1)} formeaz˘ un a arbore partial . a variabile locale: j ∈ {1. . ¸ prelucreaz˘ T ( listeaz˘. . .elementele ınd T (1).. . memoreaz˘ etc. . < T [i − 1] (i ∈ {1. . . .. ¸ // se genereaz˘ toti arborii partiali ai lui G a ¸ ¸ avˆ drept prime i − 1 muchii. generare-arbori-partiali(int i). T (i − 1) ale tabloului E (ordonate cresc˘tor). m} de ın ¸ cardinal n − 1). .) a a a 157 . x ∈ V . . m}. .m ¸i de un indicator i avˆ semnificatia: ˆ s ınd ¸ ın arborele curent care se construie¸te.Un arbore partial T ∈ TG va fi identificat cu ¸ multimea indicilor ce reprezint˘ muchiile sale ¸ a ˆ tabloul E (submultime a lui {1. Pe tot parcursul gener˘rii dispunem de un veca tor global T [1. primele s i − 1 muchii sˆ ınt T [1] < T [2] < . . . .

A: generare-arbori-partiali(i + 1). a 158 . T [i − 1]} ∪ {j} G nu are circuite then { T [i] ← j. A: generare-arbori-partiali(i + 1). . ¸ B: } Apelul generare-arbori-partiali(1) rezolv˘ prob¸ a lema enumer˘rii elementelor lui TG. . .else if i = 1 then for j := 1 to dG(v0) do { T [i] ← j. ¸ B: } else for j := T [i − 1] + 1 to m − (n − 1) + i do if {T [1]. .

Pentru exemplul considerat mai sus (G = K4 ¸i numerotarea precizat˘ pentru muchii) arborii s a generati sunt urm˘torii 16 : ¸ a 5 3 1 2 1 2 1 2 6 31 4 Figura poate fi interpretat˘ ¸i ca lista tuturor a s arborilor etichetati distincti care se pot forma ¸ ¸ cu cele 4 noduri (nu s-au mai trecut etichetele nodurilor ¸i muchiilor. pentru decongestionarea s figurii. totu¸i s-a marcat muchia T (1) pentru s a se evidentia modul de functionare a algorit¸ ¸ mului). 159 .

. . .Pentru implementarea eficient˘ a testului dac˘ a a graful partial ¸ {T [1].n] cu componente din V cu semnificatia ¸ rad[v] = r˘d˘cina arborelui la care apartine a a ¸ vˆ ırful v (unul din vˆ ırfurile acestui arbore). . . deci componentele sale conexe sˆ arbori.. . 160 . . . . T [i − 1]} G nu are circuite . T [i − 1]} = ∅. . ceea ce core¸ a spunde faptului c˘ {T [1]. . ˆ ¸ Inaintea apelului generare-arbori-partiali(1) se initializeaz˘ rad[v] ← v(∀v ∈ V ). . T [i − 1]} ∪ {j} nu are circuite s˘ a G observ˘m c˘ din constructie. T [i − 1]. . . . a a ¸ {T [1]. a Pe parcursul apelurilor (recursive) se ˆ ıncearc˘ a plasarea muchiei j ˆ multimea curent˘ ın ¸ a T [1]. ınt Vom considera un vector global rad[1. .

. adic˘ dac˘ ¸i numai dac˘ rad[v] = rad[w]. x ← rad[v]. T [i − 1]} G . . 2]. s Atunci {T [1].Fie v = E[j. a a s a Vectorul rad trebuie ˆ ıntretinut pentru a avea ¸ semnificatia dorit˘. 1] ¸i w = E[j. A: se va ˆ ınlocui cu secventa : ¸ S ← ∅. instructiunile (vide) etichetate A ¸i B. T [i − 1]} ∪ {j} nu are cirG cuite dac˘ ¸i numai dac˘ a s a muchia vw nu are extremit˘¸ile ˆ aceea¸i comat ın s ponent˘ a lui a {T [1]. . for u ∈ V do if rad[u] = x then { S ← S ∪ {u} . rad[u] ← rad[w] } 161 . . . . . . ¸ a Acest lucru se obtine ˆ ¸ ınlocuind ˆ algoritmul ın ¸ s descris. Astfel.

Fie G = (V. Prezent˘m ˆ continuare una din solutiile posia ın ¸ bile. . dG(n)). Cosider˘m A = (aij )n×n matricea de adiacent˘ a ¸a a lui G (aij = multiplicitatea muchiei ij dac˘ a ij ∈ E. se poate determina eficient. dG(2). se salveaz˘ ˆ a a a ın S vˆ ırfurile arborelui cu r˘d˘cina x). . arborele cu r˘d˘cina x se ”une¸te” ın a a s cu arborele cu r˘d˘cina rad[w]. Fie D = diag(dG(1).. n}. 2. altfel 0). . a a Dup˘ apelul lui generare-arbori-partiali(i + 1) a ¸ trebuie ref˘cut vectorul rad la valoarea dinainte a de apel.(ˆ cuvinte. . deci se va ˆ ınlocui B: cu for u ∈ S do rad[u] := x. 162 .. Num˘rul elementelor lui TG.. E) un multigraf cu V = {1. . problem˘ interea a sant˘ chiar ¸i numai pentru analiza algorita s mului precedent.

dup˘ descompunerea lui TG ˆ a a arborii care contin o muchie fixat˘ ¸i cei care ¸ a s nu contin aceea¸i muchie. n}. s a Teorem˘. . n} ¸i L[G] matricea Laplace. a s Demonstratia (pe care o omitem) se bazeaz˘ ¸ a pe regula clasic˘ de dezvoltare a unui determia ın nat dup˘ o linie. s atunci |TG| = det(L[G]ii ) ∀i ∈ {1. ¸ s 163 .Matricea L[G] = D − A se nume¸te matricea s de admitant˘ a multigrafului G sau ma¸a tricea Laplace a lui G. . 2. . S˘ observ˘m c˘ ˆ L[G] suma elemetelor de pe a a a ın fiecare linie ¸i fiecare coloan˘ este 0. . (Kirchoff-Trent) (Matrix Tree a Theorem) Dac˘ G este un multigraf cu multimea a ¸ de vˆ ırfuri {1. . L[G]ij noteaz˘ minorul lui L[G] obtinut prin a ¸ ˆ ındep˘rtarea liniei i ¸i coloanei j. . . .

⎟ . . . . −1 . adic˘ au fost generati toti arborii !) a ¸ ¸ Observatie. caz ilustrat ˆ figura precedent˘. . . ..... −1 −1 .. ... −1 −1 n − 1 = nn−2. 164 . . .. ⎟ . . . . −1 ⎟ ⎠ −1 n − 1 ⎞ ¸i (dup˘ un simplu calcul): s a n−1 −1 det(L[Kn ]11) = . In a TKn = nn−2 (Cayley). . (Dac˘ n = 4. . se obtine a ın a ¸ TK4 = 42 = 16. . Teorema ofer˘ un algoritm poli¸ a nomial de determinare a lui |TG|.. ... . −1 . .. n − 1 −1 . −1 .. .. ⎝ . ˆ adev˘r. .Corolar. ⎛ ⎜ −1 ⎜ L[Kn ] = ⎜ .

Arbori partiali de cost minim. . . T2 . 2. Tn ) a ¸ de arbori disjuncti Ti0 = ({i}. . Algoritmii cunoscuti pentru rezolvarea proble¸ mei (P1) au la baz˘ urm˘toarea ideie: a a 0 0 0 Se consider˘ initial. .n−k ¸ ıncˆ constituie o partitie a lui V ¸i se construie¸te ¸ s s T k+1 astfel: 165 . E) graf ¸i c : E → R s (c(e) – costul muchiei e). unde c(T ) = e∈E(T ) c(e). . . . n (am ¸ presupus. familia T 0 = (T1 . n}) . . . n − 2) al algoritmului In k k k se dispune de familia T k = (T1 . T2 . ¸ Consider˘m urm˘toarea problem˘: a a a (P1) Date G = (V. . s˘ se determine a ıncˆ T ∗ ∈ TG astfel ˆ ıt c(T ∗ ) = min{c(T ) | T ∈ TG}. . a ˆ pasul general k ( k = 0. . Tn−k ) de n−k arbori disjuncti astfel ˆ ıt V (Tik )i=1.3. ∅) i = 1. ca de obicei c˘ V = {1.

.dintre toate muchiile lui G cu o extremitate ˆ ın k s k a ın Ts ¸i cealalt˘ ˆ V −V (Ts ) se alege una de cost k minim. Tj ∗ }) ∪ T unde T este ark s k a a borele obtinut din Ts ¸i Tj ∗ la care ad˘ug˘m ¸ muchia e∗.k .T k+1 = (T k \ {Ts . vs k Ts v j* Tk j* Se verific˘ imediat c˘ noua familie este format˘ a a a din arbori disjuncti care partitioneaz˘ multimea ¸ ¸ a ¸ de vˆ ırfuri ale grafului G.se alege Ts unul din arborii familiei T k . e∗ = vsvj ∗ unde vj ∗ ∈ V (Tj ∗ ) j ∗ = s. atunci rezult˘ c˘ G nu este conex ¸i deci problema (P 1) nu are solutie. s ¸ 166 . k k . Dac˘ alegerea muchiei a a a a e∗ nu este posibil˘.

. 3. E) este un graf a a n−1 conconex cu V = {1.. 1. . rezult˘ ınd s a a c˘ incluziunea are loc cu egalitate) ¸i teorema a s e demonstrat˘. pentru k = n − 1. TG este nevid˘ deci exist˘ T ∗ solutie a problemei a a ¸ P 1. familia T n−1 construit˘ ˆ pasul n − 2 a ın n−1 este format˘ dintr-un singur arbore T1 . ¸ Demonstratie. .. Dac˘ G = (V. Vom ar˘ta c˘ ∀k ∈ {0. n} atunci T1 struit de algoritmul descris mai sus este arbore partial de cost minim. a Pentru k = 0.Evident. . . E(T n−1) = In n−1 n−1 = T ∗ (cei E(T1 ) ⊆ E(T ∗ ) va implica T1 doi arbori avˆ acela¸i num˘r de muchii. 2. afirmatia este trivial adev˘rat˘: ¸ a a s E(T 0) = ∅ ¸i din conexiunea grafului G. n − ¸ a a ¸ 1} ∃T ∗ arbore partial de cost minim al lui G. a Teorem˘. ıncˆ ˆ particular. 167 . n−k astfel ˆ ıt E(T k ) = ∪i=1 E(Tik ) ⊆ E(T ∗ ).

c˘ e∗ ∈ E(T ∗).Dac˘ afirmatia este adev˘rat˘ pentru 0 ≥ k ≤ a ¸ a a n − 2. Atunci T ∗ + a / {e∗} contine exact un circuit C ce trece prin ¸ k / a muchia e∗ = vsvj ∗ . Cum vj ∗ ∈ V (Ts ) rezult˘ c˘ C va contine o muchie e1 = e∗ cu o exa ¸ k s k a ın tremitate ˆ V (Ts ) ¸i cealalt˘ ˆ V \ V (Ts ). avem c(e∗ ) ≤ c(e1) ¸i s e1 ∈ E(T ∗ ) \ E(T k ). ın Din alegerea muchiei e∗. C vs k Ts T* v j* 168 . s ¸ Presupunem. E(T k+1) ⊆ a E(T ∗) ¸i deci afirmatia are loc pentru k + 1. Dac˘ e∗ ∈ E(T ∗ ). deci. atunci avem E(T k ) ⊆ E(T ∗) (T ∗ arbore partial de cost minim) ¸i ¸ s E(T k+1) = E(T K ) ∪ {e∗}. evident. atunci.

s a Observatii: ¸ 10 Demonstratia anterioar˘ r˘mˆ valabil˘ pen¸ a a ıne a ıncˆ tru functii de cost c : TG → R astfel ˆ ıt: ¸ ∀T ∈ TG. ∀e ∈ E(T ) / c(e ) ≤ c(e) ⇒ c((T + e ) − e) ≤ c(T ). adic˘ T 1 este de cost minim a ¸i teorema e demonstrat˘. s Din constructie. Vom considera. ˆ ın continuare dou˘ strategii de alegere a acestui a arbore. ∀e ∈ E(T ). avem c˘ E(T k+1) ⊆ E(T 1 ). T 1 ∈ TG (este conex ¸i are n-1 muchii). ¸ a ˆ plus.Fie T 1 = (T ∗ + {e∗}) − {e1}. In 20 ˆ algoritmul descris nu s-a precizat modul de alegere al arborelui T k . 169 . c(T 1) = c(T ∗) + c(e∗) − c(e1) ≤ c(T ∗ ) In deci c(T 1) = c(T ∗).

n] cu componente s reale. a a Rezult˘ deci. beta(v) alfa(v) v x beta(x)=+infinit w beta(w) alfa(u) beta(u) Ts u alfa(w) Descrierea algoritmului: 170 . a k ıntotdeauna arborele cu Arborele Ts va fi ˆ cele mai multe vˆ ırfuri dintre arborii familiei curente. vom avea un arbore cu k + 1 vˆ ırfuri. β j = c(α[j]j) = min{c(ij) | i ∈ Vs. Consider˘m vectorii α[1. ceilalti n − k − 1 ¸ avˆ ınd cˆ un singur vˆ ıte ırf. Not˘m Ts = (Vs. ij ∈ E}..Algoritmul lui Prim(1957) (implementarea este datorat˘ lui Dijkstra.. Es) a arborele curent.n] cu a componente din V ¸i β[1. c˘ la fiecare pas k > 0. cu urm˘toarea semnificatie: a ¸ (S) ∀j ∈ V −Vs. 1961).

α[j] :← j ∗ } } Se observ˘ c˘ (S) este satisf˘cut˘ de initializ˘rile a a a a ¸ a pasului 1. pe de o ın a parte. iar ˆ pasul 2. for v ∈ V \ {s} do { α[v] := s. Vs :← {s}. a / 2. 171 . β[j ∗] = min{β[j] | j ∈ V − Vs} . Es := Es ∪ {α[j ∗]j ∗}. β[v] := c(sv)}. // dac˘ ij ∈ E atunci c(ij) = ∞). strategia general˘ de alegere a muchiei a de cost minim cu exact o extremitate ˆ Vs ın (alegerea lui j ∗) ¸i pe de alt˘ parte se mentine s a ¸ valabilitatea conditiei (S) pentru iteratia urm˘toare ¸ ¸ a (testul asupra valorii curente a lui β[j]). for j ∈ V − Vs do if β[j] > c[j ∗j] then { β[j] ← c[j ∗j]. se respect˘.ˆ a ı. while Vs = V do { determin˘ j ∗ ∈ V \ Vs a. Vs ← Vs ∪ {j ∗}. oarecare ) Es ← ∅. (s ∈ V .1.

. Se poate introduce testul a de conexiune a grafului. complicat˘ la prima vedere. atunci algoritmul a a poate fi descris. dup˘ determinarea lui a β[j ∗]. m = O(n2). + O(1) = O(n2) dat˘ de operatiile din pasul 2 necesare determin˘rii minimului ¸i aca s tualiz˘rii tabloului β. ¸ Dac˘ not˘m cu T = E(T k ). se a a realizeaz˘ simplu prin sortarea muchiilor graa fului nedescresc˘tor ˆ raport cu costurile ¸i a ın s apoi prin examinarea ˆ mod ”greedy“ a listei ın obtinute. at ¸ Aceast˘ alegere. astfel: 172 . se va alege la In a a k fiecare pas drept arbore Ts unul din cei doi arbori cu proprietatea c˘ sˆ ”uniti” printr-o a ınt ¸ muchie de cost minim printre toate muchiile cu extremit˘¸ile pe arbori diferiti. Algoritmul este recomandat ˆ cazul graın furilor cu multe muchii. Algoritmul lui Kruskal (1956) ˆ metoda general˘ prezentat˘.Complexitatea algoritmului este O(n−1)+O(n− a ¸ 2) + . .

. 2. em) astfel ˆ ıt: a ıncˆ c(e1) ≤ c(e2 ) ≤ . V (Tn ) a a ¸i s˘ test˘m dac˘ muchia ei curent˘ are ambele s a a a extremit˘¸i ˆ aceea¸i mutime. arbori ¸ (care nu sˆ ˆ general subarbori ai lui G). ≤ c(em ).1. . . .2 T ← ∅. 1. a 173 . . ınt ın Fiecare astfel de arbore va avea un vˆ numit ırf. . r˘d˘cin˘. . . V (T2 ). . care va desemna multimea de vˆ a a a ¸ ırfuri ale lui G pe care o memoreaz˘. i++ } Evident. i ← 1. pasul 1 necesit˘ O(m log n) operatii. e2. while i ≤ m do { if T ∪ {ei } G nu are circuite then T ← T ∪ {ei } . . Se vor folosi at ın s ¸ pentru reprezentarea acestor multimi. a ¸ Pentru realizarea eficient˘ a testului din pasul a 2 va fi necesar s˘ reprezent˘m la fiecare pas k a a k k k (din metoda general˘ ) V (T1 ). Sorteaz˘ E = (e1.

Vom folosi o functie f ind(v) care determin˘ ˆ ¸ a ın ce multime este vˆ ¸ ırful v. pasul 2 al algoritmului se scrie: 2. ¸ Pentru realizarea reuniunilor (disjuncte) de multimi de vˆ ¸ ırfuri care apar ˆ transformarea ın a familiilor T k (din metoda general˘) vom folosi o procedur˘ union(v. T ← T ∪ {ei } } i++ } 174 . if f ind(v) = f ind(w) then { union(v. adic˘ ˆ a ıntoarce r˘d˘cina a a arborelui care memoreaz˘ multimea de vˆ a ¸ ırfuri la care apartine v. while i ≤ m do { fie ei = vw. a Cu aceste proceduri. w) cu semnificatia: a ¸ ”multimile de vˆ ¸ ırfuri (diferite ¸i disjuncte) s la care apartin v ¸i w se reunesc ˆ una ¸ s ın singur˘”. w).

initializarea a a ¸ 1. care corespunde familiei T 0. return rad[v] 175 . Ad˘ug˘m pasului 1.n] cu ¸ a componente din V cu semnificatia ¸ rad[v] =r˘d˘cina arborelui ce memoreaz˘ a a a multimea la care apartine vˆ ¸ ¸ ırful v. Functia f ind are ¸ ˆ acest caz complexitatea O(1) ¸i este: ın s function f ind(v : V ).Complexitatea algoritmului va depinde de modul de implementare a functiei f ind ¸i procedurii ¸ s union.3 for v ∈ V do rad[v] ← v. Solutia I a. Consider˘m tabloul rad[1..

176 . a a for i ∈ V do if rad[i] = rad[v] then rad[i] := rad[w] Pasul 2 al algoritmului necesit˘ O(m) apeluri a ale functiei f ind (exact m a¸a cum l-am descris. ¸ s sau O(m) dac˘ se introduce ¸i un test asupra a s cardinalului multimii T curente). n2)). m = O(n2). Dac˘ graful este plin. variabil˘ local˘ i : V . Rezult˘ c˘ ˆ total pasul 2 necesit˘ a a ın a O(m + (n − 1)O(m)) = O(n2) operatii. complexitatea algoritmului este O(max(m log n.Procedura union necesit˘ O(n) operatii: a ¸ procedure union(v. ¸ Deci. ¸ ˆ secventa acestor O(m) apeluri ale functiei In ¸ ¸ f ind se vor intercala exact n − 1 apeluri ale procedurii union. w : V ). se observ˘ a a c˘ acest algoritm este mai putin eficient decˆ a ¸ ıt cel al lui Prim.

{ union(x.. a ¸ ¸ pred[v] = 0 ⇔ v este r˘d˘cina arborelui”. initializarea a a ın ¸ 1. x :← f ind(v).3 for v ∈ V do pred[v] ← 0. while i ≤ m do { fie ei = vw. if x = y then union(x. Consider˘m pred[1. y).n] un tablou ¸ a ˆ ıntreg cu interpretarea : pred[v]= vˆ ırful dinaintea lui v de pe drumul unic la v. de la r˘d˘cina arborelui care a a memoreaz˘ multimea la care apartine v. a a Ad˘ug˘m ˆ pasul 1. y ← f ind(w). y). T ← T ∪ {ei } } i++ } 177 . Modific˘m ¸i pasul 2 al algoritmului astfel: a s 2.Solutia a II a.

complexitatea procedurii union este O(1). return i Complexitatea lui f ind(v) este O(h(v)) unde h(v) este lungimea drumului (din arbore) de la ırful v la r˘d˘cina arborelui care-l contine pe a a ¸ vˆ v. w : V ). 178 . while pred[i] > 0 do i ← pred[i]. pred[v] ← w Evident. Functia. f ind este ˆ acest caz mai com¸ ın plicat˘: a function f ind(v : V ). a a variabil˘ local˘ i : V .Deci. i ← v. procedura union va fi apelat˘ numai pena tru argumente reprezentˆ ınd r˘d˘cini de arbori a a diferiti: ¸ procedure union(v.

U (n − 1. 2). F (1). . 3). 13. .Dac˘ graful G este K1. ¸i a s lista ordonat˘ a muchiilor E = {12. ¸ Este deci posibil ca pasul 2 al algoritmului ˆ ın aceast˘ implementare s˘ fie de complexitate a a Ω(n2) chiar dac˘ graful este rar. U (2. F (3). F(1) F(2) U(1. . F (2). .n) 1 2 3 4 n-1 n Apelurile F (i)(i > 1) ¸i U (i. a 179 . F (n).3) F(1) F(4) U(3. .n−1 desenat mai jos. Sirul de F (1) necea ın ¸ ¸ sit˘ ˆ a O(1) + O(2) + · · · + O(n − 1) = O(n2) a ıns˘ operatii.4) 1 1 1 2 2 2 3 3 3 4 4 n n n n F(1) F(n) U(n-1. U (1.2) 2 3 1 F(1) F(3) U(2. a atunci executia algoritmului provoac˘ urm˘torul ¸ a a ¸ir de apeluri ale procedurii union(U ) ¸i functiei s s ¸ f ind(F ): F (1). . . 1n}. i + 1) i ≥ 1 neces sit˘ ˆ total O(n) operatii. F (1). n). .

3 for v ∈ V do predd[v] ← −1.Deficienta acestei implement˘ri este datorat˘ ¸ a a posibilit˘¸ii ca ˆ procedura union s˘ declar˘m at ın a a r˘d˘cin˘ nou˘ pentru cei doi arbori pe cea a a a a a celui cu mai putine vˆ ¸ ırfuri. Acest defect poate fi evitat dac˘. ın 180 . a ¸ Mai precis. ¸ Se poate memora cardinalul unei multimi ˆ ¸ ın a a a componenta tabloului pred corespunz˘toare r˘d˘ cinii arborelui care memoreaz˘ acea multime. la executia a ¸ lui union ¸inem seama de cardinalul celor dou˘ t a multimi. ¸i modific˘m procedura union astfel ˆ ıt s˘ s a ıncˆ a asigur˘m ˆ a ındeplinirea conditiei ¸ pred[v] < 0 ⇔ v este r˘d˘cin˘ a unui arbore a a a ¸ ¸i −pred[v] este cardinalul multimii memos rate ˆ el. ceea ce are ca efect posibilitatea ca h(v) s˘ devin˘ mare (O(n)) pe a a parcursul algoritmului. consider˘m initializarea a ¸ 1.

Procedura union are. pe tot parcursul algoritmului are loc: (∗) ∀v ∈ V − pred[f ind(v)] ≥ 2h(v) (reamintim c˘ h(v) noteaz˘ lungimea drumua a lui de la v la r˘d˘cina f ind(v) a arborelui ce a a memoreaz˘ v ). tot comın plexitatea O(1). dar selecteaz˘ drept nou˘ r˘d˘cin˘ a a a a a pe cea care corespunde arborelui cu mai multe vˆ ırfuri: procedure union(v. ˆ acest caz. pred[v] ← t } Cu aceast˘ implementare a functiei f ind ¸i proa ¸ s cedurii union. a 181 . w : V ). pred[w] ← t } else { pred[w] ← v. if pred[v] > pred[w] then { pred[v] ← w. //v ¸i w sunt r˘d˘cini s a a variabila local˘ ˆ a ıntreag˘ t a t ← pred[v] + pred[w].

a ıne a s a ¸ Presupunem prin urmare c˘ se apeleaz˘ a a union(x. atunci. y) ¸i c˘ se execut˘ pred[y] := x.3. dac˘ ˆ acea iteratie nu se execut˘ a ın ¸ a union. S˘ observ˘m c˘ a a a singurele vˆ ırfuri v c˘rora li se modific˘ h(v) a a dup˘ executia iteratiei curente sˆ cele care a ¸ ¸ ınt ˆ ınaintea iteratiei satisf˘ceau f ind(v) = y.Dup˘ initializarea 1. (*) are ¸ loc. s a a Aceasta ˆ ınseamn˘ c˘ ˆ a a ınaintea acestei iteratii ¸ avem −pred[x] ≥ −pred[y]. ˆ a ınaintea unei iteratii din pasul 2. nu se modific˘ tabloul pred ¸i deci (*) a s r˘mˆ valabil˘ ¸i dup˘ executie. pen¸ a tru care aveam −pred[y] ≥ 2h(v). 182 . deci (*) are loc cu egalitate. Dac˘. ∀v ∈ V h(v) = 0 ¸i a ¸ s f ind(v) = v iar −pred[v] = 1. Avem −pred [x] = a −pred[x] − pred[y] ≥ 2· (−pred[y]) ≥ 2· 2h(v) = 2h(v)+1 = 2h (v). Dupa executia iteratiei avem h (v) = h(v) + ¸ ¸ 1 iar f ind (v) = x. ¸i deci trebuie s˘ verifis a cam c˘ −pred [x] ≥ 2h (v).

aducˆ ındu-i vˆ ırfurile drept descendenti imedi ¸ ati ai r˘d˘cinii. prin logaritmare obtinem ¸ ∀v ∈ V h(v) ≤ log(−pred[f ind[v]]) ≤ log n. Mai precis.Rezulta c˘ (*) are loc pe tot parcursul algorita mului. avem 183 . cu scopul ca apelurile viitoare ¸ a a ale lui f ind pentru aceste vˆrfuri s˘ nu mai a a consume timp. este datorat˘ apeluri a a lor succesive ale lui f ind. Complexitatea pasului 2. deci. Tarjan (1976) a propus ca fiecare apel al lui f ind care necesit˘ parcurgerea unui drum de a lungime mai mare decˆ 1. Solutia a III a. Complexitatea pasului 2 va fi deci O(n − 1 + 2m log n) = O(m log n) ¸i deci tot algoritmul s are complexitatea O(m log n) ceea ce-l face superior algoritmului lui Prim pentru grafuri rare. s˘ ”distrug˘ ” acest ıt a a drum. cu ¸ implementarea precedent˘.

x + 1) = A(i. while pred[j] > 0 do { k ← pred[j]. A(0. variabile ˆ ıntregi locale i. 184 ≥ log n. 1) = 2 ∀i ≥ 1. atunci. A(i. utilizˆ ınd union din solutia ¸ a II-a ¸i f ind descris mai sus. j ← v.function f ind(v : V ). x)) ∀i ≥ 0 ∀x ≥ 1. n) = min{z | A z. este O(m· α(m. j. n) ≤ 3) ¸i deci se poate presupune s ca aceast˘ ultim˘ implementare este practic liniar˘ (ˆ a a a ın raport cu m). A(i + 1. o) = 0 ∀i ≥ 0. 4 m/n avem: Complexitatea pasului 2. while pred[i] > 0 do i ← pred[i]. pred[j] ← i. j ← k. z ≥ 1} . n) cre¸te extrem de ˆ a a s ıncet (pentru valorile practice ale lui n. A(i + 1. n)). considerˆ ∀m ≥ n > 0 ınd α(m. x) = 2x ∀x ≥ 0. } return i Dac˘ A : NxN → N este functia lui Ackermann dat˘ a ¸ a de: A(i. i ← v. k. s Not˘m c˘ α(m. α(m.

e incident˘ cu v}|. Se nume¸te cuplaj (sau multime ¸ s ¸ independent˘ de muchii) al grafului G. ∀v ∈ V . Dac˘ M ∈ MG atunci un vˆ v ∈ V cu dM (v) = a ırf 1 se nume¸te saturat de cuplajul M . orice a multime M de muchii cu proprietatea c˘ ¸ a dM (v) ≤ 1. 185 . Dac˘ A ⊆ E ¸i a s v ∈ V . E) un (multi)graf.IV. Vom nota cu MG familia cuplajelor grafului G: ın MG = {M | M ⊆ E. Cuplaje (de cardinal maxim). Fie G = (V. a adic˘ gradul vˆ a ırfului v ˆ graful partial < A >G. ii) M ∈ MG. ın ¸ Definitie. Se observ˘ c˘ MG satisface propriet˘¸ile: a a at i) ∅ ∈ MG. vom nota cu dA(v) = |{e | e ∈ A. M ⊆ M ⇒ M ∈ MG. satisface |S(M )| = 2|M |. Multimea s ¸ S(M) a vˆ ırfurilor saturate de cuplajul M ˆ ın graful G. M cuplaj ˆ G}.

Dac˘ dM (v) = 0. a FG = {F | F ⊆ E. Multimea E(M) a ¸a ¸ vˆ ırfurilor expuse fat˘ de cuplajul M satisface ¸a E(M ) = V − S(M ) ¸i |E(M )| = |V | − 2|M |. s Problema ”cuplajului maxim”: P1 Dat G = (V. E) un graf. F acoperire ˆ G} noteaz˘ ın a familia acoperirilor grafului G. Definitie. (Vom nota cu ν(G) = max{|M | | M ∈ MG}). FG = ∅ ⇔ G nu are vˆ ırfuri izolate (atunci. atunci v se nume¸te exa s pus fat˘ de cuplajul M . Se nume¸te acoperire (a vˆ ¸ s ırfurilor cu muchii) ˆ graful G orice multime F ⊆ E de ın ¸ muchii cu proprietatea c˘ dF (v) ≥ 1 ∀v ∈ V . s˘ se determine a M ∗ ∈ MG astfel ˆ ıt ıncˆ |M ∗| = max{|M | | M ∈ MG}. Problema cuplajului maxim este strˆ legat˘ ıns a de problema acoperirii minime. a 186 . m˘car E este o acoperire).

Dac˘ M ∗ este un cuplaj de cardinal maxim a ˆ G. 1. s˘ se determine a F ∗ ∈ FG astfel ˆ ıt ıncˆ |F ∗| = min{|F | | F ∈ FG}. a ıncˆ F ← F ∪ {vv } } 187 . iar F ∗ o acoperire de cardinal minim ˆ ın ın G.Problema acoperirii minime este: P2 Dat G = (V. Demonstratie: a) Fie M ∗ un cuplaj de cardinal ¸ maxim. atunci |M ∗| + |F ∗| = n. E) un graf. for ∀v ∈ E(M ) do { determin˘ v ∈ S(M ∗) astfel ˆ ıt vv ∈ E. de ordin n. Consider˘m urm˘torul algoritm: a a F ← M ∗. Teorem˘. (Norman-Rabin 1959) Fie a G = (V. E) un graf f˘r˘ vˆ a a ırfuri izolate.

a a b) Fie F ∗ o acoperire de cardinal minim. ¸i cum M ∗ este maximal ˆ raport cu ins cluziunea. Multimea de muchii F astfel construit˘ este o acoperire ¸i ˆ plus |F | = a s ın |M ∗| + |E(M ∗)| = |M ∗| + n − 2|M ∗| = n − |M ∗|. exist˘ o muchie incident˘ cu a a ın v. Dac˘ muchia e incident˘ cu v.S˘ observ˘m c˘ pentru ∀v ∈ E(M ∗). ¸ 188 . este e = vv . Rezult˘ c˘ |F ∗| ≤ |F | = n − |M ∗|. cum G nu a a a are vˆ ırfuri izolate. a a M ←M −e } s ın Algoritmul construie¸te un cuplaj M ˆ G. care se ˆ atur˘ a a ınl˘ a din M ˆ ıntr-o iteratie while. Consider˘m urm˘torul algoritm: a a M ← F∗ while ∃v ∈ V : dM (v) > 1 do { determin˘ e ∈ M incident˘ cu v. aceast˘ muchie are cealalt˘ extrema a ¸ itate din S(M ∗).

Din (a) ¸i (b) rezult˘ concluzia teoremei. ınd Deci dac˘ M este cuplajul construit de algoritm a a avem: |F ∗| − |M | = |E(M )| = n − 2|M |. chiar mai mult. a 189 . ınl˘ atunci din acoperirea initial˘ F ∗ se poate ˆ atura ¸ a muchia e ¸i s˘ obtinem tot o acoperire.atunci dM (v ) = 1 ¸i deci ˆ pasul urm˘tor s ın a dM (v ) va fi zero. cuplajul M ¸i acoperirea F construite fis ind ¸i ele solutii optime respectiv pentru cele s ¸ dou˘ probleme. adic˘ la orice ˆ a ındep˘rtare a a unei muchii din multimea M curent˘ de muchii ¸ a se obtine un vˆ expus fat˘ de cuplajul final M ¸ ırf ¸a ınc˘ (dac˘ vˆ a ırful v ar fi incident cu ˆ a o muchie. c˘ ¸ a a a a problemele (P1) ¸i (P2) sˆ polinomial echivas ınt lente. s a Demonstratia f˘cut˘ arat˘. cons a ¸ trazicˆ alegerea lui F ∗). adic˘ |F ∗| = n − |M | ≥ n − |M ∗|.

a ˆ cele ce urmeaz˘ ne vom ocupa numai de In a problema (P1). 190 . m} m P2’ ¸i teorema 1 ofer˘ o egalitate min-max interes a sant˘. ˆ plus vom presupune c˘ G ın a nu are vˆ ırfuri izolate. x ≥ 0. x ≥ 0. s ¸i dac˘ not˘m cu ep vectorul p-dimensional cu s a a toate componentele 1. xi ∈ {0. xi ∈ {0.Dac˘ vom considera matricea de incident˘ a ¸a (vˆ . m} m min{eT x|Bx ≥ en . atunci cele dou˘ proba leme se scriu analitic astfel P1’ max{eT x|Bx ≤ en .muchie) a grafului G cu n vˆ ırf ırfuri ¸i m s muchii B = (bij )n×m cu bij = 1 dac˘ vˆ a ırful i ¸i muchia j sˆ incidente ¸i bij = 0 altminteri s ınt s (ˆ ıntr-o ordonare fixat˘ a vˆ a ırfurilor ¸i muchiilor). 1} i = 1. 1} i = 1.

ν(C2n+1 ) = n ¸i totu¸i xi = s s 1 ∀i = 1. a Cel mai simplu exemplu ˆ acest sens este G = ın C2n+1. Evident. chiar mai mult. 2n + 1 este o solutie optim˘ a lui ¸ a 2 (LP1’) corespunz˘toare.Dac˘ s-ar ˆ a ıncerca rezolvarea problemei (P1’) apelˆ la problema de programare liniar˘ asoınd a ciat˘ a (LP 1 ) max{emx | Bx ≤ en. x ≥ 0} se constat˘ c˘ solutiile optime pot s˘ nu fie a a ¸ a cu componente ˆ ıntregi ¸i. 2 1/2 1/2 1/2 1/2 1/2 191 . vals oarea maxim˘ determinat˘ de (LP1’) s˘ fie sua a a perioar˘ lui ν(G). cu valoarea optim˘ a a n + 1 > n.

ın tablourile simplex sˆ reprezentate implicit) a condus la ınt a¸a numita ”metod˘ ungar˘” de rezolvare a problemei s a a (P1) pentru grafurile bipartite. au coordonatele 0. x ∈ Rm. Nu vom prezenta acest algoritm. s 192 . direct pe graful bia partit considerat (ˆ scopul unei economii de memorie. 2. Coordonatele 1 apar dac˘ ¸i s 2 a s 2 numai dac˘ G are circuite impare. 1 ¸i 1 . Mai precis. (Balinski 1971) Vˆ a ırfurile politopului Bx ≤ en . problema a a ın (P1) este u¸or de rezolvat: se apeleaz˘ la problema de s a programare (LP1’) ¸i solutia g˘sit˘ este solutie optim˘ s ¸ a a ¸ a pentru problema P1 (reprezentˆ vectorul caracteristic ınd al unui cuplaj). avem urm˘toarea teoa rem˘: a Teorem˘. x ≥ 0. preferˆ descrierea unuia mai performant daınd torat lui Hocroft ¸i Karp (1973).Rezult˘ c˘ existenta circuitelor impare ˆ graful a a ¸ ın G poate provoca dificult˘¸i ˆ rezolvarea probat ın lemei (P1). Adaptarea combinatorie a algoritmului simplex din programarea liniar˘. a Rezult˘ de aici c˘. ˆ cazul grafurilor bipartite.

Totu¸i teorema de dualitate din programarea s liniar˘. 3. (Konig. E) a un graf bipartit. (Hall. Cardinalul maxim al unui cuplaj este egal cu num˘rul minim de vˆ a ırfuri prin ˆ ındep˘rtarea c˘rora se obtine graful nul: a a ¸ ν(G) = n − α(G) 193 . a s ¸ pot oferi demonstratii instantanee pentru teo¸ reme de caracterizare a solutiilor optime ale ¸ problemei (P1) ˆ cazul grafurilor bipartite: ın Teorem˘. Teorem˘.1930) Fie G = (R. 4. S. E) a un graf bipartit. S. precum ¸i integritatea solutiilor optime. Exist˘ un cuplaj care sata ureaz˘ vˆ a ırfurile lui R dac˘ ¸i numai dac˘ a s a |NG(A)| ≥ |A| ∀A ⊆ R. 1935) Fie G = (R.

as 194 .Revenind la problema (P1) cu G un graf oarea care ¸i observˆ s ınd c˘ ν(G) ≤ 1 |V (G)|. Este evident c˘ un graf care are un cuplaj perfect are ˆ a ın orice component˘ conex˘ un num˘r par de vˆ a a a ırfuri. rezult˘ a 2 c˘ este interesant de caracterizat grafurile cu a proprietatea c˘ admit un cuplaj M astfel ˆ ıt a ıncˆ S(M ) = V (G). Un astfel de cuplaj se nume¸te s cuplaj perfect sau 1-factor. ˆ ipoteza c˘ G are un a ın a cuplaj perfect. Mai mult. va trebui ca pentru fiecare component˘ a conex˘ cu un num˘r impar de vˆ a a ırfuri a grafului G − S s˘ a existe o muchie ˆ cuplajul perfect cu o extremitate ˆ ın ın S ¸i cealalt˘ ˆ componenta conex˘ impar˘. Rezult˘ c˘ s a ın a a a a num˘rul componentelor conexe impare ale grafului G−S a nu poate dep˘¸i |S|. dac˘ S ⊆ V (G) atunci.

prin inductie dup˘ n = ¸ a a ¸ a |V |. c˘. atunci a a G are un cuplaj perfect. a¸a cum rezult˘ din urm˘toarea s a s a a teorem˘. E) are un cuplaj perfect dac˘ ¸i numai dac˘ as a (T ) q(G − S) ≤ |S| ∀S ⊆ V. 5. S˘ observ˘m c˘ atunci cˆ a a a ınd S = ∅ conditia ¸ anterioar˘ cere ca orice component˘ conex˘ a a a a lui G s˘ aib˘ un num˘r par de vˆ a a a ırfuri. E) satisface (T). 195 . 1947) Un graf G = a (V. atunci observatia anterioar˘ arat˘ ¸ a a c˘ o conditie necesar˘ pentru ca G s˘ aib˘ un a ¸ a a a cuplaj perfect este ca q(G−S) ≤ |S| ∀S ⊆ V (G). Conditia ¸ este ¸i suficient˘. dac˘ G = (V. Demonstratie. (Tutte.Dac˘ pentru un graf oarecare H not˘m cu a a q(H) num˘rul componentelor conexe impare a ale lui H. Ar˘t˘m. a Teorem˘.

ˆ Intr-o astfel de component˘ conex˘. exist˘ ˆ a a a ıntotdeauna un vˆ v0 care nu este vˆ de articulatie (orice ırf ırf ¸ vˆ pendant al unui arbore partial ) ¸i se verific˘ ırf ¸ s a imediat c˘ q(G − {v0}) = 1 = |{v0}| . S0 = S avem q(G − S) < |S|. ıncˆ Cum G satisface T . a Prin urmare familia {S | S ⊆ V. rezult˘ c˘ G are numai a a componente conexe de cardinal par. s Alegem S0 ⊆ V (G) astfel ˆ ıt ˆ (T) avem ıncˆ ın egalitate: q(G − S0) = |S0| ¸i oricare ar fi S s astfel ˆ ıt S0 ⊆ S. Fie G = (V. 2.Cum teorema se verific˘ imediat pentru n = a 1. E) cu |V | = n ¸i care satisface (T). 196 . q(G − S) = |S|} este nevid˘ ¸i orice element maximal al ei poate as fi considerat S0. vom presupune ˆ pasul inductiv c˘ orice ın a graf G cu |G | < n ¸i care satisface (T) are un s cuplaj perfect.

.un cuplaj format din m muchii. . Cm componens tele conexe de cardinal impar ale lui G − S0. . .cˆ un cuplaj perfect ˆ ıte ın fiecare component˘ conex˘ par˘ Di.Fie m = |S0| > 0 ¸i C1. . a a a b) . m) avˆ ınd o extremitate si ∈ S0 ¸i s cealalt˘ vi ∈ Ci. C1 C2 D1 C3 s2 D2 s1 sm Dk s3 Cm Vom construi un cuplaj perfect al grafului G compus din : a) . Dk componentele conexe de cardinal par (k ≥ 0) ale lui G − S0. muchia ei (i = 1. . iar D1. .cˆ un cuplaj perfect ˆ fiecare subgraf ıte ın [Ci − vi]G. . a c) . 197 .

i = 1.a) Pentru orice i = 1. . Cm}. . a Avem q(G − S) ≤ |S| ¸i deci G satisface T. cum m > 0. k graful [Di]G are un cuplaj perfect. rezult˘ c˘ |Di| < n ¸i s In a a a deci pentru a dovedi existenta cuplajului per¸ fect ˆ [Di]G este suficient s˘ dovedim ( din ın a ipoteza inductiv˘) c˘ G = [Di]G satisface (T). . iar multimea muchiilor E format˘ din ¸ a perechile sCi (s ∈ S. m) cu proprietatea c˘ exist˘ v ∈ Ci cu sv ∈ E(G). ˆ adev˘r. . a ¸ a a multimea componentelor conexe impare ale lui ¸ G − S0. a a a Fie S ⊆ Di. s b) Fie H = (S0. a a 198 . Dac˘ q(G − S) > |S| atunci q(G − S0 ∪ S) = q(G − S0) + q(G − S) = |S0| + q(G − S) > |S0| + |S| = |S0 ∪ S|. contrazicˆ ınd faptul c˘ G satisface (T). cealalt˘ clas˘. {C1. E ) graful bipartit avˆ ınd o clas˘ a bipartitiei S0.

ˆ adev˘r. . . ırf ırf Deci componentele conexe impare Ci din A ale grafului G − S0 vor r˘mˆ componente conexe a ıne impare ¸i ˆ G − B. . . . . Cm}. . |NH (A)| ≥ |A| ¸i cum |S0| = m va rezulta c˘ M0 este cuplaj s a perfect ˆ H. ˆ graful G nu avem muchii de la un ın vˆ v ∈ S0 − B la un vˆ v ∈ Ci cu Ci ∈ A. ın Fie A ⊆ {C1. Cm}. . In a este suficient s˘ ar˘t˘m c˘ H satisface conditia a a a a ¸ lui Hall de existant˘ a unui cuplaj M0 ce sat¸a ureaz˘ vˆ a ırfurile lui {C1. . s ¸ Observ˘m c˘ B = NH (A) ⊆ S0 ¸i din definitia a a lui H. .s1 s2 s3 C1 C2 C3 sm Cm Acest graf are un cuplaj perfect. . s ın 199 . . Cm} : ∀A ⊆ {C1.

avem |S | ≥ q(G − S ) = q(G − S0) − 1 + q(G − S) = |S0| − 1 + q(G − S) ≥ |S0| − 1 + |S| + 2 = |S |. m. Cum A a fost aleas˘ arbitrar. sm} ¸i vi ∈ Ci i = 1. Dac˘ q(G − S) > |S| atunci a a a cum q(G − S) + |S| ≡ 0 (mod 2). c) Pentru orice i ∈ {1. . . . Pe de alt˘ parte a a a G satisface conditia lui Tutte (T) deci |B| ≥ ¸ q(G − B).Rezult˘ c˘ q(G − B) ≥ |A|. . . a a Fie S ⊆ Ci − vi. Folosind ipoteza inductiv˘. afirmatia va rezulta a ¸ dac˘ dovedim c˘ G satisface (T). 200 . . . m} graful G = [Ci − vi]G are un cuplaj perfect. rezult˘ c˘ q(G − S) ≥ |S| + 2 ¸i atunci considerˆ s ınd S = S0 ∪ {vi} ∪ S. smvm} s cu S0 = {s1. . a Rezult˘ c˘ ∀S ⊆ Ci − vi q(G − S) ≤ |S| deci G a a are un cuplaj perfect. s2v2. . Am obtinut deci |B| ≥ |A| adic˘ ¸ a |NH (A)| ≥ |A|. adic˘ q(G − S ) = |S | a ceea ce contrazice alegerea lui S0 c˘ci S0 ⊂ S . . . . rezult˘ c˘ H are a a a un cuplaj perfect M0 = {s1v1.

a Definitie: Se nume¸te drum alternat al lui G ¸ s relativ la cuplajul M orice drum P : v0. 2 Totu¸i. cuplajul lui G obtinut prin reuniunea ¸ cuplajelor puse ˆ evident˘ ˆ a). . vk−1vk . . vk−1. ˆ ∀i = 1. v0v1. 201 . .Evident. . b). v1. algoritmii care rezolv˘ problema (P1) s a se bazeaz˘ pe o caracterizare mai simpl˘ a cua a plajelor de cardinal maxim. a Not˘m c˘ Berge (1958) a generalizat aceast˘ a a a teorem˘ stabilind c˘ a a 1 ν(G) = (|V (G)| − maxS⊆V (G)[q(G − S) − |S|] ). Fie G = (V. E) un graf ¸i M ∈ MG un cuplaj al s s˘u. k − 1 {vi−1vi. vivi+1} ∩ M = ∅. vk a. ı. ¸i c) de ın ¸a ın s mai sus este un cuplaj perfect ¸i cu aceasta s teorema este demonstrat˘.

S˘ observ˘m c˘. c.drum alternat impar a. c. din dintre orice dou˘ a drumului P exact alternativ la M ¸i s Vom desemna. d.drum de crestere g. d. expuse relativ la cuplajul M . f. a e f b c d i j g h a. f.drum alternat impar j . g. ˆ cele ce urmeaz˘. prin P ın a multimea muchiilor drumului P (pentru simpli¸ ficarea notatiilor). b. d . M este cuplaj. e . b.drum alternat par f . h . c.drum de crestere 202 . d . ¸ Definitie: Se nume¸te drum de cre¸tere al lui ¸ s s G relativ la cuplajul M un drum alternat cu extremit˘¸ile vˆ at ırfuri distincte.drum alternat inchis a. ˆ a a a ıntrucˆ ıt definitia dat˘ rezult˘ c˘ ¸ a a a muchii consecutive ale una apartine cuplajului ¸ (muchiile lui P apartin ¸ E − M ). b.

d. g. s In |M | = |P ∩ M | + 1 + |M − P | = |M | + 1. Demonstratie: Dac˘ M este un cuplaj de car¸ a dinal maxim ¸i P ar fi un drum de cre¸tere s s ˆ G relativ la M atunci M = P ∆M = (P − ın M ) ∪ (M − P ) este un cuplaj ˆ G.drum de crestere . contrazicˆ alegerea lui M . f. rezult˘ c˘ dac˘ P ¸ ¸ a a a este un drum de cre¸tere relativ la cuplajul M s atunci |P − M | = |P ∩ M | + 1. Teorem˘. ˆ plus. b. (Berge 1959) Un cuplaj M a este de cardinal maxim ˆ graful G dac˘ ¸i nuın a s mai dac˘ nu exist˘ ˆ G drumuri de cre¸tere a a ın s relativ la M . ınd a e f b c d i j (M-P) u (P-M) 203 g h P= a. h . c.Observatie: Din definitie. 6. (Constructia ın ¸ lui P ∆M revine la interschimbarea muchiilor lui M − P ¸i P − M pe drumul P ).

dG (v) ≤ 2 ∀v ∈ V ¸i deci componens ınt tele conexe ale lui G sˆ drumuri (eventual de lungime 0). Situatia c) nu are loc. ceea ce demonstreaz˘ teorema. Evident. G = (V. sau circuite ¸i avem urm˘toarele s a posibilit˘¸i (muchiile ˆ at ıngro¸ate sˆ din M ∗ ¸i s ınt s cele subtiri. M ∆M ∗).Reciproc. din M ): ¸ a b c d e Situatia b) nu poate avea loc. dac˘ M este cuplaj ˆ G ¸i M nu a ın s admite drumuri de cre¸tere. ˆ ¸ ıntrucˆ M nu admite ıt drumuri de cre¸tere. s 204 . a ¸ Fie G graful partial al lui G. pentru c˘ reprezint˘ un ¸ a a drum de cre¸tere relativ la M ∗ care-i cuplaj de cardinal s maxim. consider˘m M ∗ un s a cuplaj de cardinal maxim. Vom ar˘ta c˘ |M ∗| = a a |M |.

|M | = |M ∗|. Rezult˘ c˘ a a |M −M ∗| = C mC (M ) = C mC (M ∗) = |M ∗−M | (suma se face dup˘ toate componentele conexe a C ale grafului G ) ¸i deci. de muchii a a din M ∗ avem mM (C) = mM ∗ (C). b) while ∃P drum de cre¸tere relativ la M do s M ← M ∆P La fiecare iteratie a ciclului while. dac˘ not˘m cu mM (C) num˘rul muchia a a s ilor din M ale componentei conexe C a lui G ¸i cu mM ∗ (C) num˘rul corespunz˘tor. s 205 . cuplajul curent ”cre¸te” ¸ s (cardinalul s˘u se m˘re¸te cu o unitate) ¸i deci ˆ cel a a s s ın mult n 2 iteratii se obtine un cuplaj de cardinal maxim.Deci. s Aceast˘ teorem˘ justific˘ urm˘oarea strategie a a a t de construire a unui cuplaj de cardinal maxim: a) fie M un cuplaj oarecare a lui G (eventual M = ∅). ¸ ¸ care nu va admite drumuri de cre¸tere.

a fost Edmonds (1965).inexistenta drumu¸ lui de cre¸tere . cunosa cut. obtinˆ astfel unul din primele ¸ ınd rezultate ale teoriei complexit˘¸ii (cantitative) at a algoritmilor. ¸ ¸ Primul care a demonstrat posibilitatea implement˘rii acestui algoritm astfel ˆ ıt num˘rul a ıncˆ a total de operatii s˘ fie polinomial ˆ raport cu ¸ a ın num˘rul de vˆ a ırfuri ale grafului G. cu ipoteza suplimentar˘ c˘ a a se alege de fiecare dat˘ un drum de cre¸tere a s cu num˘r minim de muchii (printre toate a drumurile de cre¸tere posibile). fac o analiz˘ mai In s a detaliat˘ a procesului succesiv de cre¸teri ale a s cuplajului curent. pentru rezolvarea problemei.Neajunsul acestui algoritm este acela c˘ tesa tul de oprire a ciclului . Aceast˘ idee s a st˘ la baza celui mai eficient algoritm.poate conduce la un num˘r s a exponential de operatii. ˆ 1973 Hopcroft ¸i Karp. 206 .

disjuncte s ca vˆ ırfuri. ın 207 . Atunci ˆ M ∆N exist˘ cel putin s − r s ın a ¸ drumuri de cre¸tere ale cuplajului M . 1} (M. . In δ(Ci ) = |N − M | − |M − N | = s − r. ¸ ın Fie Ci i = 1. p} δ(Ci ) = |E(Ci) ∩ N | − |E(Ci) ∩ M |. .p Rezult˘ c˘ exist˘ m˘car s − r Ci cu δ(Ci ) = 1.Lem˘. |M | = r. 1. ⇒ Ci sˆ druınt muri sau circuite). p componentele conexe ale lui G . . 0. a a a a adic˘ exist˘ m˘car s−r drumuri de cre¸tere disa a a s juncte ca vˆ ırfuri (deci ¸i ca muchii) continute s ¸ ˆ M ∆N . Definim pentru fiecare i ∈ {1. |N | = s a ¸i s > r. Demonstratie: Fie G = (V. . Observ˘m c˘: a a δ(Ci) ∈ {−1. N ∈ MG. N cuplaje. as a δ(Ci) = 1 dac˘ ¸i numai dac˘ Ci este un drum de cre¸tere relativ la M . Fie M. s ˆ plus. M ∆N ) graful partial ¸ ¸ sectionat ˆ G de M ∆N . i=1.

Fie N ∈ MG cu |N | = s = ¸ ν(G). un drum s ın de cre¸tere cu num˘r minim de muchii printre s a toate drumurile de cre¸tere ale lui M ˆ G. Demonstratie. ¸ a c˘rui lungime este deci ≤ 2 r/(s − r) + 1. 208 . 2. a Definitie Dac˘ M ∈ MG. s continute ˆ M ∆N . Acestea au ˆ ¸ ın ımpreun˘ cel a mult r muchii din M . |P | ≥ |P | + 2|P ∩ P |. Conform lemei precedente. Dac˘ ν(G) = s ¸i M ∈ MG |M | = a a s r < s. s ın Lem˘. P drum minim de a cre¸tere relativ la M .Lem˘. 3. atunci exist˘ ˆ G un drum de cre¸tere a ın s relativ la M de lungime ≤ 2 r/(s − r) + 1. ¸i P drum de cre¸tere al s s s lui M ∆P . se nume¸te drum ¸ a s minim de cre¸tere al lui M ˆ G . Rezult˘ c˘ exist˘ unul a a a care contine cel mult r/(s − r) muchii din M . vor exista s − r drumuri de cre¸tere disjuncte pe muchii. Fie M ∈ MG. Atunci.

ν(G) − 2 |Pi| ≤ |Pi+1|. ¸ s Avem M ∆N = P ∆P ¸i |N | = |M | + 2. implic˘ Pi ¸i ınt ırfuri. P1. Lem˘. . i ≥ 0. rel. la s (∗): Mi. a s b) ∀i < j < ν(G) − 1 |Pi| = |Pj |. s ınt disjuncte ca |Pi| = |Pi+1| ⇔ Pi ¸i Pi+1 sˆ vˆ ırfuri.Demonstratie: Fie N = (M ∆P )∆P . . Pν(G)−1. Consider˘m urm˘torul algoritm a a M0 ← ∅. Folosind lema 1 obtinem c˘ exist˘ P1. Cum P este drum ¸ ın minim de cre¸tere avem: |P ∆P | ≥ |P1|+|P2| ≥ s 2|P | deci |P | + |P | − 2|P ∩ P | ≥ 2|P |. a a) ∀i = 1. Mi+1 ← Mi∆Pi ( Pi dr. Pj sˆ disjuncte ca vˆ 209 . 4. P2 dru¸ a a muri de cre¸tere disjuncte ca muchii relativ s la M continute ˆ M ∆N .) Se obtine ¸irul de drumuri minime de cre¸tere ¸ s s P0. . minim de cre¸t. .

deci ˆ total avem ¸ ın √ cel mult 2 s + 2 ˆ ıntregi distincti. |Ps−1| mai sˆ cel mult s − r ≤ s √ s +1ˆ ıntregi distincti. |P1|. Egalitatea are loc dac˘ ¸i nua s mai dac˘ Pi ¸i Pi+1 sˆ disjuncte ca muchii. 7. Atunci |Mr | = a √ r ¸i |Pr | ≤ 2 r/(s − r) + 1 = 2 s − s /(s − s √ √ s − s ) + 1 < 2 s + 1. . . Rezult˘ c˘ oricare ar fi i < r. . avˆ ˆ vedere alternanta dru¸ ınd ın ¸ murilor. . .Demonstrtie: a) Considerˆ ¸ ınd P = Pi ¸i P = s ın ¸ Pi+1 ˆ lema 3 se obtine |Pi+1| ≥ |Pi| + 2|Pi ∩ Pi+1| ≥ |Pi |. Karp 1973) Fie a G un graf ¸i ν(G) = s. Num˘rul ˆ s a ıntregilor ¸ s distincti din ¸irul |P0|. construit √ ˆ algoritmul de mai sus este cel mult 2 s + ın 2. . a ınd Teorem˘. |Ps−1|. (Hopcroft. . |Pi | este unul din a a √ √ cei s +1ˆ ıntregi impari ≤ 2 s + 1. ¸ 210 . ˆ In ınt sub¸irul |Pr |. implic˘ faptul c˘ nu au vˆ a a ırfuri comune. a s ınt conditie care. √ Demonstr¸tie: Fie r = s − s . . b) rezult˘ aplicˆ succesiv a).

rezult˘ c˘ num˘rul fazelor ınd a a a nu va dep˘¸i 2 ν(G) + 2. repeat Determin˘ P o familie maximal˘ (⊆) a a de drumuri minime de cre¸tere. ˆ ıntr-un graf cu m˘car o a muchie: 0. 1. lungimea drumurilor minime a de cre¸tere utilizate va cre¸te strict (altfel ss s ar contrzice maximalitatea multimii de drumuri ¸ alese). Utilizˆ teorema 7. s for P ∈ P do M ← M ∆P until P = ∅. as Rezult˘ c˘ urm˘torul algoritm pentru aflarea a a a unui cuplaj maxim. rezult˘ c˘. M ← ∅. din lema 4. 211 .Dac˘ algoritmul (∗) se descompune ˆ etape. ˆ a a ın etapa urm˘toare. a ın astfel ˆ ıt la fiecare etap˘ se determin˘ o ıncˆ a a multime maximal˘ de drumuri minime de cre¸tere ¸ a s disjuncte ca vˆ ırfuri.

s Fie G = (R. Pentru un graf oarecare. R ∩ E(M ). s a ın numai cazul grafurilor bipartite. structurile de date necesare obtinerii aceleea¸i complexit˘¸i sˆ ¸ s at ınt mult mai elaborate ¸i au fost descrise de Micali s ¸i Vazirani 1980. ˆ continuare. deci s-a obtinut un algoıncˆ ¸ ritm de complexitate O(mn1/2) pentru aflarea unui cuplaj de cardinal maxim ˆ ıntr-un graf bipartit. Consider˘m. astfel ˆ ıt A = O(m + n).√ are complexitatea O( nA) unde A este complexitatea determin˘rii familiei P. a Hopcroft ¸i Karp au ar˘tat cum se poate ims a plementa pasul 1 pentru un graf bipartit. 212 . ırf. ¸i din fiecare s s astfel de vˆ se incepe constructia ˆ paralel. E) un graf bipartit ¸i M ∈ MG. S. R de exemplu. ¸ ın de drumuri alternate. Pornind din una din clase. se consider˘ multimea extremit˘¸ilor drumurilor a ¸ at de cre¸tere posibile.

oferind lungimea ¸a s ¸ minim˘ a unui drum de cre¸tere.drumuri de crestere familie maximala de 3. Exemplu: ¸a familie maximala de 1. Complexitatea O(m + n) rezult˘ prin utilizarea listelor de a adiacent˘. concluzia s de inexistent˘) opre¸te constructia. ¸i un sistem evident a s s de etichetare va permite depistarea familiei P.Prima depistare a unui drum de cre¸tere (sau.drumuri de crestere Cuplaj maxim ! toate virfurile rosii sunt saturate 213 .

s = t. RETEA Intrare V Iesire V Data Reteaua. 4-uplul R = (G. t ∈ V . . Problema fluxului maxim. d+(s) > 0.s.V. 2. care este v MAXIM ? Numim retea (de transport) cu intrarea s ¸i ¸ s ie¸irea t. E) este un digraf. FLUXURI ˆ RETELE IN ¸ 1. s.G = (V. Vom presupune c˘ a s a V = {1. Extindem functia c la c : V × V → R+ prin ¸ c((i. . . s . c) unde: s . j)) = cij . n} (n ∈ N∗) ¸i c˘ |E| = m. G G . d−(t) > 0.c : E → R+. . t. j)) = ⎧ ⎨c(ij) ⎩0 dac˘ ij ∈ E a dac˘ ij ∈ E a / 214 ¸i vom nota c((i. . c(e) este capacitatea arcului e.

c) ¸ ın ¸ o functie x : V × V → R. care satisface ¸ (i) (ii) j∈V 0 ≤ xij ≤ cij xji − j∈V ∀ij ∈ V × V ∀i ∈ V − {s. a a ¸ de¸i ˆ implement˘ri. conditia (i) cere ca fluxul pe orice ¸ arc s˘ fie nenegativ ¸i subcapacitar. t. s. j) care nu sˆ arce ˆ retea. xij = 0 Observatii ¸ 10 Dac˘ ij ∈ E atunci xij se nume¸te fluxul a s (transportat)pe arcul ij. Se putea cere ca fluxul s˘ fie definit numai pe arcele a retelei. dar cu conventia f˘cut˘ la extensia functiei de ¸ ¸ a a ¸ capacitate. s a ¸ ınt O prefer˘m pe cea dat˘. structurile de date folosite vor igs ın a nora perechile (i. iar conditia a s ¸ (ii) (legea de conservare a fluxului) cere ca suma fluxurilor pe arcele care intr˘ ˆ vˆ a ın ırful i s˘ fie egal˘ cu suma fluxurilor pe arcele a a care ies din vˆ ırful i. ınt ın ¸ 215 . ınt ın ¸ ¸ a ¸i evident cele dou˘ definitii sˆ echivalente. se observ˘ c˘ pentru perechile (i. t}. pentru simplitatea notatiilor.Definitie: Numim flux ˆ reteaua R = (G. j) care nu a a sˆ arce ˆ retea conditia (i) impune ca fluxul s˘ fie 0. Evident.

t xit = i=s. v(x) se poate interpreta ca fiind fluxul net care ajunge ˆ ie¸irea retelei sau (conform egalit˘¸ii ın s ¸ at obtinute mai sus) fluxul net care iese din in¸ trarea retelei. adic˘ xjt − j∈V j∈V xtj = − j∈V xjs − j∈V xsj . Definitie: Dac˘ x este un flux ˆ reteaua R = ¸ a ın ¸ (G.t i=s.20 Dac˘ se sumeaz˘ relatiile (ii) (pentru i ∈ a a ¸ V − {s. s. t}) se obtine: ¸ 0 = i=s.t xij + i=s.t xji − i=s. c) se nume¸te valoarea fluxului x num˘rul s a v(x) = j∈V xjt − j∈V xtj .t xis − − i xis − i xit − a i xti .t xti − i xsi − i=s.t j=s. t. ¸ 216 .t j∈V xji − j∈V xij = i=s.t xsi + j=s.

∀i = s. t. t. s. s˘ se determine a ¸ a un flux de valoare maxim˘. In ¸ a fluxul nul xij = 0 ∀ij. a Observatii: 10. Problema se poate formula. care unın a ınt ¸ eori ˆ practic˘ sˆ esentiale. ¸ evident. c) exist˘ un flux. Problema fluxului maxim: Dat˘ R = (G. s. au condus la dezvoltarea de metode specifice de rezolvare.ˆ orice retea R = (G. 217 . c) o retea. de valoare 0. t j xsj = −v j xtj = v 0 ≤ xij ≤ cij ∀ij Particularit˘¸ile combinatorii ale problemei. ca o problem˘ de programare liniar˘: a a max v j xji − j xjs − j xjt − j xij = 0. num˘rul mare at a de restrictii ¸i mai ales dificult˘¸ile legate de restrictiile ¸ s at ¸ de integritate ce s-ar putea impune variabilelor.

c) ¸i x flux ˆ R. ¸ s ın Se nume¸te C-drum (ˆ R relativ la fluxul x) s ın un drum D ˆ G cu proprietatea c˘ ∀ij ∈ E(D) : ın a xij < cij dac˘ ij este arc direct. a 218 . a xji > 0 dac˘ ij este arc invers.Definitie. ¸i e = vivj este o s muchie a lui P atunci: dac˘ e corespunde arcului vivj al lui G. multi¸ a ın graful suport al digrafului G. atunci a e se nume¸te arc invers. s dac˘ e corespunde arcului vj vi al lui G. t. s G P -G arc direct arc invers Definitie. e se a nume¸te arc direct al drumului P . Fie R = (G. Dac˘ P este un drum ˆ G. s.

219 . 45. 56. 56(x56 = 1 < c56 = 2) ¸i arcul invers s a 45(x54 = 1 > 0). Capacitatea rezidual˘ a lui D este r(D) = min(min(2. e∈E(D) Exemplu: Fie reteaua de mai jos.1 2 3.2 5 6 t 4 3. 6 este un C-drum de la s la t cu arcele directe 12(x12 = 1 < c12 = 3).1 2. 1). ˆ care pe arce este ¸ ın precizat˘ mai ˆ ıi capacitatea ¸i apoi fluxul: a ıntˆ s 2. 2.0 Atunci D : 1.2 s 1 1. 24. 5. 24(x24 = 1 < c24 = 2).Dac˘ D este un C-drum ¸i ij ∈ E(D). 1.1 2. 4. 12.0 1. 1) = 1.1 1. a ın Capacitatea rezidual˘ a drumului D este a r(D) = min r(e).2 3 2. se nume¸te a s s capacitatea rezidual˘ a lui ij (relativ la Ca drumul D) num˘rul a ⎧ ⎨c − x ij ij r(ij) = ⎩x ji dac˘ ij arc direct ˆ D a ın dac˘ ij arc invers ˆ D .

t este un vˆ al drumului D. ın s Demonstratie. c). atunci ın ¸ x1 = x r(D) definit prin ⎧ ⎪xij ⎪ ⎨ x1 = xij + r(D) ij ⎪ ⎪ ⎩ xij − r(D) dac˘ ij ∈ E(D) a / dac˘ ij ∈ E(D). t. ij arc direct ˆ D a ın dac˘ ji ∈ E(D). a conditiilor (i). a ¸ Conditiile (ii) verificate de x. Se nume¸te drum de cre¸tere a ¸ s s fluxului x. ji arc invers ˆ D a ın este flux ˆ R ¸i v(x1) = v(x) + r(D). un C-drum ın ¸ de la s la t.Definitie. t. c). ˆ reteaua R = (G. nu sˆ afectate ¸ ınt pentru niciun vˆ i ∈ V (D). Definitia lui r(D) implic˘ ¸ ¸ a ˆ ındeplinirea de c˘tre x1. ırf / Dac˘ i = s.fie ele li a ¸i ik. 1. s. Lem˘. Dac˘ D este un drum de cre¸tere a a s a fluxului x ˆ reteaua R = (G. s Avem urm˘toarele cazuri posibile: a 220 . i este a ırf incident cu exact dou˘ arce ale lui D. s.

b) li direct ik invers: 1 1 1 1 j xji − j xij = j=l. Daca lt invers atunci v(x1) = j x1 − j x1 = j xjt − j=l xtj −x1 = jt tj tl j xjt − j=l xtj − (xtl − r(D)) = v(x) + r(D). ik invers: similar cu a). c) li invers.a) li ¸i ik arce directe: s 1 1 1 1 j xji − j xij = j=l xji − j=k xij + xli − xik = j=l xji − j=k xij + xli + r(D) − xik − r(D) = j xji − j xij = 0.k xji − j xij + xli + xki = j=l.k xji − j xij + xli + r(D) + xki − r(D) = j xji − j xij = 0. d) li invers. ik direct: similar cu b). 221 . Valoarea fluxului x1 se obtine considerˆ ¸ ınd lt unicul arc al lui D incident cu t: Dac˘ lt direct atunci a v(x1) = j x1 − j x1 = j=l xjt − j xtj +x1 = jt tj lt j=l xjt − j xtj + xlt + r(D) = v(x) + r(D). Deci lema are loc.

s Rezult˘ c˘ a a dac˘ x admite un drum de cre¸tere atunci a s x nu este flux de valoare maxim˘.2 2. a 20 Din definitie. ¸ a s r(D) > 0 ¸i deci avem v(x r(D)) > v(x).2 s 1 1. fluxul x1 = x de valoare 4 este precizat pe arce: r(D) 2. precum ¸i cea de s s capacitate rezidual˘. a 222 .2 1.Pentru exemplul anterior. dac˘ D este drum de cre¸tere.2 2 3.0 Observatii: 10 Aceast˘ lem˘ justific˘ denu¸ a a a mirea de drum de cre¸tere.0 2.2 5 6 t 4 3.2 3 2.0 1.

atunci s ¸ ¸ v(x) = i∈S j∈T (xij − xji). T ) este ¸ c(S. T ) = i∈S j∈T cij (suma capacit˘¸ilor arcelor de la S la T ). T ) este o sectiune a retelei.Pentru a demonstra c˘ si reciproc este adev˘rat a a avem nevoie de o nou˘ notiune. at Lem˘. t. s. Fie R = (G. t.) ¸ s S + T t 223 . s Capacitatea sectiunii (S. c) a ın ¸i (S. T ) a lui ¸ ın ¸ ¸ V cu s ∈ S ¸i t ∈ T . a ¸ Definitie. c). (valoarea fluxului este egal˘ cu fluxul net ce a trece prin orice sectiune. 2. Daca x este un flux ˆ R = (G. o partitie (S. Se nume¸te ¸ s sectiune ˆ reteaua R. s.

i=s( j xji − j xij ) = = = i∈S ( j xij − j xji) j∈T (xij − xji) i∈S j∈S (xij − xji) + j∈T (xij − xji). s ¸ Demonstratie: ¸ v(x) = i∈S j∈T (xij − xji) (lema 2) ≤ ≤ i∈S j∈T (cij − xji) j∈T cij (xij ≤ cij ) i∈S (xji ≥ 0). T ). atunci v(x) ≤ c(S. 224 . t.Demonstratie: ¸ v(x) = ( j xjt − j xtj ) − 0 = −( j xjs− j xsj )− i∈S. T ) este o sectiune. i∈S i∈S Lem˘. s. Dac˘ x este un flux ˆ R = (G. c) a a ın ¸i (S. 3.

T ) a o sectiune astfel ˆ ıt v(x) = c(S. 3}. t. s. atunci ∀x ¸ ıncˆ flux ˆ R v(x) ≤ c(S.T) este o sectiune. {4. s ın ¸ Demonstratie: O implicatie este deja stabilit˘. nu exist˘ drumuri de a s a a cre¸tere a fluxului x ˆ reteaua R. 5. Consider˘m S = {i | i ∈ s a V ∧ ∃ D C-drum ˆ R de la s la i}. deci x este flux ın de valoare maxim˘. ¸ 225 . Fie T = a a a V − S. dac˘ ¸i numai dac˘. 6}). ıt Teorem˘. 2. T ). c) ¸i (S. fie x un flux ˆ R care nu admite drumuri de cre¸tere. 1.Observatii: ¸ ın s 1) Dac˘ x este un flux ˆ R = (G. a 2) ˆ exemplul dat. x1 este flux de valoare In maxim˘ ˆ a ıntrucˆ v(x1) = 4 = c({1. ın Evident s ∈ S (exist˘ D de lungime 0) ¸i t ∈ S a s / (nu exist˘ C-drumuri de la s la t). ¸ ¸ a ın Reciproc. (Teorema drumului de cre¸tere) a s Un flux x este de valoare maxim˘ ˆ a ıntr-o retea ¸ R. Rezult˘ c˘ (S. T ) = v(x).

(Teorema fluxului intreg) a Dac˘ toate capacit˘¸ile sˆ ˆ a at ınt ıntregi. Deci. 2. T ) ¸i prin urmare x este flux de valoare maxim˘. i ← 0. a Teorem˘. s 2: while (∃Pi drum de cre¸tere relativ la xi) do { xi+1 ← xi r(Pi). atunci exist˘ un flux de valoare maxim˘ cu toate compoa a nentele ˆ ıntregi (flux ˆ ıntreg de valoare maxim˘). conform lemei 2. a Demonstratie: Fie algoritmul ¸ 1: x0 ← 0.S˘ observ˘m c˘ ∀i ∈ S ¸i ∀j ∈ T avem: a a a s dac˘ ij ∈ E atunci xij = cij ¸i a s dac˘ ji ∈ E atunci xji = 0 a (altminteri C-drumul de la s la i se poate extinde la un C-drum de la s la j). v(x) = i∈S j∈T (xij − s xji) = i∈S j∈T (cij − 0) = c(S. i++ } 226 .

a ¸ 227 . V − a ¸ {s}) ∈ Z+ ori. 1956) a Valoarea maxim˘ a unui flux ˆ reteaua R = a ın ¸ (G. atunci sectiunea s ¸ construit˘ ˆ demonstratia teoremei 1 satisface a ın ¸ ˆ ımpreun˘ cu x enuntul teoremei. de valoare maxim˘. s. c) este egal˘ cu capacitatea minim˘ a a a unei sectiuni a retelei. Algoritmul. este ¸ finit ¸i ˆ cazul capacit˘¸ilor rationale. a Observatie. ¸ ¸ Demonstratie: Dac˘ dispunem de un algoritm ¸ a care. construie¸te ˆ ıntr-un num˘r finit de pa¸i un flux x. 3. s ın at ¸ Teorem˘. descris mai sus. dac˘ toate capacit˘¸ile sˆ ˆ rezult˘ c˘ r(Pi ) este ˆ a a ıntreg ˆ ipoteza c˘ xi e ın a ˆ ıntreg) ¸i c˘ la fiecare iteratie a pasului 2 vals a ¸ oarea fluxului curent cre¸te cu m˘car o unitate. lui r(Pi ). Fluxul final obtinut este.Se observ˘ c˘ ”xi are componente ˆ a a ıntregi” este un invariant al algoritmului (din definitia ¸ a at ınt ıntregi. s a deci pasul 2 se repet˘ de cel mult c({s}. conform teoremei 1. t. care nu a s admite drumuri de cre¸tere. ( Ford-Fulkerson. de exemplu x0 = 0). pornind de la un flux initial x0 (x0 exist˘ ¸ a s ˆ ıntotdeauna.

a ¸ Pentru cazul capacit˘¸ilor reale vom prezenta. 228 . un astfel de algoritm. a ¸ ¸ ¸ a pe cˆ ınd multimea fluxurilor din retea este in¸ ¸ a finit˘. a ii) Importanta algoritmic˘ a teoremei 3 este ev¸ a ident˘: multimea sectiunilor retelei este finit˘. ¸ ¸ existenta fluxului x maxim rezult˘ imediat. satisface ın ¸ aceast˘ conditie.Pentru cazul capacit˘¸ilor rationale algoritmul at ¸ descris ˆ demonstratia teoremei 2. con¸ a siderˆ ınd transcrierea problemei fluxului maxim ca o problem˘ de programare liniar˘. am preferat a a demonstratia de mai sus care (de¸i va fi com¸ s pletat˘ abia dup˘ analiza algoritmului lui Edmondsa a Karp) este constructiv˘. at mai tˆ ırziu. doar s˘ ar˘t˘m c˘ exist˘ un a a a a a flux x de valoare maxim˘ ¸i apoi s˘-i aplic˘m a s a a constructia din demonstratia teoremei 1. s Observatii: i) ˆ n demonstratia teoremei 3 avem ¸ ¸ I nevoie de fapt. datorat lui Edmonds ¸i Karp (1972).

ˆ vederea depist˘rii drumurilor de cre¸tere ¸ ın a s a fluxului curent x..dac˘ e2 = direct ¸i e1 = i atunci ∃ un C-drum a s P de la s la j cu ultimul arc ij. . se eticheteaz˘ sursa s cu eticheta (0. s a Eticheta atribuit˘ unui vˆ j ∈ V are trei coma ırf ponente (e1.Algoritmul lui Ford ¸i Fulkerson pentru aflarea s unui flux de valoare maxim˘ a Se va folosi un procedeu de etichetare a vˆ ırfurilor retelei. . ¸ a Celelalte vˆ ırfuri primesc etichet˘ prin a ”cercetarea” vˆ ırfurilor deja etichetate: 229 .dac˘ e2 = invers ¸i e1 = i atunci ∃ un C-drum a s P de la s la j cu ultimul arc ij. arc invers ¸i s r(P ) = e3. Dac˘ nu exist˘ drumuri de a a cre¸tere. e3) unde e1 ∈ V ∪ {0} . e3 ∈ R+ ¸i au urmatoarea s semnificatie: ¸ . fluxul va fi de valoare maxim˘. e2. e2 ∈ {direct. ∞). arc direct ¸i s r(P ) = e3. Initial. invers} .

min(e3[i]. e = (i. cij − xij )). Evident. ij ∈ E ¸i xij < cij atunci a s j se etichet. Dac˘ j neetichetat. ji ∈ E ¸i xji > 0 atunci a s j se etichet. s-a obtinut un drum de cre¸tere ¸ s P a fluxului curent. min(e3[i]. e = (i. 230 . ınd a Modificarea fluxului x r(P ) se execut˘ ˆ acest a ın mers ˆ ınapoi. a a Atunci cˆ ˆ procedura de etichetare s-a atribuit ınd ın etichet˘ vˆ a ırfului t. tot ˆ O(n). xji)). ˆ acest fel se respect˘ semnificatia ın a ¸ celor trei componente ale etichetelor.Dac˘ i este un vˆ etichetat. de capacitate rezidual˘ a r(P ) = e3[t] ¸i ale c˘rui vˆ s a ırfuri se depisteaz˘ ˆ a ın O(n) explorˆ prima component˘ a etichetelor. ın Pentru noul flux se reia procedura de etichetare. direct. invers. atunci ∀j ∈ V a ırf Dac˘ j neetichetat. Numim aceast˘ procedur˘ etichetare(i).

V − S) este o sectiune de capacitate minim˘. ırf s etichetare(i).. fluxul nul). ¸ a 231 . T ) este sectiune de capacitate minim˘. . este deci de valoare s maxim˘. ¸ a Descrierea algoritmului ¸ 1: Se alege x = (xij ) flux initial (de ex.Dac˘ toate vˆ a ırfurile etichetate au fost cercetate ¸i nu ss a reu¸it etichetarea vˆ s ırfului t. . i are etichet˘} a T ←V −S x este flux de valoare maxim˘ a (S. ∞) a 2: while (∃ vˆ ırfuri etichetate necercetate) do { ”alege” un vˆ etichetat ¸i necercetat i.. if (t a primit etichet˘) then a { modific˘ fluxul pe drumul dat de etichete. s eticheteaz˘ s cu (0. rezult˘ c˘ fluxul curent a a nu admite drumuri de cre¸tere. ∞) a } } 3: S ← {i|i ∈ V. a ¸terge toate etichetele. iar dac˘ S = multimea vˆ a a ¸ ırfurilor etichetate atunci (S. Se eticheteaz˘ s cu (0.

ˆ implement˘ri nu este ¸ s ın a cazul). V − a at ¸ {s})). Rezult˘ c˘ algorits a a mul are complexitatea O(mv). a Dac˘ toate capacit˘¸ile sˆ ˆ a at ınt ıntregi atunci vor fi necesare cel mult v (v = valoarea fluxului maxim) cre¸teri succesive. deci algoritmul are complexitatea O(nmU ). Dezavantajele algoritmului sˆ ¸ ınt legate de neconvergenta ˆ cazul capacit˘¸ilor ¸ ın at irationale (de¸i practic. 10.Complexitatea algoritmului: Pentru fiecare cre¸tere a fluxului. sˆ necesare s ınt cel mult 2m(m = |E|) inspectii de arce ˆ ved¸ ın erea etichet˘rii. Dac˘ U este o margine superioar˘ a capacit˘¸ilor a a at arcelor atunci v ≤ (n − 1)U ((n − 1)U este o margine superioar˘ a capacit˘¸ii sectiunii ({s}. a a Exemplu: 232 . Observatii. acestea neconsti¸ a tuind o m˘sur˘ a volumului datelor de intrare. ¸i de faptul ca m˘rimile capacit˘¸ilor s a at influenteaz˘ comportarea sa.

a face ca drumurile de cre¸tere succesive (pornind s de la fluxul nul) s˘ fie P1. s s ceea ce este inadmisibil pentru M ∈ Z+ foarte mari. s Edmonds ¸i Karp (1972). din pasul 2 al algoritmului. .0 M. unde a P1 = 1. 20. fiecare cre¸tere a fluxului m˘re¸te cu 1 valoarea fluxus a s lui curent ¸i. Primii care au observat acest fenomen.0 s 1 M.0 P1 P 2 1 1 Dac˘ ”alegerea”. vor fi necesare 2M cre¸teri. 3. 3. 4 atunci.2 M. P2. deci. P1. . P2 = 1. 2. au fost Dinic(1970) ¸i independent. . P2. s 233 . Aceste dezavantaje pot fi evitate dac˘ a alegerile vˆ ırfurilor etichetate supuse cercet˘rii a se fac judicios.0 3 1.0 4 t M. 2. 4.

xk ← xk−1 s r(Pk−1). a s k σi = lungimea minim˘ a unui C-drum de la s la i ˆ R a ın relativ la fluxul xk . Definim ın ¸ ¸irul de fluxuri xk ˆ R astfel: s ın x0 ← x. 234 . a s Fie x un flux oarecare ˆ reteaua R. . k = 1. . 2. . un drum de cre¸tere de lungime ın ¸ s minim˘ printre toate drumurile de cre¸tere. 2. Vom dovedi c˘ ¸irul de fluxuri astfel construit a s este finit. Pk este drum minim de cre¸tere relativ la xk−1.Modificarea lui Edmonds ¸i Karp a algorits mului lui Ford & Fulkerson Numim drum minim de cre¸tere a fluxului x s ˆ reteaua R. τik = lungimea minim˘ a unui C-drum de la i la t ˆ R a ın relativ la fluxul xk . 1. Not˘m. . . . pentru ∀i ∈ V ¸i ∀k = 0.

Lem˘. obtinut din s ¸ x0 prin cre¸teri succesive pe drumuri minime s de cre¸tere. se obtine un flux s ¸ 2 care nu admite drumuri de cre¸tere). . fluxul pe arcele critice devine sau In egal cu capacitatea (pentru arcele directe) sau egal cu 0 (pentru arcele inverse). . a s avem k+1 k σi ≥ σi ¸i τik+1 ≥ τik . x2. s Teorem˘. . atunci ¸irul de fluxuri x1. 1. (Edmonds. 235 . 2. Pentru ∀i ∈ V ¸i ∀k = 0. s Demonstratie: Dac˘ P este un drum de cre¸tere ¸ a s relativ la un flux ˆ reteaua R. are cel mult mn elemente (ˆ cel s ın 2 mult mn cre¸teri succesive. vom numi arc critic ˆ P orice a ın arc e ∈ P cu r(e) = r(P ). Karp) a Dac˘ x = x0 este un flux oarecare ˆ reteaua a ın ¸ R. 4. . . cu capacitatea ın ¸ rezidual˘ r(P ). ˆ x r(P ). 4. .

σi + τil = σj + 1 + τil ≥ σj + 1 + τik = a l k σi + τik + 2 (s-a folosit lema 1 ). Lungimea lui Pk este: k k k σi + τik = σj + τj .Fie ij un arc critic pe drumul minim de cre¸tere s Pk relativ la xk . Prima ın s ¸ ın oar˘ cˆ a ınd fluxul pe arcul ij se va modifica. el va apare ˆ ıntr-un drum de cre¸tere Pl cu l > k s relativ la xl ¸i va fi folosit ˆ directie opus˘. Atunci σj = σi + 1. a 236 . ˆ Pl ij ın In l l va fi arc invers. dou˘ cazuri: a k k i) ij direct ˆ Pk. Cum ij este critic ˆ Pk . deci. P k s i j t P l s i j t l k Rezult˘. ˆ xk+1 nu va putea ın ın fi folosit ˆ aceea¸i directie ca ˆ Pk . deci σi = σj + 1. Am obtinut ¸ c˘ lg(Pl ) ≥ lg(Pk ) + 2. s ın ¸ a Avem.

a s se obtine un flux care nu admite drumuri de ¸ cre¸tere. s 2 Cum orice drum de cre¸tere are cel putin un s ¸ arc critic. un drum ˆ G are cel mult n − 1 arce. dup˘ cel mult mn/2 cre¸teri. Cum. deci σj = σi + 1. ˆ ın In l l Pl ij va fi arc direct. Deci.k k ii) ij arc invers ˆ Pk. rezult˘ c˘ nu putem avea mai mult a a s ın s de mn drumuri minime de cre¸tere. Deci orice drum minim de cre¸tere ˆ care s ın a a arcul ij este critic este cu m˘car dou˘ arce ıt ın mai lung decˆ precedentul ˆ care ij a fost critic. ˆ ¸irul 2 construit. P k s j i t P l s j i t l l l k k Rezult˘ σj + τj = σi + 1 + τj ≥ σi + 1 + τj = a l k k σj + τj + 2 Deci. ın a a ın rezult˘ c˘ un arc fixat nu poate fi critic ˆ procesul de cre¸tere mai mult de n ori. s 237 . lg(Pl ) ≥ lg(Pk ) + 2. Atunci σi = σj + 1.

s.Corolar. a 238 .primul cercetat”. c) este o retea. a ¸ atunci exist˘ un flux care nu admite drumuri a de cre¸tere. alegerea vˆ s ırfurilor etichetate ˆ vederea cercet˘rii se face dup˘ regula ”primul ın a a etichetat . a 20 S-ar putea pune ˆ ıntrebarea dac˘ nu cumva. ˆ pasul 2 al algoritmului lui a a ın Ford ¸i Fulkerson. Demonstratie: Fie P un drum de cre¸tere depi¸ s stat ¸i fie P un drum minim de cre¸tere. atunci drumurile de cre¸tere care se depisteaz˘ sˆ cu num˘r s a ınt a minim de arce. s Observatii: 10 Rezult˘ de aici. t. 5. a alegerea drumurilor minime de cre¸tere. m˘re¸te s a s complexitatea algoritmului de flux maxim ? R˘spunsul este ˆ a banal: a ıns˘ Lem˘. Dac˘ R = (G. c˘ demonstratia ¸ a a ¸ teoremei 3 este complet˘. Dac˘. Pres s supunem c˘ lg(P ) > lg(P ).

ik+1 va primi etichet˘ ˆ a ınaintea lui jk+1. ik+1ik+2. . deci t prime¸te etichet˘ pe drumul P . obtinem ins s ¸ ductiv c˘ t prime¸te etichet˘ ˆ a s a ınaintea lui ik+l +1. lg(P ) = k + l . . au primele k arce comune ¸i l < l. .Fie P : si1. . jk+l −1 t. ˆ s a ınainte de a primi etichet˘ pe drumul P . . ik ik+1. . . . utilizˆ ınd o coad˘ pentru memorarea lor. . .primul ¸ cercetat” corespunde unei explor˘ri bf s a vˆ a ır furilor etichetate. Deci. absurd. ik+l−1t ¸i s P : si1. . i1 i2. ¸ 239 . . . jk+1jk+2. ik−1ik . Aceasta a nu afecteaz˘ complexitatea algoritmului. care a va necesita tot O(m) operatii pentru fiecare ¸ cre¸tere a fluxului ¸ si din teorema 4 obtinem s . dar jk+1 va primi etichet˘ ˆ a ınaintea lui ik+2. lg(P ) = k + l. . i1i2 . ceea ce se poate realiza. ik jk+1. ik−1ik . a Observatie: Regula ”primul etichetat . s Conform regulii de etichetare. . . jk+2 va primi etichet˘ a ˆ ınaintea lui ik+3 ¸i a¸a mai departe.

Karp 1972) a Dac˘ se modific˘ algoritmul lui Ford ¸i Fulkera a s son cu precizarea alegerii bf s a vˆ ırfurilor etichetate ˆ vederea cercet˘rii. ¸ 240 .Teorem˘. (Edmonds. ¸ ın Exercitiu. atunci. fluxul maxim se ın a obtine ˆ timpul O(m2n) . 5. Aplicati algoritmul lui Ford & Fulk¸ ¸ erson modificat pentru obtinerea unui flux de ¸ valoare maxim˘ ˆ reteaua de mai jos (ˆ care a ın ¸ ın este precizat un flux initial de valoare 55 ).

i ∈ V − {s.Algoritmi de tip preflux. ¸ Definitie. Se nume¸te preflux ˆ reteaua R. Fie R = (G. c) o retea. s. t. o ¸ s ın ¸ ıncˆ functie x : E → R astfel ˆ ıt ¸ (i) (ii) 0 ≤ xij ≤ cij ∀i = s ei = j:ji∈E ∀ij ∈ E xji − j:ij∈E xij ≥ 0. Num˘rul ei a din vˆ ırful i. t} se nume¸te excesul s Dac˘ i ∈ V − {s. Dac˘ ij ∈ E xij va fi numit fluxul pe arcul ij. t} ¸i ei > 0 atunci i se nume¸te a s s nod activ. a 241 .

s 30. ˆ ıntrucˆ ˆ analiza algoritmilor pe care ˆ vom ıt ın ıi prezenta va fi esential˘ reprezentarea digrafu¸ a lui G cu ajutorul listelor de adiacent˘. 242 . nu am mai utilizat In ¸ conventia c˘ vom introduce toate perechile de ¸ a arce din digraful complet simetric de ordin n. ¸a s vom considera c˘ dac˘ ij ∈ E atunci ¸i a a s ji ∈ E (altminteri. Ideea algoritmulor de tip preflux este: se porne¸te cu un preflux ˆ R ¸i se transform˘ s ın s a prin modific˘ri ale fluxului pe arce ˆ a ıntr-un flux care nu admite drumuri de cre¸tere. Dac˘ ˆ reteaua R nu exist˘ ¸ a ın ¸ a noduri active. Totu¸i.Observatii: 10. atunci prefluxul x este flux de la s la t ˆ R de valoare et . ad˘ug˘m arcul ji cu caa a pacitate 0). ın 20. ˆ definitia unui preflux.

¸ a ın s atunci capacitatea rezidual˘ a arcului ij este a rij = cij − xij + xji (reprezentˆ fluxul aditional ce poate fi ”trimis” ınd ¸ de la nodul i la nodul j utilizˆ arcele ij ¸i ji).inv i j cij. a ¸ ın a ”trimite” flux de la i la j ˆ ınseamn˘ s˘ cre¸tem a a s fluxul pe arcul ij sau s˘ mic¸or˘m fluxul pe a s a arcul ji. a a 243 . xji . ınd s cij .Definitie: Dac˘ x este un preflux ˆ R ¸i ij ∈ E. xij e i ej e -a i e +a j Observatie. un drum al lui G ale c˘rui arce au a capacitatea rezidual˘ pozitiv˘. xji cji. Definitie: Se nume¸te C-drum ˆ R relativ la ¸ s ın prefluxul x. Peste tot. xij+dir trimite i j a=dir+inv pe arcul ij cji . ˆ cele ce urmeaz˘.

1 0 s i t i j i i Observatii: 10. 244 .Definitie: Se nume¸te functie de distant˘ ˆ R ¸ s ¸ ¸a ın relativ la prefluxul x. o functie d : V → Z+ care ¸ satisface (D1) (D2) d(t) = 0 ∀ij ∈ E. rij > 0 ⇒ d(i) ≤ d(j) + 1 d( j ) d(s) d( j ) + 1 d( j ) . a s a Rezult˘ c˘ d(i) ≤ τi (lungimea minim˘ a unui a a a C-drum de la i la t). Dac˘ P este un C-drum relativ ¸ a la prefluxul x ˆ R de la i la t atunci d(i) ≤ lg(P ) ın (arcele unui C-drum au capacitate rezidual˘ a pozitiv˘ ¸i se aplic˘ (D2)).

d[t] ← 0. care contine arcele ij ∈ E. lista ırf sa de adiacent˘. for ∀i ∈ V − {s. t} do d[i] ← 1 } 245 . Vom nota cu A(i). d[s] ← n. consider˘m initializare a ¸ a ¸ urm˘toarea procedur˘ care construie¸te ˆ O(m) a a s ın un preflux x ¸i o functie de distant˘ d cores ¸ ¸a spunz˘toare acestuia. Dac˘ R este o retea. Un arc ij ∈ E se nume¸te ¸a s admisibil dac˘ a rij > 0 ∧ d(i) = d(j) + 1. ¸a ¸ Definitie. pentru orice vˆ i.20. astfel: a procedure initializare. Fie x un preflux ˆ R ¸i d o functie de ¸ ın s ¸ distant˘ relativ la x. ¸ { for ∀ij ∈ E do if i = s then xsj ← csj else xij ← 0.

a ¸ ∀sj ∈ A(s) avem rsj = 0. ˆ algoritmii de tip preflux vom p˘stra a ın a acest invariant. Alegerea lui d(s) = n are urm˘toarea ina terpretare:” nu exist˘ C-drum de la s la t ˆ a ın R relativ la x” (ˆ ıntrucˆ altminteri. atunci cˆ ınd x va deveni flux.Dup˘ executia acestei proceduri. a a a Observatii: 10. ¸ rsj =0 d(s) = n d( j )=1 j d( t )=0 s j r js >0 1=d(j)<n+1=d(s)+1 rjt >0 1=d(j)=0+1=d(t)+1 t 20. a Dac˘. va rezulta c˘ nu admite drumuri de cre¸tere ¸i a s s deci x va fi de valoare maxim˘. ar trebui ıt. Pentru arcele cu capacitate a ¸ rezidual˘ pozitiv˘ de forma js D2 este evident verificat˘. ca lungimea acestuia s˘ fie ≥ n). a 246 . deci alegerea lui d(s) = n nu afecteaz˘ conditia D2.

a // i este un vˆrf diferit de s. a procedure reetichetare (i). rij ) unit˘¸i de flux de la i la j at } a Dac˘ δ = rij avem o pompare saturat˘. // i este un vˆrf diferit de s. t a { d(i) ← min{d(j) + 1 | ij ∈ A(i) ∧ rij > 0} } 247 . t a { alege ij ∈ A(i) ij admisibil. alta minteri pomparea este nesaturat˘.Consider˘m urm˘toarele proceduri a a procedure pompeaz˘ (i). ”trimite” δ = min(ei.

de mai sus. are ca invariant ”d este functie de ¸ distant˘ relativ la prefluxul x”. o functie de distant˘ relativ la prefluxul initial. 6. d(i) cre¸te strict. s Demonstratie: Procedura initializare construie¸te. ¸ 248 . ¸ ¸ s ¸ ¸a evident. La fiecare ¸a apel al lui reetichetare(i). ¸ while ∃ noduri active ˆ R do ın { selecteaz˘ un nod activ i. a if ∃ arce admisibile ˆ A(i) ın then pompeaz˘(i) a else reetichetare(i) } } Lem˘.Schema general˘ a unui algoritm de tip preflux a este: { initializare. a Algoritmul de tip preflux.

a a b) dac˘ se execut˘ reetichetare(i). Dac˘ pe parcursul algoritmului. atunci exist˘ un C-drum de a la i0 la s. singura pereche a a ce poate viola D2 este d(i) ¸i d(j). ˆ R. satisf˘cut˘. avem d(i) = d(j) + 1. Pentru finitudinea algoritmului va trebui s˘ ne a asigur˘m c˘ . atunci ˆ A(i) exist˘ m˘car un ın a a arc ij cu rij > 0. i0 a a este un nod activ. atunci: a) dac˘ se execut˘ pompare(i). 7.Dac˘ ˆ a ınaintea executiei unei iteratii a lui while. Aceasta rezult˘ din a Lem˘. rezult˘ c˘ dup˘ apel d(i) cre¸te m˘car a a a s a cu o unitate. ¸ ¸ d e functie de distant˘ relativ la prefluxul curent ¸ ¸a x. modificarea a a lui d(i) se face astfel ˆ ıt D2 s˘ r˘mˆ a valaıncˆ a a ın˘ bil˘ pentru orice arc ij cu rij > 0. dar conditia d(j) ≤ a ¸ d(i) + 1 este. Cum apelul a lui reetichetare implic˘ d(i) < d(j) + 1 ∀ij cu a rij > 0. Dup˘ pompare. avem a a a ın ¸ un nod i activ. dac˘. Cum arcul s ij a fost ales admisibil. evident. ın 249 . ˆ timpul executiei. arcul ji poate avea rji > 0 a (f˘r˘ ca ˆ a a ınainte s˘ fi fost). relativ la prefluxul curent x.

ea este finit˘. xk este flux. In ın ¸ s (demonstratia rezult˘ algoritmic. Arcele inverse ale acestui drum au capac- itatea rezidual˘ strict pozitiv˘ ¸i ele formeaz˘ a a s a C-drumul din enuntul lemei.b). la fiecare etap˘ ¸ s a se caut˘ inversul unui drum de tipul a). ¸ a ın atunci x se poate scrie ca o sum˘ finit˘ x = a a x1 + x2 + . prea fluxul costruit se scade din cel curent.) a a s Cum i0 este un nod activ ˆ R relativ la x. de la s la un nod activ. ın rezult˘ c˘ situatia b) va apare pentru nodul i0 a a ¸ (ˆ ıntrucˆ situatiile b) ¸i c) nu afecteaz˘ excesul din nodul ıt ¸ s a i0). arcelor unui dr. permit efectuarea constructiei. c) multimea arcelor unui circuit. construind mai ˆ ıi ¸ a ıntˆ multimile a). apoi a celor de tip c) ¸i b). ¸ ˆ plus. sau c). excesele nenegative. ˆ situatiile a) ¸i c). . xk = 0} este ¸ ij a) multimea arcelor unui drum de la s la t. unde fiecare xk satisface: multimea Ak = {ij | ij ∈ E. c˘ci ¸ a a dup˘ fiecare etap˘ nr. + xp. .Demonstratie: Dac˘ x este un preflux ˆ R. ¸ b) m. arcelor cu flux curent nul cre¸te. ¸ x>0 x>0 x>0 r>0 s r>0 r>0 r>0 x>0 i0 e >0 i0 250 .

ˆ ıntrucˆ d(s) = n nu se schimb˘ pe ıt a parcursul algoritmului. s ¸ a 251 . 1. Din modul de modificare a lui d(i) ¸i din D2 s rezult˘ c˘ dup˘ reetichetare d(i) ≤ d(s) + n − a a a 1 = 2n − 1. 2. Demonstratie: Dac˘ i nu a fost reetichetat. Dac˘ i a fost reetichetat. ınd ın lema 6 ¸i etichetarea initial˘. Num˘rul total de apeluri ale proa cedurii reetichetare este mai mic decˆ 2n2. Corolar. atunci ˆ a ınainte de reetichetare i este nod activ. ∀i ∈ V d(i) < 2n.Corolar. avˆ ˆ vedere corolarul 1. deci exist˘ Ca drum de la i la s de lungime cel mult n − 1. ¸ a atunci d(i) = 1 < 2n. ıt Demonstratie: Fiecare din cele n − 2 vˆ ¸ ırfuri ce pot fi supuse etichet˘rii poate fi etichetat de a cel mult 2n − 1 ori.

Corolar. un arc s a at nu poate deveni saturat mai mult de n ori ¸i ˆ s ın total vom avea cel mult mn pomp˘ri saturate. a Lem˘. rezult˘ c˘ fluxul obtinut este f˘r˘ a a ¸ a a drumuri de cre¸tere. Demonstratie: Dup˘ ce un arc ij devine satu¸ a rat (situatie ˆ care d(i) = d(j) + 1). s 252 . (Goldberg ¸i Tarjan 1986) Num˘rul a s a pomp˘rilor nesaturate este cel mult 2n2m. a Lem˘. 9. a Demonstratie: Din lemele 6 ¸i 8 ¸i corolarul 3 ¸ s s rezult˘ c˘ algoritmul se termin˘ dup˘ cel mult a a a a 2n2m iteratii ¸i cum d(s) = n nu se modific˘ ¸ s a pe parcurs. Num˘rul total de pomp˘ri sata a urate este ≤ nm. aceast˘ schimbare de flux nu va avea loc pˆ a a ın˘ ce d(j) nu cre¸te cu dou˘ unit˘¸i. Deci. 8. 3. pe acest ¸ ın arc nu se va mai putea trimite flux pˆ a cˆ ın˘ ınd nu se va trimite flux pe arcul ji situatie ˆ care ¸ ın vom avea d (j) = d (i)+1 ≥ d(i)+1 = d(j)+2. La terminarea algoritmului x este a flux de valoare maxim˘.

dac˘ (b) ¸ a a s a va fi invariant al algoritmului. 1. .la ˆ ınceputul etapei p. dup˘ K+1 etape. . cu p luˆ a ınd succesiv valorile K. 0 vor fi ˆ ındeplinite urm˘toarele conditii: a ¸ (a) . ∀ i satisface ei ≤ 2p (b) . Vom presupune c˘ toate capacit˘¸ile sˆ ˆ a at ınt ıntregi a ¸i c˘ maxij∈E (1 + cij ) = U . algoritmul lui Ahuja ın ¸i Orlin (1988) care.ˆ timpul etapei p se utilizeaz˘ proceın a durile pompare-etichetare ˆ vederea elimin˘rii ın a nodurilor active cu ei ∈ (2p−1. utilizˆ s ınd o metod˘ de a scalare. . va m˘rgini num˘rul pomp˘rilor nesata a a urate de la O(n2m) la O(n2 log U ). ˆ etapa initial˘ (p = K) ın ¸ a conditia (a) este satisf˘cut˘ ¸i deci. Din alegerea lui K.Vom prezenta ˆ continuare. Ideia algoritmului: Se vor executa K + 1 etape. 2p]. 2 253 . K − 1. a excesele nodurilor vor fi ≤ 1 . Not˘m log2U = s a K. Pentru fiecare etap˘ p. .

2p − ej ). . dac˘ se face o pompare a a pe arcul ij admisibil. a ın . ¸i. Dac˘. deci. construind lista L(p) a .nodul activ selectat pentru pompare-reetichetare va fi pe tot parcursul etapei. i2. . cum d(j) = d(i) − 1 ¸i s i este primul din L(p).Dac˘. il(p) cu excesele eij > 2p−1. Va rezulta c˘. . ¸ ¸a Realizarea lui (b) se poate face astfel: ıncepe etapa p. vom avea ei > 2p−1 ¸i s a ın ej ≤ 2p−1. ordonate cresc˘tor dup˘ d (avˆ ˆ a a ınd ın vedere c˘ d poate lua valori ˆ a ıntre 1 ¸i 2n − 1. 254 . primul nod din L(p). . dispunem de un a s flux de valoare maxim˘ (datorit˘ propriet˘¸ilor a a at functiei distant˘ d(i)). fluxul ”trimis” de la i la j. ˆ plus. toate transform˘rile datelor vor p˘stra a a a integritatea exceselor. o s sortare de tip hash rezolv˘ problema ˆ O(n)). rij . ˆ procedura de pompare ın la δ = min(ei .se ˆ tuturor nodurilor i1. se va limita δ. va rezulta c˘ excesul a oric˘rui nod este 0.

pointer c˘tre urm˘torul element din a a lista A(i) . ¸ s a ¸ 255 . pointer c˘tre arcul ji (din lista de adiacent˘ a a ¸a vˆ ırfului j). a a Evident. a . cum 2p − ej ≥ 2p−1 va rezulta c˘ orice a pompare nesaturat˘ trimite cel putin 2p−1 a ¸ unit˘¸i de flux.atunci.etapa (p) se termin˘ atunci cˆ L(p) devine a ınd vid˘.parcurgerea listei se face cu ajutorul unui pointer p(i) c˘tre elementul curent din list˘. rij .fiecare nod al listei contine: vˆ ¸ ırful j. organizarea acestor liste se face ˆ ınaintea apelului lui initializare ¸i necesit˘ O(m) operatii. vom considera listele A(i) organizate astfel: . xij . excesul din at a nodul j (singurul nod al c˘rui exces poate cre¸te) a s va fi ej + min(ei . Dup˘ pompare. 2p − ej ) ≤ ej + 2p − ej ≤ 2p (deci b) r˘mˆ ˆ a ıne ındeplinit˘). sau a examin˘rii arcelor care ies dintr-un vˆ i a ırf pentru reetichetare. a Pentru realizarea eficient˘ a operatiilor de dea ¸ pistare a unui arc pe care se face pomparea. . rij .

s parcurge toat˘ lista A(i) pentru calculul lui a d(i) = min{d(j) + 1. ın a pune pointerul curent al listei A(i) la ˆ ınceput } } } 256 . . a ır¸ if ij este arcul admisibil g˘sit then a { δ ← min(ei. . rij . ij ∈ A(i) ∧ rij > 0}. s 2 a ın if ej > ∆ then adaug˘ j ca prim nod ˆ L(p) 2 } else // s-a depistat sfˆ situl listei ır¸ { ¸terge i din L(p).Algoritmul Ahuja-Orlin initializare. at if ei ≤ ∆ then ¸terge i din L(p). for p = K. introdu i ˆ L(p) la locul s˘u (hash). . parcurge lista A(i) din locul curent pˆ a ın˘ se determin˘ un arc admisibil sau se a depisteaz˘ sfˆ situl ei. ¸ K ← log2 (U ) . 0 do { construie¸te L(p). ∆ − ej ). ∆ ← 2K+1 . K − 1. ”trimite” δ unit˘¸i de flux de la i la j. ei ← ei − δ. . ∆ ← ∆ s 2 while L(p) = ∅ do { fie i primul element din L(p). ej ← ej + δ.

ın Demonstratie: Fie ¸ ei· d(i) F (p) = . se apeleaz˘ reetichetare. atunci cˆ a ın ınd se analizeaz˘ nodul activ a i. 8’. ˆ a ınseamn˘ c˘ nu exist˘ arce a a a ij admisibile. p i∈V 2 Dac˘ ˆ etapa p. Toate celelalte operatii sˆ dominate ¸ ınt de O(nm). s at Cum pentru fiecare i. at ceea ce conduce la o cre¸tere a lui F cu cel mult unit˘¸i. 257 . cre¸terea lui d(i) pe parcursul s ˆ ıntregului algoritm este < 2n rezult˘ c˘ F va cre¸te pˆ a a a s ın˘ ır¸ la cel mult valoarea 4n2.t La ˆ ınceputul etapei p. la sfˆ situl etapei p. p 2 i∈V i=s. Num˘rul pomp˘rilor nesaturate a a a este cel mult 8n2 ˆ fiecare etap˘ a scal˘rii. sˆ pomp˘rile nesatınt a urate.Operatiile care domin˘ complexitatea timp. F (p) < 2p·(2n) = 2n2. ˆ ¸ a ın cazul cel mai nefavorabil. Lem˘. Operatia de reetichetare m˘re¸te d(i) cu ¸ a s ≥ 1 unit˘¸i. ın a a deci O(n2 log U ) ˆ total.

Cu atˆ mai mult. unde δ F (p) = F (p) − δ·d(i) + δ·d(j) = F (p) − 2p ≤ p p 2 2 p−1 F (p) − 22p = F (p) − 1 . pentru un nod i se execut˘ pompare. 258 . 2 Rezult˘ c˘ aceast˘ situatie nu poate ap˘rea a a a ¸ a mai mult de 8n2 (ˆ ıntrucˆ F (p) poate cre¸te ıt s cel mult la 4n2). 6. as Sumarizˆ toate rezultatele anterioare obtinem ınd ¸ Teorem˘. a a atunci aceasta se execut˘ pe arcul ij cu rij > 0 a ¸i d(i) = d(j) + 1. (Ahuja-Orlin 1988) Algoritmul a de tip preflux cu scalarea exceselor are complexitatea O(nm + n2 log U ). pomp˘rile nesaturate nu vor ıt a dep˘¸i 8n2.Dac˘. dup˘ pompare F (p) va avea valoarea a F (p). s Cum num˘rul unit˘¸ilor de flux pompat este a at δ ≥ 2p−1.

V2. s. v2 ∈ V2. Determinarea cuplajului maxim ¸i a stas bilei maxime ˆ ıntr-un graf bipartit. t. .c : E(G1) → Z+ definit˘ prin a c(e) = ⎧ ⎨1 ⎩∞ dac˘ e ∈ E1 ∪ E2 a dac˘ e ∈ E3 a (vezi figura urm˘toare). c). . E1 = {sv1 | v1 ∈ V1}. Fie G = (V1.E(G1) = E1 ∪ E2 ∪ E3 . . E) un graf bipartit cu n vˆ ırfuri ¸i m muchii. v1v2 ∈ E}.V (G1) = {s. A. . Aplicatii (combinatorii) ale problemei ¸ fluxului maxim. a 259 . unde a ¸ . s Consider˘m reteaua R = (G1.2. E3 = {v1v2 | v1 ∈ V1. E2 = {v2t | v2 ∈ V2}. t} ∪ V1 ∪ V2 .

¸i s s luˆ fluxul x = 0 pe orice alt arc.V 1 ++ V 2 1 1 1 s 1 1 1 ++ ++ ++ ++ 1 1 1 1 t Dac˘ x = (xij ) este un flux cu componente a ˆ ıntregi ˆ R atunci se observ˘ c˘ multimea de ın a a ¸ arce {ij | i ∈ V1. ˆ plus. v(x) In este cardinalul cuplajului M (x). dac˘ pe fiecare astın a a fel de arc ij (i ∈ V1. j ∈ V2 ∧ xij = 1} induce ˆ ın graful G bipartit un cuplaj M (x). j ∈ V2) se consider˘ fluxul xij egal cu 1 ¸i de asemenea xsi = xjt = 1. orice cuplaj din G induce o multime ¸ de arce neadiacente ˆ G1. ın 260 . Reciproc. Rezult˘ c˘ rezolvˆ a a ınd problema fluxului maxim ¸ a pe reteaua R se determin˘ (pornind de la fluxul nul) ˆ O(nm + n2 log n) un cuplaj de cardinal ın maxim ˆ graful bipartit G. atunci fluxul ınd construit are valoarea |M |.

¸ a ın iar X = S1 ∪ T2 este multime stabil˘ ˆ graful G (pentru a avea c(S. avem: |T1| + |S2| = ν(G). ˆ plus. T ) < ∞). 2). c(S. din teorema fluxului maxim-sectiunii minime. ¸ Vom avea. din fluxul maxim obtinut. ıt o 261 . T ) sectiunea de capacitate minim˘ ce ¸ a se poate construi. rezult˘ c˘ punˆ Si = S ∩ Vi ¸i a a ınd s Ti = T ∩ Vi (i = 1. T ) = ν(G). ˆ ¸ ın O(m) operatii. ¸ V 1 ++ 1 1 1 s 1 1 1 ++ S ++ ++ ++ 1 1 1 1 t V 2 T Cum ν(G) < ∞.Fie (S. |X| = |V1 − T1| + |V2 − S2| = n − ν(G). a a a ˆ ıntrucˆ n − ν(G) = α(G) (teorema lui K¨nig). In Rezult˘ c˘ X este stabil˘ de cardinal maxim.

. s 262 . n}. c(j t) = dj ∀j = 1. E) unde G1 se obtine din Kn. va trebui ca 0 ≤ d+ ≤ n−1 ¸i 0 ≤ d− ≤ s i i + − n − 1 ∀i = 1. s Functia de capacitate va fi c(si) = d+ ∀i = ¸ i − 1.n. . . ¸i introducerea arcelor si. . construim reteaua bipartit˘ In ¸ a R = (G1. n. iar d+ .n − ¸ {11 . .n ¸i (d− )i=1.B. . 22 . s ¸ Date (d+ )i=1. . n}. . E) ıncˆ ¸i d+(i) = d+ ¸i d−(i) = d− ∀i = 1. .n di = i=1. exist˘ un digraf s a i i G cu n vˆ ırfuri astfel ˆ ıt G = ({1.n di = m s (unde. j ∈ {1. . . . m = |E|. i i ˆ aceste ipoteze. s i ∈ {1. . . s. . n} ¸i j t. n ¸i c(ij ) = 1. Evident. . . n ? s s i i G G (Problema poate apare ˆ proiectarea circuitelor ın integrate). nn } prin orientarea muchiilor ij ∀i = j ∈ {1. d− ∈ Z). n ¸i i=1. . . n}. t. . Recunoa¸terea secventelor digrafice.

exist˘ un flux ˆ a ın a ¸ a ıntreg de valoare maxim˘ m. n} vor pleca a ırf exact d+ arce pe care fluxul este 1. dac˘ acest digraf exist˘. 1 + d1 + d2 s + dn n 1 1 dn n’ 2 1 1’ 2’ d2 t d1 1 Considerˆ multimea de vˆ ınd ¸ ırfuri {1. . . se ın ¸ a obtine un flux ˆ ¸ ıntreg ˆ reteaua R de valoare m (deci ın ¸ maxim). i i atunci procedˆ ınd invers ca ˆ constructia anterioar˘. n} ¸i introducˆ s ınd toate arcele ij astfel ˆ ıt xij = 1. ın 263 . Reciproc. atunci din orice vˆ i ∈ {1. . de forma ij ¸i ˆ s ın i fiecare vˆ j vor intra exact d− arce pe care fluxul este ırf j 1.Dac˘ ˆ aceast˘ retea. . . . . . de forma ij . Rezult˘ c˘ recunoa¸terea secventelor digrafice a a s ¸ (¸i constructia digrafului ˆ cazul r˘spunsului afirmativ) s ¸ ın a se poate face ˆ O(nm + n2 log n) = O(n3).n . se obtine un diıncˆ ¸ graf G cu secventele gradelor interioare ¸i exterioare ¸ s s a a (d+ )i=1.n ¸i (d−)i=1.

s = t. Consider˘m a c : E(G1) → Z+ prin c(e) = 1. s ın -ce(s. 264 . c). ∀e ∈ E(G1). pe(s. a Demonstratie: Construim din G digraful G1. E) un graf. prin ˆ ındep˘rtarea c˘reia din graf. t. definim: -pe(s. ˆ ınlocuind.C. 7. de muchie-conexiune al unui graf Fie G = (V. ¸ ˆ ınlocuind fiecare muchie a lui G cu o pereche de arce simetrice. t) = cardinalul minim al unei multimi de ¸ muchii. ˆ a a ıntre s ¸i t nu mai exist˘ drumuri. t ∈ V. s a Teorem˘. Fluxul x0 se poate scrie ca o sum˘ de v(x0) fluxuri xk ˆ a ıntregi de valoare 1. fluxul pe unele circuite cu 0. t) = num˘rul maxim de drumuri cu muchii a disjuncte ce unesc s ¸i t ˆ G. Determinarea nr. t). t) = ce(s. Pentru s. s. Fie x0 un flux ˆ ıntreg de valoare maxim˘ ˆ a ın R = (G1. eventual.

T ) o sectiune de capacitate minim˘. s s ın Rezult˘ c˘ v(x0) = pe(s. ¸ 265 . din teorema fluxului maximsectiunii minime. ¸i deci. Fie (S. T ) = v(x0).t t s s Fluxul pe arcele groase este 1. pe cele subtiri 0. ¸ a avem c(S. ˆ a a ıntrucˆ orice multime ıt ¸ de drumuri disjuncte pe muchii. Fiecare astfel de flux xk induce un drum de la s la t ˆ G1 (considerˆ ın ınd arcele pe care fluxul este nenul). ¸i ˆ G. t). genereaz˘ un a flux de la s la t ˆ R de valoare egal˘ cu num˘rul ın a a acestor drumuri.

t∈V (G) s=t ce(s. deoarece ın s a ın c(e) = 1. t) a a muchii ˆ G care deconecteaz˘. t) ≤ pe(s. inegalitatea ce (s. T ) = v(x0) = pe (s. a s Rezult˘ c˘ avem c(S.Pe de alt˘ parte. Deci ce(s. a s ¸i t. (∗) 266 . prin ˆ ın a ındep˘rtare. c(S. t). ∀e ∈ E(G1). prin s a a ˆ ındep˘rtare. t) ≥ pe(s. T ) este num˘rul arcelor a a cu o extremitate ˆ S ¸i cealalt˘ ˆ T . rezult˘ c˘ teorema este demonstrat˘. t) este evident˘. s Cum. a a a a Corolar. t). Aceast˘ multime de arce a ¸ genereaz˘ ˆ G o multime de muchii de acela¸i a ın ¸ s cardinal ¸i cu proprietatea c˘ deconteaz˘. s ¸i t . Dac˘ G este un graf conex λ(G) (vala ıncˆ oarea maxim˘ a lui p ∈ Z+ astfel ˆ ıt G este a p−muchie-conex) este min s.

s ˆ particular. care s˘ nu fie ˆ aceea¸i ırf a ın s clas˘ cu s0 ˆ partitia (S. t0 pentru ¸ ın care c(s0. w) ≤ c(S. s˘ observ˘m c˘ pentru o pereche fixat˘ s a a a a s ¸i t avem: dac˘ (S. ın 267 . astfel.Rezult˘ c˘. t0) = λ(G) (ne asigur˘m. Totu¸i. dac˘ (s. t) este perechea pentru In a care se realizeaz˘ minimul ˆ (*) vom avea a ın egalitate ˆ (**). descrise ˆ demonstratia ın ¸ 2 teoremei. ın Rezult˘ c˘ dac˘ fix˘m un vˆ s0 ¸i rezolv˘m a a a a ırf s a n − 1 probleme de flux cu t ∈ V − s0 se va obtine ˆ mod necesar o pereche s0. dea pistarea unui vˆ t0. pentru a afla λ(G). T ) este sectiunea de cas a ¸ pacitate minim˘. atunci a ∀v ∈ S ¸i ∀w ∈ T ce(v. rezolv˘m cele a a a n(n−1) probleme de flux. a ın ¸ Rezult˘ c˘ ˆ O(n· (nm + n2c)) = O(n2m) se a a ın pot determina λ(G) ¸i o multime separas ¸ toare de muchii de cardinal minim ˆ G. T ) (∗∗). T )).

st ∈ E atunci. avem.t∈V c(s. p(s. t ∈ V. t) = num˘rul maxim de st−drumuri cu a multimile de vˆ ¸ ırfuri disjuncte (cu exceptia ex¸ tremit˘¸ilor). t) (∗) ˆ plus. t) = c(s. E) este un graf ¸i a s s. Determinarea num˘rului de conexiune a al unui graf. num˘rul de conexiune k(G) al grafului In a G (valoarea maxim˘ a lui p ∈ Z+ pentru care a G este p−conex) este ⎧ ⎪n − 1 ⎪ ⎨ k(G) = min ⎪ s. Dac˘ G = (V. t) = cardinalul minim al unei multimi de ¸ vˆ ırfuri st− separatoare. t) ⎪ ⎩ st∈E / dac˘ G = Kn a dac˘ G = Kn a (∗∗) 268 . s = t. notˆ / ınd -p(s.D. at -c(s. din teorema lui Menger.

Vom ar˘ta c˘ egalitatea (*) rezult˘ ¸i din teoa a as rema fluxului maxim-sectiunii minime pe o retea ¸ ¸ convenabil aleas˘. bw av ∈ E(G1). Definim c : E(G1) → Z+ prin c(e) = ⎧ ⎨1 ⎩∞ dac˘ e = av bv a altfel. bv ∈ V (G1) ¸i av bv ∈ E(G1). a Fie G1 = (V (G1). 269 .∀vw ∈ E consider˘m bv aw . cele subtiri 1. . E(G1)) digraful construit din G astfel: a s -∀v ∈ V consider˘m av . a Exemplu: b1 1 s t 2 S a s bs b2 a2 a1 at bt Arcele groase au capacitate infinit.

Rezult˘ c˘. 270 . a a a x0 ∈ {0. at . c).Consider˘m reteaua R = (G1. ¸i astfel ın ınt ˆ ıt arcele pe care xk sˆ nenule corespund la ıncˆ ın v(x0) drumuri disjuncte de la bs la at ˆ G1. pe de alt˘ parte. t). 1} ∀ij ∈ E(G1). rezult˘ c˘ avem a a : v(x0) = p(s. a ¸ ıntreg de la bs la at ˆ R de ın Fie x0 un flux ˆ valoare maxim˘. a ˆ vˆ a In ırfurile bv (v ∈ V ) intr˘ exact un arc de caa pacitate 1 ¸i din vˆ s ırfurile av (v ∈ V ) pleac˘ exact un arc de capacitate 1. ın Cum. care induc o multime de v(x0) drumuri intern ¸ disjuncte de la s la t ˆ G. se ın pot construi p drumuri intern disjuncte de la bs la at ˆ G1 pe care se poate transporta cˆ o ın ıte unitate de flux. fiecare de valoare 1. dintr-o multime de p a ¸ drumuri intern disjuncte de la s la t ˆ G. ij Aceasta ˆ ınseamn˘ c˘ x0 se poate descompune a a s ˆ v(x0) fluxuri xk . pentru ca a a s˘ fie satisf˘cut˘ legea de conservare a fluxului. bs.

∀j ∈ T a a cu ij ∈ E(G1). Deci algoritmul va avea complexitatea O ( n(n − 1) − m)(nm + n2 log n)) . t). unde G este graful complementar al lui G. t) = |A0| = c(S. arat˘ c˘ pentru a ¸ a a determina k(G) va fi suficient s˘ determin˘m a a minimul din (**) prin rezolvarea a |E(G)| probleme de flux. deci c(ij) = 1. T ) = |A0| ¸i ıncˆ s evident A0 este st− separatoare. T ) o sectiune ˆ R astfel ˆ ıt v(x0) = ¸ ın ıncˆ c(S. rezult˘ c˘ ∀i ∈ S. Demonstratia de mai sus. T ) = v(x0) = p(s. ∀A st−separatoare. Cum. Cum v(x0) este finit. c(S. T ). a ıncˆ Deci sectiunii (S. |A| ≥ a p(s. s adic˘ ∃u ∈ V astfel ˆ ıt i = au ¸i j = bu. t) = v(x0) rezult˘ c˘ a a c(s.avem c(ij) < ∞. pe de alt˘ parte.Fie (S. 2 271 . T ) ˆ corespunde o multime ¸ ıi ¸ de vˆ ırfuri A0 ⊆ V astfel ˆ ıt.

Deci complexitatea ˆ ıntregului algoritm va fi O(m(nm + n2 log n)). t0) = s a valoarea fluxului maxim = k(G). Vom fi siguri c˘ depist˘m o astfel de pereche. ∀v” ∈ V ” avem p(v . a / Se vor rezolva ˆ total O(nl) = O(n( 2m +1)) = ın n O(m) probleme. alegem l vˆ a ırfuri oaren care din G. Rezult˘ c˘. n ¸ ¸ ın Dac˘ A0 este o multime de articulatie ˆ G cu a |A0| = k(G) atunci G − A0 este neconex ¸i se s poate partitiona V − A0 = V ∪ V ” astfel ˆ ıt. a a dac˘ proced˘m astfel: a a consider˘m l = 2m +1 . Evident. v”) = k(G). 1 k(G) ≤ minv∈V dG(v) = n (n· minv∈V dG(v)) ≤ 1( 2m v∈V dG(v)) = n . rezolvˆ a a ınd o problema de flux cu s0 ∈ V ¸i t0 ∈ V ” va rezulta c˘ p(s0.O simpl˘ observatie ne conduce la un algoritm a ¸ mai eficient. ¸i pentru fiecare astfel de vˆ v s ırf rezolv˘m toate problemele p(v. 272 . w) cu vw ∈ E. ¸ ıncˆ ∀v ∈ V .

a(x) fiind liniar˘. v ∈ R+ ¸i a : E → R functie de a ¸ ın ıncˆ cost.3. dac˘ v nu dep˘¸e¸te valoarea a a a as s fluxului maxim ˆ reteaua R. iar ¸ a multimea fluxurilor de valoare dat˘ v fiind m˘rgi ¸ a a nit˘ ¸i ˆ a s ınchis˘ ˆ Rm. c) o retea ¸i x un flux de la s ¸ s la t ˆ R. s. ın ¸ Consider˘m a : E → R o functie de cost care a asociaz˘ fiec˘rui arc ij ∈ E a(ij) = aij costul a a (transportului unei unit˘¸i de flux) pe arcul ij. s˘ se determine x0 flux ˆ R astfel ˆ ıt a ın a(x0) = min{a(x) | x flux ˆ R. Observ˘m c˘. a ın 273 . at Costul fluxului x se define¸te ca fiind s a(x) = i. t. atunci problema ın ¸ are ˆ ıntotdeauna solutii. Fluxuri de cost minim Fie R = (G.j aij xij . Problema fluxului de cost minim s ¸ Dat˘ R o retea. v(x) = v}.

. un flux ˆ ıntreg de valoare n ¸i de cost s minim. Deci cij = 1. . .0 s 1. j ∈ {1. Costul atribuirii lucr˘torului i la lucrarea j este a a aij (i. . cjt = 1. 1. a astfel ˆ ıt costul total al atribuirii s˘ fie ıncˆ a minim. reprezint˘ solutia problemei.Exemple.0 1. . S˘ se atribuie fiecare dintre cele n lucr˘ri la cˆ a ıte un lucr˘tor. csi = 1.0 i 1. a ¸ 274 .a n1 Evident. a s a 10. ajt = 0 ∀i. n}). a Consider˘m reteaua descris˘ mai jos.a 11 1 1.0 1. .a ij j 1. . (Problema simpl˘ a atribuirii). unde pe a ¸ a fiecare arc este trecut˘ mai ˆ ıi capacitatea ¸i a ıntˆ s apoi costul.0 t 1 1. Se dispune de n lucr˘tori ¸i n lucr˘ri. . j ∈ {1.0 n n 1. n}.0 2 1. asi = 0.0 2 1.

. . 20. .n di ≥ j=1. problema are solutie numai dac˘ ¸ a i=1. . .m cj . . . Cm ˆ cantit˘¸ile ın at c1. c2. . 275 . . m}). . dn este solicitat˘ ˆ cenın at a ın trele de consum C1.O marf˘ disponibil˘ ˆ depozitele D1. . n} ∀j ∈ {1. . C2. . . . Dn a a ın ˆ cantit˘¸ile d1. . . . cm. . . Se cere s˘ se stabileasc˘ un plan de transa a port care s˘ satisfac˘ toate cererile ¸i s˘ a a s a aib˘ costul total minim (problema simpl˘ a a a transporturilor Hitchcock-Koopmans). Se cunoa¸te costul aij al transportului unei s unit˘¸i de marf˘ de la depozitul Di la centrul at a de consum Cj (∀i ∈ {1. . . . . Evident.Not˘m c˘ ˆ mod similar se poate rezolva orice a a ın problem˘ de cuplaj perfect de pondere minim˘ a a ˆ ıntr-un graf bipartit.

a n1 Cm c . 0 Di o o . reın ¸ a zolv˘ problema.0 m 276 . 0 t d n.a ij Cj C1 C2 c . 0 d 2 . 0 D2 s d i. a oo . un flux de cost minim ¸i de valIn s oare v = i=1.a 11 D1 d1.m ci ˆ reteaua urm˘toare. 0 Dn o o .0 2 c j.ˆ acest caz.0 1 c .

s 277 . t. Fie x un flux ˆ R = (G. dup˘ stabilirea a a s a a unui sens de parcurgere a lui C (este posibil ca ambele sensuri de parcurgere ale lui C s˘ a satisfac˘ definitia unui C-drum). atunci x1 = x r(P ) este un flux de valoare v(x1) = v(x)+r(P ) ¸i de cost a(x)+r(P )· a(P ). a ¸ Observatii: 10 Din definitia dat˘. Dac˘ a(C) < 0 atunci x1 este un flux de aceea¸i a s valoare ca ¸i x. rezult˘ c˘ ¸ ¸ a a a dac˘ P este drum de cre¸tere relativ la fluxul a s x. s. Dac˘ C este un C-drum ˆ a ınchis. dar de cost strict mai mic. ¸ Dac˘ P este un C-drum ˆ R relativ la fluxul a ın x. atunci costul drumului P se define¸te s a(P ) = ij∈P ij direct aij − ij∈P ij invers aji. c) ¸i ¸ ın s a : E → R o functie de cost.Definitie. atunci x1 = x r(C) este un flux de valoare v(x1) = v(x) ¸i de cost a(x1) = a(x) + s r(C)· a(C). a(C) se calculeaz˘ dup˘ aceea¸i formul˘. s a ınchis relativ la 20 Dac˘ C este un C-drum ˆ x.

x ) | x flux de val. Fie x un flux de valoare v. de cost minim Fie x (exist˘ !) astfel ˆ ıt a ıncˆ ∆(x. 8. fie ij astfel ˆ ıt xij = a ıncˆ x∗ . Dac˘ ∆(x. v ¸i cost minim} s unde ∆(x. x∗) = 0 rezult˘ x = x∗ ¸i deci x este a de cost minim. x∗) = min{∆(x. sau ıncˆ jk ∗ <x ≤c . Demonstratie: Necesitatea este evident˘ din ¸ a observatia anterioar˘. ¸ a Suficienta. Din legea de con¸ servare a fluxurilor rezult˘ c˘ a a ∃ jk ∈ E astfel ˆ ıt 0 ≤ xjk < x∗ ≤ cjk . Presupunem 0 ≤ xij < x∗ ≤ cij (altfel. ∗ un flux de valoare v. a s Dac˘ ∆(x. ∃ kj ∈ E astfel ˆ ıt 0 ≤ xkj ıncˆ kj jk 278 . x∗) > 0.drumuri ˆ ınchise de cost negativ. ij ij rationamentul este similar). Un flux de valoare v este de a cost minim dac˘ ¸i numai dac˘ nu admite Ca s a drumuri ˆ ınchise de cost negativ. x ) = |{ij | xij = xij }|. care nu ¸ admite C.Teorem˘.

i x ij < x * ij j * x vj < x vj x jk < x* jk v C k t x* < x tk tk Repetˆ acest rationament. se va obtine C. rezult˘. iar a(C ) = a −a(C). ¸ a(x ) = a(x∗) + δ(C )· a(C ) = a(x∗). unde ınd min x∗ −xjk jk kj C kj invers ˆ C ın se obtine un flux x cu v(x ) = v(x∗) = v. deci de δ(C ) = min min direct ˆ ın 279 xkj −x∗ . ˆ ¸ ınchis relativ la x∗. ın Considerˆ ınd sensul invers de parcurgere pe C se obtine un C-drum C . kj . din necesitatea teoremei (x∗ a este de cost minim). c˘ a(C) = 0. un C-drum ¸ ˆ ınchis relativ la x ˆ R. deoarece num˘rul ınd ¸ a vˆ ırfurilor este finit. a Modificˆ fluxul x∗ cu δ(C ) pe C . Deoarece a(C) ≥ 0 din ipotez˘.

¸ Deci ∆(x. 9. astfel ˆ ıt s ıncˆ a(P0) = min{a(P ) | P drum de cre¸tere relativ la x}. Cum x era flux de cost minim rezult˘ c˘ E(C) ∩ E(P0) = ∅. x∗) = 0.cost minim. contradictie. atunci va rezulta c˘ a a ¸ s P0 ∪ C − ij contine un drum de cre¸tere relativ la x de cost mai mic decˆ P0. ıt 280 . s Linia demonstratiei este urm˘toarea : ¸ a presupunˆ ınd prin reducere la absurd c˘ x1 nu a este de cost minim. x∗). a Teorem˘. s atunci x1 = x r(P0) este un flux de valoare v(x1) = v + r(P0) ¸i de cost minim. a a Dac˘ ij ∈ E(C) ∩ E(P0). dar. Dac˘ x este un flux de valoare a a v ¸i de cost minim iar P0 este un drum de s cre¸tere. cu ∆(x. x ) < ∆(x. ¸i demonstratia este ˆ s ¸ ıncheiat˘. atunci x1 admite un Cdrum ˆ ınchis C de cost negativ.

Un drum de cre¸tere de cost minim poate fi des pistat cu ajutorul algoritmilor de drum minim.Gowan. Rezult˘. obtinut prin ¸ combinarea mai multor algoritmi clasici (Klein. 281 . de cost negativ. s ¸i xji > 0. etc. −a } ij ji aij = ⎪−a ⎪ ji ⎪ ⎪ ⎪ ⎩+∞ dac˘ a dac˘ a dac˘ a dac˘ a xij xij xij xij < cij < cij = cij = cij ¸i xji = 0. s ın a ın Un circuit de pondere negativ˘ ˆ raport cu ponderile aij corespunde unui C-drum ˆ ınchis ˆ ın R relativ la x. Dac˘ x este un flux ˆ R ¸i a : E → R este a ın s functia de cost atunci considerˆ ¸ ınd aij = ∞ dac˘ ij ∈ E (caz ˆ care xij = 0).Busacker. s ¸i xji > 0.). urm˘torul algoritm pentru rezolvarea a a problemei fluxului de cost minim. s ¸i xji = 0. s Un drum de pondere minim˘ de la s la t ˆ a ın raport cu ponderile aij corespunde unui drum minim de cre¸tere ˆ R relativ la fluxul x. construim a / ın ⎧ ⎪aij ⎪ ⎪ ⎪ ⎪ ⎨min{a .

Complexitatea pentru pasul 2 este O(n3v). dac˘ se pleac˘ de la fluxul nul.Algoritm generic de rezolvare a problemei fluxului de cost minim { 0: Se consider˘ x = (xij ) un flux cu valoarea v ≤ v. x←x min(r(P ). v − v(x)) } } Complexitatea pasului 2 este O(n3v). dac˘ se pleac˘ de a a la fluxul nul. Se poate dovedi c˘ pasul a a a 1 se poate implementa astfel ca num˘rul iteratiilor s˘ a ¸ a fie O(nm2 logn). 282 . a {x poate fi fluxul nul sau un flux y determinat cu ajutorul algoritmului de flux maxim ¸i apoi s v considerˆ x = ( v(y) y)} ınd 1: while (∃ circuite de pondere < 0 relativ la aij ) do { determin˘ un astfel de circuit. a modific˘ fluxul pe acest circuit a } 2: while v(x) < v do { aplic˘ un algoritm de drum minim ˆ raport cu a ın ponderile aij pentru depistarea unui C-drum P de cost minim.

Spunem c˘ problema de decizie ¸ a P1 : I1 → {da. ¸ Din punct de vedere algoritmic. Reduceri polinomiale pentru probleme de decizie pe grafuri. a ıncˆ ∀i ∈ I1 P1(i) = P2(Φ(i)). constructia din spatele ¸ oric˘rei reduceri polinomiale este interesant˘ evidentiind a a ¸ modul ˆ care prima problem˘ poate fi rezolvat˘ eficient ın a a cu ajutorul unui oracol care rezolv˘ a doua problem˘. o instant˘ ın a a s i2 ∈ I2 cu proprietatea c˘ P1(i1) = da dac˘ ¸i numai dac˘ P2(i2) = da.VI. nu} se reduce polinomial la s a problema de decizie P2 : I2 → {da. ˆ s ¸a ın ¸a timp polinomial ˆ raport cu |i1|. Functia Φ se va da indicˆnd un algoritm care ¸ a construie¸te pentru orice instant˘ i1 ∈ I1. Definitie. dac˘ exist˘ o functie Φ : I1 → I2 polinomial calculabil˘. astfel ˆ ıt. nu} ¸i not˘m a a ¸ aceasta prin P1 ∝ P2. a Se observ˘ c˘ relatia de reducere polinomial˘ a a ¸ a ∝ este o relatie tranzitiv˘ pe multimea prob¸ a ¸ lemelor de decizie (datorit˘ ˆ a ınchiderii multimii ¸ functiilor polinomiale la compunere). a a 283 .

. o variabil˘ sau negatia ei. . F } a. . ˆ t(C) = A ? a ı. . . ∧ Cm o formul˘ ˆ form˘ a ın a conjunctiv˘ peste U : a Ci = vi1 ∨ vi2 ∨ . 3SAT este cazul particular al lui SAT ˆ care ın fiecare clauz˘ Ci are exact trei literali (ki = 3). ı. a un literal vij fiind. ¸a ¸ a C = C1 ∧ C2 ∧ . un} o multime finit˘ de var. a 284 . Intrebare: Exist˘ o atribuire t : U → {A. a¸a cum este descris mai s sus. . ∨ viki ∀ij ∀i = 1. . a ¸ Problema SAT este celebr˘ datorit˘ teoremei a a lui Cook (1971): SAT este N P −complet˘. . . . n} a. . unde ∃α ∈ {1. m. ˆ vij = uα sau vij = uα. booleene.Vom considera cunoscut faptul c˘ SAT ∝ 3SAT a unde SAT Instant˘: U = {u1 . .

ˆ |S| ≥ k ? a ¸ a ın ı. u2. Vom construi ˆ timp polinomial ˆ raport cu ın ın m + n. . . . ∧ Cm (m ∈ N∗) cu Ci = vi1 ∨ vi2 ∨ vi3 ∀i = 1. ¸ (n ∈ N∗). C = C1 ∧ . a (Karp 1972) 3SAT ∝ SM . . Demonstratie: Fie U = {u1. un}. . dac˘ ¸i numai dac˘ exist˘ a a as a a o stabil˘ S ˆ graful G astfel ˆ ıt |S| ≥ k. . (unde ∀vij ∃α ∈ {1. E) graf ¸i k ∈ N. . n} astfel ˆ ıt vij = uα sau vij = uα). 1. . un graf G ¸i k ∈ N astfel ˆ ıt exs ıncˆ ist˘ o atribuire t a valorilor de adev˘r sau fals a a pentru variabilele booleene din U care s˘ fac˘ a a adev˘rat˘ formula C. m. a ın ıncˆ 285 . Multimi stabile ¸ SM Instant˘: G = (V. Teorem˘. .1. ¸a s Intrebare: Exist˘ S multime stabil˘ ˆ G a. . ıncˆ reprezentˆ ınd datele unei instante oarecare a ¸ problemei 3SAT.

aj2. {aj1aj2. (2) Pentru orice j = 1. . aj3aj1}) . . aj2aj3. aj2vj2. Consider˘m k = n + m.Graful G va fi construit astfel: (1) Pentru orice i ∈ {1. Consider˘m V (G) = ∪n V (Ti ) ∪ ∪m V (Zj ) ¸i a s i=1 j=1 E(G) = ∪n E(Ti) ∪ ∪m (E(Zj ) ∪ Ej ). constructia este polinomial˘ ˆ raport ¸ a ın cu m + n (G are 2n + 3m vˆ ırfuri ¸i n + 6m s muchii). ui}. n} consider˘m graa furile disjuncte Ti = ({ui. aj3vj3} unde vj1 ∨ vj2 ∨ vj3 este factorul Cj . a 286 . (3) Pentru orice j = 1. m consider˘m grafurile a disjuncte Zj = ({aj1. aj3}. . {uiui}). . i=1 j=1 Evident. m consider˘m multimea a ¸ de muchii Ej = {aj1vj1.

Exemplu: U = {u1, u2, u3, u4}; C = (u1 ∨ u3 ∨ u4) ∧ (u1 ∨ u2 ∨ u4) ∧ (u2 ∨ u3 ∨ u4); k = 4 + 3 = 7.
u1 u1 u 2 u2 u 3 u3 u 4 u4

a 13

a 23

a 33

a 11

a

12

a 21

a 22

a

31

a 32

S˘ presupunem c˘ r˘spunsul la problema a a a SM pentru instanta G ¸i k astfel construite ¸ s este da. Deci ∃S ∈ SG astfel ˆ ıt |S| ≥ k. ıncˆ Cum orice multime stabil˘ poate avea cel mult ¸ a un vˆ din orice V (Ti) ¸i din orice V (Zj ) (i = ırf s 1, n , j = 1, m) rezult˘ c˘ avem |S| = k ¸i deci a a s |S ∩ V (Ti )| = 1, |S ∩ V (Zj )| = 1 ∀i = 1, n ¸i s ∀j = 1, m.
287

Consider˘m t : U → {A, F } prin a t(ui ) =
⎧ ⎨A ⎩F

dac˘ S ∩ V (Ti ) = {ui} a dac˘ S ∩ V (Ti ) = {ui}. a

s Atunci, ∀j = 1, m avem t(Cj ) = A (¸i deci t(C) = A). ˆ adev˘r, ∀j = 1, m dac˘ Cj = vj1 ∨ vj2 ∨ vj3 ¸i s In a a S ∩ V (Zj ) = ajk (k ∈ {1, 2, 3}) atunci, deoarece a a / ajk vjk ∈ E rezult˘ c˘ vjk ∈ S. Dac˘ vjk = uα, atunci uα ∈ S deci uα ∈ S ¸i din a / s a definitia lui t avem t(uα) = A, adic˘ t(vjk ) = A ¸ ceea ce implic˘ t(Cj ) = A. a / a Dac˘ vjk = uα , atunci uα ∈ S implic˘ uα ∈ a a S, deci t(uα) = A, adic˘ t(vjk ) = A, ceea ce implic˘ t(Cj ) = A. a Reciproc, dac˘ r˘spunsul la problema 3SAT a a este da, atunci exist˘ o atribuire t : U → {A, F } a astfel ˆ ıt t(Cj ) = A ∀j = 1, m. ıncˆ
288

Consider˘m ˆ graful G multimea stabil˘ S 1, a ın ¸ a S 1 = ∪i=1,nVi , unde
⎧ ⎨{u } i Vi = ⎩{u } i

dac˘ t(ui) = A a dac˘ t(ui) = F . a

a Atunci, ∀j = 1, m, cum t(Cj ) = A, rezult˘ c˘ exist˘ kj ∈ {1, 2, 3}astfel ˆ ıt t(vjkj ) = A. a a ıncˆ Consider˘m S 2 = ∪j=1,m{ajkj }. a Evident, S 2 este stabil˘ ˆ G. Am construit a ın S 1 ∈ SG cu |S 1| = n, S 2 ∈ SG cu |S 2| = m. Consider˘m S = S 1 ∪ S 2. Evident, |S| = n + a s ın ¸ m = k (deci |S| ≥ k) ¸i ˆ plus S este multime stabil˘ ˆ G (deci r˘spunsul la SM pentru a ın a intrarea G, k este da). Faptul c˘ S este multime stabil˘ ˆ G rezult˘ a ¸ a ın a ıncˆ astfel: dac˘ ∃v, w ∈ S astfel ˆ ıt vw ∈ E(G) a atunci o extremitate este din S 1 ¸i cealalt˘ din s a S 2.
289

Presupunˆ ınd v ∈ S 1 avem dou˘ cazuri de cona siderat a) v = uα, w = ajkj α ∈ {1, . . . , n} , j ∈ {1, . . . , m} , kj ∈ {1, 2, 3} ¸i vjkj = uα. Cum s t(vjkj ) = A rezult˘ t(uα) = A deci uα ∈ S 1, a / contradictie. ¸ b) v = uα, w = ajkj α ∈ {1, . . . , n} , j ∈ {1, . . . , m} , kj ∈ {1, 2, 3} ¸i vjkj = uα. Cum s t(vj kj ) = A, rezult˘ t(uα) = A deci t(uα) = F a ceea ce implic˘ uα ∈ S 1, contradictie. a / ¸ Cu aceasta teorema este complet demonstrat˘. a S˘ observ˘m c˘ reducerea lui SAT la SM este a a a complet similar˘, singura deosebire fiind c˘ graa a furile Zi sunt grafuri complete cu ki vˆrfuri. a
290

2. Colorarea vˆrfurilor. a

COL
Instant˘: G = (V, E) graf ¸i p ∈ N∗ . ¸a s Intrebare: Exist˘ o p-colorare a vˆrfurilor lui G? a a

Teorem˘. 2. 3SAT ∝ COL. a Aceast˘ teorem˘ evidentiaz˘ complexitatea proba a ¸ a lemelor de colorare a vˆ ırfurilor unui graf. Vom demonstra chiar mai mult: fixˆ ınd p = 3 ˆ enuntul lui COL, reducerea polinomial˘ a lui ın ¸ a 3SAT este ˆ a posibil˘ ! ınc˘ a

291

Lem˘. 1. Fie H graful: a
v 1

v

2

v 4

v

3

a) Dac˘ c este o 3-colorare a lui H astfel ˆ ıt a ıncˆ c(v1) = c(v2) = c(v3) = a ∈ {1, 2, 3} atunci ˆ ın mod necesar c(v4) = a. b) Dac˘ c : {v1, v2, v3} → {1, 2, 3} satisface a c({v1, v2, v3}) = {a} atunci c poate fi extins˘ a la o 3-colorare c a lui H cu c(v4) = a. Demonstratia lemei se poate face examinˆ ¸ ınd lista 3-color˘rilor lui H. a
292

ˆ cele ce urmeaz˘, vom desemna (pentru simIn a plitate) graful H astfel:
v 1

v

v 2 h

4

v

3

Demonstratia teoremei 2. Consider˘m datele ¸ a unei instante ale problemei 3SAT: ¸
U = {u1 , . . . , un } o multime de variabile booleene (n ∈ N∗ ) ¸i C = ¸ s C1 ∧ C2 ∧ . . . ∧ Cm (m ∈ N∗ ) o formul˘ astfel ˆ ıt ∀i = 1, m Ci = a ıncˆ vi1 ∨ vi2 ∨ vi3 , unde ∀j = 1, 3 ∃α astfel ˆ ıt vij = uα sau vij = uα . ıncˆ

Vom construi un graf G, astfel ˆ ıt, considerˆ ıncˆ ınd p = 3 ˆ COL, vom obtine c˘ G este 3-colorabil ın ¸ a dac˘ ¸i numai dac˘ r˘spunsul la 3SAT este da, as a a adic˘ exist˘ t : U → {A, F }, astfel ˆ ıt t(C) = a a ıncˆ A. ˆ plus, constructia lui G se va face ˆ timp In ¸ ın polinomial, parcurgˆ ınd urm˘toarele etape: a
293

1. ∀i = 1, n consider˘m grafurile disjuncte a s (Vi , Ei) unde Vi = {ui, ui} ¸i Ei = {uiui}. 2. ∀j = 1, m, pentru Cj = vj1 ∨ vj2 ∨ vj3 , consider˘m grafurile: a
v j1 aj

v

j2

hj

v

j3

unde vjk (k = 1, 3) sˆ vˆ ınt ırfurile de la pasul 1, ınt corespunz˘toare literalilor vjk , grafurile hj sˆ a ınt ırfuri distincte. disjuncte ¸i aj sˆ vˆ s 3. Consider˘m a, un vˆ diferit de toate cele a ırf construite ˆ pa¸ii 1 ¸i 2 ¸i unim a cu vˆ ın s s s ırfurile aj j = 1, m. 4. Consider˘m b un vˆ nou, unit cu ui ¸i ui a ırf s ∀i = 1, n ¸i de asemenea, cu vˆ s ırful a.
294

295 . C = (u1 ∨ u2 ∨ u3) ∧ (u1 ∨ u3 ∨ u4) ∧ (u2 ∨ u3 ∨ u4) Graful G va fi: b u1 u1 u2 u 2 u 3 u3 u4 u4 h1 h2 h3 a1 a2 a3 a Presupunem ca r˘spunsul la 3SAT este da. m. u4} . deci ıncˆ t(Cj ) = A ∀j = 1. Construim o 3-colorare C a grafului G. u3. a Deci ∃t : U → {A. F } astfel ˆ ıt t(C) = A. u2.Graful G astfel construit are un num˘r liniar de a vˆ ırfuri ˆ raport cu n + m. ın Exemplu: U = {u1.

n astfel: ıntˆ s c(ui) = 1 ¸i c(ui) = 2. 296 . dac˘ t(ui ) = F . atunci vˆ ırful v este colorat c(v) = 2 dac˘ a ¸i numai dac˘ t(v) = F . Rezult˘ c˘ atribuind c(a) = 2 ¸i c(b) = 3. Se observ˘ c˘ dac˘ v este un literal (uα sau a a a uα). m nu avem c(vj1 ) = c(vj2 ) = c(vj3 ) = 2. s a Deci ∀j = 1.b) rezult˘ c˘ putem extinde ˆ a a ın ıncˆ fiecare graf hj colorarea c astfel ˆ ıt c(aj ) = 2. c a a s este o 3.colorare a lui G.Definim mai ˆ ıi c(ui) ¸i c(ui) ∀i = 1. Folosind lema 1. 3}. deci c(aj ) ∈ {1. dac˘ t(ui ) = A ¸i s a s s a c(ui) = 2 ¸i c(ui) = 1.

3. Definim t : U → {A. m. Din lema 1 a) rezult˘ c˘ nu vom avea c(vj1) = a a c(vj2) = c(vj3) = 2 ∀j = 1. a s Va rezulta c˘ {c(ui).Reciproc. m ∃vjk astfel ˆ ıt c(vjk ) = 1. ıncˆ Deci ∀j = 1. presupunem c˘ G este 3-colorabil. a Putem presupune (eventual renumerotˆ ınd culorile) c˘ c(b) = 3 ¸i c(a) = 2. Conform observatiei anterioare. adic˘ r˘spunsul la 3SAT este da. ∀j = 1. deci t(C) = A. m. 2} ¸i c(aj ) ∈ a s {1. n. a 297 . c(ui)} = {1. F } prin t(ui ) = A ⇔ c(ui) = 1. vom avea c˘ ¸ a a t(Cj ) = A ∀j = 1. 3} ∀i = 1.

|c({x. a a a HOL Instant˘: G = (V. y. 298 . E) graf 3-regulat. u})| = 3 sau c(z) = c(t). Colorarea muchiilor Consider˘m urm˘toarea problem˘ de decizie. Fie H graful desenat mai jos. a x v u 1 v 7 z v 2 y v 3 v 4 v 6 t v 5 ˆ orice 3-colorare c a muchiilor lui H. a Lem˘. avem In c(x) = c(y). 3. 2. u})| = 3 . (Holyer 1981) 3SAT ∝ HOL.3. t. ¸a Intrebare: Exist˘ o 3-colorare a muchiilor lui G? a Teorem˘. |c({z.

c(z) = 3.c(v3v6) = 2.c(u) = 2.c(v2v5) = 2. Avem urm˘torul ¸ir de implicatii: a s ¸ c(v2v4) = 2.c(v4v6) = 3.)c(v2 v4) = 2. c(z) = 1.c(v3v6) = 2. Avem atunci.c(v6v7) = 1.c(v2v5) = 1.1. dup˘ a o renumerotare a culorilor vom avea c(x) = c(y) = 1 ¸i c(v1v7) = 2. c(v2v5) = s 2. b) Argument similar. a2).Demonstratie Fie c o 3-colorare a lui H.2.c(z) = 3. Avem atunci.c(v4v6) = 2. Muchia v2v4 poate avea culorile 1 sau 2.c(v3v6) = 3. c(t) = 2.c(v3v5) = 3. dac˘ c(z) = c(t).c(v4v6) = 1. ¸i nu putem atribui c(v3v5).c(v4v6) = 3. ¸ a) presupunem c(x) = c(y). s a1). a3). c(t) = 1. c(v2v5) = 1.)c(v2 v4) = 1.c(v3v5) = 3. Avem urm˘torul ¸ir de implicatii: a s ¸ c(v2v4) = 1. a3. c(t) = 2. Eventual.c(v3v6) = 2.c(v3v5) = 3.c(u) = 1. c(v6v7) = 3.c(v6v7) = 1. a 299 . c(v1v2) = 3. a3.c(u) = 3.

respectiv. y) este ”ina a trare” ˆ H atunci (z. perechi de astfel de muchii vor fi identificate. t) este ”ie¸ire” ¸i H transform˘ ın s s a adev˘r ˆ fals ¸i fals ˆ adev˘r). cu alte cuıte vinte. a ın s ın a 300 . aceste extremit˘¸i nepreat cizate vor fi identificate 2 cˆ 2. Lema 2 ¸i aceast˘ interpretare justific˘ denumirea de s a a component˘ inversoare pentru H (dac˘ (x. Vom reprezenta simplificat graful H astfel: u x z y t Dac˘ graful H este subgraf ˆ a ıntr-un graf care admite o 3. vom interpreta perechile de muchii (x. t). y) ¸i (z. dac˘ sˆ a ınt colorate diferit. valoarea ”fals”. dac˘ sˆ la fel ınd a a ınt colorate.S˘ observ˘m c˘ ˆ graful H muchiile etichetate a a a ın nu au precizat˘ una din extremit˘¸i.colorare a muchiilor. ˆ constructia a at In ¸ pe care o vom face. ca s reprezentˆ valorea ”adev˘r”.

definim graful Hn astfel: 1. ∀n > 2 Hn se construie¸te astfel: s 301 .Definim graful 2H. considerˆ ınd dou˘ compoa nente inversoare H c˘rora le identific˘m o pereche a a de muchii etichetate. n ∈ N. H2 se obtine identificˆ ¸ ınd muchiile u ¸i u din 2H: s u u’ 1 2 2. u u’ x z z’ x’ y t t’ y’ Pentru orice n ≥ 2.

(ui.-consider˘m n copii izomorfe disjuncte ale lui a ınd perechile de muchii 2H. -identific˘m (un. un) ≡ (x1. ui) ≡ a (xi+1. n. 2H i i = 1. yi) i = 1. yi). avˆ libere (xi . yi). ui). ¸i s este construit din 2n componente H. 302 . -pentru i = 1. yi+1). n. y1). (xi. n−1 identific˘m perechile (ui. a x4 x1 y1 y 4 y3 x3 x2 y 2 Hn are n perechi de intrare (xi .

a s a Pentru n = 1 se poate construi H1 cu o singur˘ a pereche de intrare. .ˆ orice 3-colorare c a lui Hn avem In a) c(x1) = c(y1) ⇒ c(u1) = c(u1) (din lema 2 ¸i s constructia lui 2H). ⇒ c(x2) = c(y2) (din iden¸ tificarea de la constructia lui Hn) ⇒ c(x2) = ¸ c(y2) (lema 2) ⇒ c(u2) = c(u2) ⇒ . b) c(x1) = c(y1) ⇒ c(x1) = c(y1) (lema 2) ⇒ c(un) = c(un)(din identificarea de la constructia ¸ lui Hn ) ⇒ c(xn) = c(yn)(din lema 2. ⇒ c(x2) = c(y2). ⇒ c(xn) = c(yn) . prin reducere la absurd) ⇒ c(xn) = c(yn ) ⇒ c(un−1) = c(un−1) ⇒ . Am dovedit a 303 . Rezult˘ de aici c˘ ˆ orice 3-colorare a muchia a ın ilor lui Hn(n ≥ 2) toate perechile de muchii de intrare reprezint˘ aceea¸i valoare de adev˘r. care s˘ poat˘ reprezenta a a oricare din cele 2 valori de adev˘r. . . .

cu proprietatea c˘ ˆ a ın orice 3-colorare a muchiilor lui Hn. Fie F graful a a d 3 1 c b 2 ˆ orice 3-colorare c a muchiilor lui F . ˆ orice pereche de intrare cele dou˘ muchii ın a au culori diferite.Lem˘. a 304 . a ınt Lem˘. 3. toate cele n perechi reprezint˘ aceea¸i valoare de adev˘r a s a (sau. 4. m˘car In a una din cele 3 perechi de muchii de intrare are muchiile la fel colorate (reprezint˘ valoarea a adev˘r). Pentru orice n ∈ N∗ se poate cona strui ˆ timp polinomial graful Hn avˆ n perechi ın ınd de muchii de ”intrare”. sau. ˆ orice pereche de inın trare cele dou˘ muchii sˆ la fel colorate).

. . a ¸ Demonstratia teoremei 3. . ınd Vom construi un graf 3-regulat G cu proprias a a etatea c˘ χ (G) = 3 dac˘ ¸i numai dac˘ exist˘ a t : U → {adev. C = C1 ∧ . c(b) = c(c) ¸i c(c) = c(d) (s-a utilizat lema s 2). Not˘m c˘ exist˘ a a a color˘ri c cu proprietatea din enunt. Ci = vi1 ∨vi2 ∨vi3 cu vij literali (vij = uα sau vij = uα ) reprezentˆ datele unei probleme 3SAT. ıncˆ Constructia se face ˆ timp polinomial ˆ raport ¸ ın ın cu n ¸i m ¸i se poate descrie astfel: s s 305 . f als} astfel ˆ ıt t(C) = adev. .Demonstratia este imediat˘ ¸i rezult˘ prin re¸ a s a ducere la absurd: dac˘ exist˘ o 3-colorare a a a muchiilor lui F . un} ¸ (n ∈ N∗). . Fie U = {u1. atunci c(a) = c(b). deci c(a) = c(d) contrazicˆ ınd faptul c˘ c a este colorare a muchiilor. astfel ˆ ıt ˆ cele 3 perechi ıncˆ ın muchiile sˆ ınt colorate diferit. ∧ Cm (m ∈ N∗). .

Pentru fiecare clauz˘ Cj j = 1. Dac˘ vji (i = 1. m se cona sider˘ cˆ o copie disjunct˘ Fj a grafului F . a 2. fie Cj = vj1 ∨ vj2 ∨ vj3 . num˘rul aparitiilor (negate sau a a ¸ nu) ale lui ui ˆ C ¸i se consider˘ cˆ o copie ın s a ıte disjunct˘ a grafului Hxi . n a a se determin˘ xi. Pentru j = 1.1. Pentru fiecare variabil˘ boolean˘ ui i = 1. Dac˘ vji este uα se plaseaz˘ o component˘ ina a a versoare H ˆ ıntre perechea i a lui Fj ¸i perechea s s a de intrare cu num˘rul y din Hxα . ¸i se identific˘ a corespunz˘tor intr˘rile lui H cu cele precizate a a mai sus. m. 306 . a ıte a 3. 3) este uα ¸i reprezint˘ intrarea a s a cu num˘rul y a variabilei uα atunci perechea de a intrare cu num˘rul y din Hxα se identific˘ cu a a perechea de intrare num˘rul i din componenta a Fj .

din cele dou˘ grafuri. Consider˘m o copie izomorf˘ disjunct˘ a sa ¸i idena a a s tific˘m perechile corespunz˘toare de astfel de a a muchii. Se obtine un a ¸ graf G 3-regulat.4. Graful obtinut la 1-3 are anumite muchii ¸ pentru care nu s-a precizat o extremitate. a 4 simuleaz˘ a adev˘r a lui a G admite o C este sat- 307 . Constructia lui G ¸i lemele 3 ¸i ¸ s s algoritmul de calcul al valorii de Cˆ ıntr-o atribuire t fixat˘ ¸i deci a s 3-colorare dac˘ ¸i numai dac˘ a s a isfiabil˘.

¸ Un circuit C al lui G se nume¸te circuit hamils tonian dac˘ V (C) = V (G). Este G hamiltonian ? Dat G graf. a Un drum deschis D al lui G se nume¸te drum s hamiltonian dac˘ V (D) = V (G). Este G hamiltonian ? 308 . Probleme hamiltoniene Definitie: Fie G = (V (G). a Un (di)graf care are un circuit hamiltonian se nume¸te (di)graf hamiltonian.4. 4. E(G)) un (di)graf. Este G trasabil ? Dat G graf bipartit. s Teorem˘. Este G hamiltonian ? Dat G digraf. (Nash-Williams 1969) Proba lemele urm˘toare sˆ polinomial echivalente: a ınt CH : TR : DCH: DTR: BCH: Dat G graf. s Un (di)graf care are un drum hamiltonian se nume¸te (di)graf trasabil. Este G trasabil ? Dat G digraf.

Construim (ˆ timp polinomial) un graf H a ın astfel ˆ ıt G este hamiltonian dac˘ ¸i numai ıncˆ a s dac˘ H este trasabil. z} ¸i E(H) = E(G) ∪ s {xv0. yz} ∪ {wy | w ∈ V (G) ∧ wv0 ∈ E(G)}. 309 . D exist˘ ˆ H s ın a ın dac˘ ¸i numai dac˘ ˆ G exist˘ un drum hamilas a ın a s a tonian cu o extremitate v0 ¸i cealalt˘ un vecin as a al lui v0. deci dac˘ ¸i numai dac˘ G este hamiltonian. x vo vo y z N (vo ) G N (vo ) G G H Se observ˘ c˘ H este trasabil dac˘ ¸i numai a a a s dac˘ are un drum hamiltonian D cu extremit˘¸ile a at x ¸i z (care au gradul 1 ˆ H).Demonstratie: ¸ CH ∝ T R ırf Fie G un graf ¸i v0 ∈ V (G) un vˆ fixat al s s˘u. y. a Fie V (H) = V (G) ∪ {x.

a ın CH ∝ DCH Fie G un graf. Consider˘m H = G + K1. Orice circuit hamiltonian ˆ G inın duce un circuit hamiltonian ˆ D ¸i reciproc. H a este hamiltonian dac˘ ¸i numai dac˘ G are un a s a drum hamiltonian. Fie D digraful obtinut din G ¸ ˆ ınlocuind fiecare muchie cu o pereche de arce simetrice.T R ∝ CH Fie G un graf. ın s 310 . G G+K1 Echivalenta problemelor DCH ¸i DTR de demon¸ s streaz˘ ˆ mod similar.

cv dv . a 311 . Fie G graful cu V (G) = ∪v∈V (D)V (Pv ) ¸i E(G) = ∪v∈V (D) E(Pv ) ∪ {bv aw | vw ∈ E(D)}. {av cv . s Evident. E(D)) un digraf. cv .DCH ∝ CH Fie D = (V (D). dv . dv bv }). Rezult˘: D este hamiltonian dac˘ ¸i a a s numai dac˘ G este hamiltonian. v x bv w av bx ax bb b D a aa aw b w a b ba G Se observ˘ c˘ orice circuit C al lui D induce un circuit a a ˆ G ¸i reciproc orice circuit al lui D este generat de un ın s circuit al lui G. Pentru orice arc vw ∈ E(D) consider˘m muchia a bv aw . bv }. Pentru orice vˆ v ∈ V (D) asociem un drum de lungime 3. G se poate construi ˆ timp polinomial ın ˆ raport cu num˘rul de vˆ ın a ırfuri ale lui D. ırf Pv cu extremit˘¸ile av ¸i bv at s Pv = ({av .

am demonstrat ¸i c˘ DCH ∝ a a s a BCH. 5. Rezult˘ c˘. adic˘ G este a a bipartit. E) graf ¸i j ∈ Z+ datele unei probleme SM . a ¸ s Demonstratie: Fie G = (V. acesta este generat de un circuit C al lui D ¸i ˆ plus lungimea circuitului C. (Karp 1972) SM ∝ CH. de fapt. deci orice circuit al lui G este de lungime par˘. l(C) satisface s ın l(C) = 3l(C )+l(C ) = 4l(C ). a s a 312 . Construim ˆ timp ın polinomial (ˆ raport cu n = |V |) un graf H ın astfel ˆ ıt: exist˘ S stabil˘ ˆ G cu |S| ≥ j ıncˆ a a ın dac˘ ¸i numai dac˘ H este hamiltonian.S˘ observ˘m c˘ dac˘ C este un circuit al lui a a a a G. Cum BCH ∝ CH este evident˘. rezult˘ c˘ teoa a a rema este demonstrat˘. a Teorem˘.

e. e. Putem presupune k > 0. dac˘ este subıncˆ a graf al unui graf hamiltonian H ¸i niciunul din s vˆ ırfurile (w. 3).e. ak } o multime de k vˆ ¸ ırfuri distincte. e.e. ın ıt 313 .1) (u. 5} ∪ {(u. . e. v}. i = 1. . (u. v (v.e.e.e.4) (v.5) (v.e.5) (u.2) (v. w ∈ {u. (v.e.e.6) Graful Ge a fost ales astfel ˆ ıt. i + 1). (v. . . 6)(v. 5 nu are s alt vecin ˆ H decˆ cele din Ge.e.2) u (u.e. e. 6)(u. 6}} ¸i Ee = {(w.6) e (u. 1)(v.4) (u. i) cu w ∈ {u.e. e. ii) Pentru orice e = uv ∈ E(G) consider˘m graa ful Ge = (Ve . Ee) cu s Ve = {(w. w ∈ {u. i)(w. a2. e. altfel lu˘m drept H orice graf nehamiltonian.Fie k = |V | − j. 4)}.1) (v.3) (v. v}. e. i = 1. v} ¸i i = 2. e. 4). 1)(u. a i) Fie A = {a1. 3).3) (u. e. e.e. i). e.

dac˘ circuitul hamiltonian ”intr˘” ˆ Ge a a ın printr-un vˆ de tip u. va ”ie¸i” tot printr-un vˆ corespunz˘tor s ırf a lui u. 6)) ırf atunci. 1) sau (u.atunci singurele posibilit˘¸i de traversare de at c˘tre un circuit hamiltonian al lui H a vˆ a ırfurilor din Ge sˆ ınt (a) (b) ¸i (c) indicate ˆ figura s ın urm˘toare (orice alt˘ parcurgere las˘ un vˆ a a a ırf netraversat): a b c Deci. ((u. 314 . e. e.

(iii) Pentru fiecare vˆ u ∈ V , se consider˘, ırf a (ˆ ıntr-o ordine oarecare) toate muchiile lui G incidente cu u: eu = uv1, eu = uv2, . . . , eu = p 1 2 uvp, unde, p = dG(u). Fie Eu = {(u, eu, 6)(u, eu , 1); i = 1, p − 1} ¸i s i i+1 Eu = {ai(u, eu , 1), ai(u, eu , 6); i = 1, k}. p 1
u

e1
v 1 u (u,e ,1) 1

e

2

ep
vp u (u,e ,1) 2 (u,e u ,6) 2 u (u,e p ,1) u (u,e p ,6)

v 2 u (u,e ,6) 1

a

1

a

k

Graful H va avea V (H) = A ∪ ∪e∈E Ve ¸i s E(H) = ∪e∈E Ee ∪ ∪u∈V (Eu ∪ Eu ). Avem |V (H)| = k + 12· |E|; |E(H)| = 14· |E| + 2k· |V0|+2· |E|−|V0| , unde V0 ⊆ V este multimea ¸ vˆ ırfurilor neizolate din G; deci H se poate construi ˆ timp polinomial ˆ raport cu |V |. ın ın
315

Exemplu:
a2

1 2 4 1 2 G 3 4 k=2 2 2

3

3 1 2 a1 4

4

4

1. Dac˘ H este hamiltonian, atunci exist˘ C a a un circuit hamiltonian ˆ H. Cum A este o ın multime stabil˘ ˆ H, A va descompune cir¸ a ın cuitul C ˆ exact k drumuri disjuncte (cu exceptia ın ¸ extremit˘¸ilor): Dai ai , Dai a1 , . . . , Dai ai . at 1 2 2 3 k 1 Fie Dai ai un astfel de drum (j + 1 = 1 +
j j+1

(j(mod k)) ). Din constructia lui H, rezult˘ c˘ primul vˆ ¸ a a ırf vij care urmeaz˘ lui aij pe acest drum va fi (vij , e1 , 1) a
vij sau (vij , ep , 6) unde p = dG(vij )

v ij ∈ V .
316

ˆ continuare, Dai ai va intra ˆ componenta ın In j j+1 Ge1 sau Gep din care va ie¸i tot printr-un vˆ s ırf corespunz˘tor lui vij . Dac˘ vˆ a a ırful urm˘tor nu a este aij+1 , se intr˘ ˆ a ıntr-o component˘ corea spunz˘toare urm˘toarei muchii incidente cu vij a a ¸i va ie¸i din aceasta, tot printr-un vˆ cores s ırf spunz˘tor lui vij . a
a2

1 2 4 1 2 3 4

3

3 1 2 a1 4

2

2

4

4

317

vij ultima muchie a acestui drum sˆ aij (vij , et , x), ınt vij aij+1 (vij , et , x ) cu t = 1 ¸i t = dG(u), x = 1, s

Rezult˘ c˘ drumului Dai ai a a i se poate j j+1 asocia ˆ mod unic vˆ ın ırful vij ∈ V ¸i c˘ prima ¸i s a s

x = 6 sau t = dG(u), t = 1, x = 6, x = 1. Aceasta implic˘ faptul c˘ vij sˆ distincte. a a ınt Fie V ∗ = {vi1 , vi2 , . . . , vik }. Cum C este hamiltonian ˆ H, rezult˘ c˘ ∀e ∈ E exist˘ un drum ın a a a Dai ai care trece prin Ge deci exist˘ v ∈ V ∗ a
j j+1

incident cu e. Rezult˘ c˘ S = V − V ∗ este staa a bil˘ ˆ G ¸i |S| = j. Deci am obtinut c˘ dac˘ H a ın s ¸ a a este hamiltonian, ˆ G exist˘ o multime stabil˘ ın a ¸ a de cardinal j, prin urmare r˘spunsul la SM este a da. 2. Presupunem c˘ r˘spunsul la SM este da, a a deci ˆ G exist˘ S0 stabil˘ cu |S0| ≥ j. Exist˘ ın a a a atunci S ⊆ S0 stabil˘ cu |S| = j. a
318

Fie V ∗ = V − S = {v1, v2, . . . , vk }. Consider˘m a ˆ H pentru fiecare muchie e = uv ∈ E: ın

- cele dou˘ drumuri din Ge situatia (a), dac˘ a ¸ a u, v ∈ V ∗,

¸ a / - drumul din Ge situatia (b) dac˘ u ∈ V ∗, v ∈ V ∗

- drumul din Ge situatia (c) dac˘ u ∈ V ∗, v ∈ V ∗. ¸ a /

Dac˘ la reuniunea acestor drumuri ad˘ug˘m a a a muchiile v ai(vi, e1i , 1), v v vi v (vi, e1i , 6)(vi, e2i , 1), . . . , (vi, ep−1, 6)(vi, epi , 1), v (vi, epi , 6)ai+1, (cu p = dG(vi)) pentru i = 1, k, se obtine un circuit hamiltonian ˆ H. ¸ ın
319

5. Problema comisului voiajor. Dat G = (V, E) un graf ¸i o functie de pons ¸ dere d : E → R+ , s˘ se determine un circuit a hamiltonian H0 ˆ G astfel ˆ ıt suma ponderın ıncˆ ilor muchiilor lui H0 s˘ fie minim˘. a a Dac˘ graful G reprezint˘ reteaua rutier˘ ˆ a a ¸ a ıntre o multime V de localit˘¸i, iar functia d avˆ ¸ at ¸ ınd ¸ a interpretarea d(uv) = distanta pe ruta direct˘ at s s a dintre localit˘¸ile u ¸i v, ¸i se fixeaz˘ un centru v0 ∈ V , atunci circuitul hamiltonian H0 reprezint˘ cel mai economic mod de vizitare a a localit˘¸ilor din V de c˘tre un comis voiajor at a ce pleac˘ din centrul v0 ¸i se ˆ a s ıntoarce ˆ acela¸i ın s loc, dup˘ ce a vizitat fiecare localitate exact o a dat˘. a
Problema este interesant˘, nu pentru rezolvarea acestei a aplicatii, mai mult sau mai putin important˘, ci pentru ¸ ¸ a c˘ ea apare ˆ numeroase probleme de optimizare disa ın cret˘, motivate, de exemplu, de construirea circuitelor a integrate pe scar˘ mare. a
320

ˆ cele ce urmeaz˘, vom considera o form˘ In a a echivalent˘ a ei a s CV Dat n ∈ Z+ (n ≥ 3) ¸i d : E(Kn) → R+, ın s˘ se determine H0 circuit hamiltonian ˆ graa ful complet Kn cu d(H0) minim printre toate circuitele hamiltoniene ale lui Kn. Observatii 10. d(H0) = ¸
e∈E(H0 ) d(e).

a 20. Dac˘ graful pentru care se cere rezolvarea nu este complet, se introduc muchiile lips˘, a atribuindu-le drept ponderi, M ∈ R+ cu M > |V |· maxe∈E d(e). Not˘m aici, c˘ ˆ enuntul problemei ne-am lima a ın ¸ itat numai la ”cazul simetric”, o problem˘ sima ilar˘ se poate considera ¸i pentru G digraf oarea s care. 30. ˆ studiul complexitatii acestei probleme In ¸ vom considera c˘ d(e) ∈ Z+ . a
321

Problema de decizie asociata va fi

DCV
Instant˘: n ∈ Z+ ¸a (n ≥ 3), d : E(Kn) → Z+ ¸i B ∈ Z+ s Intrebare: Exist˘ H0 circuit hamiltonian ˆ Kn a ın astfel ˆ ıt d(H0 ) ≤ B ? ıncˆ

Teorem˘. 6. CH ∝ DCV . a Demonstratie: Fie G = (V, E), (|V | = n) ¸ reprezentˆ ınd datele unei probleme CH. Construim ˆ timp polinomial o problem˘ DCV cu ın a proprietatea c˘ ˆ Kn exist˘ un circuit hamila ın a tonian de pondere total˘ care nu dep˘¸e¸te B a as s dac˘ ¸i numai dac˘ G este hamiltonian. a s a Fie d(vw) =
⎧ ⎨1 ⎩2

dac˘ vw ∈ E(G) a dac˘ vw ∈ E(G). a
322

¸i consider˘m B = n. s a

Atunci ˆ Kn exist˘ un circuit hamiltonian de ın a pondere ≤ n dac˘ ¸i numai dac˘ G are un cira s a cuit hamiltonian. G pondere 1 pondere 2 Rezult˘. dificultatea rezolv˘rii problea a mei CV. de aici. 323 .

a ˆ cazul general. 8. s-ar dori ca aceste numere s˘ fie finite. ın 324 . ar fi ¸ aceea de a considera algoritmi A. astfel ˆ ıt RA < ∞. M˘suri ale eficientei unei astfel de ”euristici” a ¸ A pot fi considerate numerele: RA(n) = d:E(Kn)→R+ d(H0 )=0 n≥3 sup d(HA ) d(H0) RA = sup RA(n). care va aproxima solutia optim˘ H0. Evident. Dac˘ exist˘ un algoritm aproxa a a imativ A cu timp de lucru polinomial pentru CV. ˆ adev˘r. conditia ca RA s˘ fie finit este a In ¸ la fel de dificil˘ cu aceea a rezolv˘rii eficiente a a ”exact” a problemei CV.O solutie pentru abordarea problemei CV. care pentru datele unei probleme CV vor oferi ˆ timp poliın nomial (ˆ raport cu n) un circuit hamiltonian ın ¸ a HA. are loc In a Teorem˘. atunci CH se poate ıncˆ rezolva ˆ timp polinomial.

a 0 ¸ deci d(HA ) ≤ kd(H0 ) = kn. Aplic˘m A pentru rezolvarea problemei CV. Fie G = (V. Exist˘ deci s ıncˆ k ∈ Z+ astfel ˆ ıt RA ≤ k. E) un graf arbitrar. a In a d(HA ) presupunˆ ınd c˘ d(H0) = n. Dac˘ n = |V | atunci definim d : E(Kn) → a Z+ prin d(uv) = ⎧ ⎨1 ⎩kn dac˘ uv ∈ E a dac˘ uv ∈ E a / Evident. Dac˘ d(HA) > kn.Demonstratie: Fie A un algoritm cu timp de ¸ a lucru polinomial ¸i cu RA < ∞. ˆ adev˘r. intrare pentru CH. avem d(H ) ≤ k. ¸ ın ¸ s Dac˘ d(HA ) ≤ kn. atunci d(HA ) = n ¸i HA = a H0. atunci d(H0 ) > n. G este hamiltonian dac˘ ¸i numai dac˘ as a solutia optim˘ H0 a lui CV astfel construit sat¸ a isface d(H0 ) = n. contradictie. 325 . Se a obtine ˆ timp polinomial o solutie HA.

rezult˘ c˘ CH se poate a a rezolva ˆ timp polinomial. Enuntul teoremei se poate for¸ ¸ mula echivalent ¸i astfel: s a Dac˘ P = NP.Rezult˘ c˘ G este hamiltonian dac˘ ¸i numai a a a s s dac˘ d(HA ) ≤ kn. s 326 . ın G pondere 1 pondere 7k Observatie. ¸i cum timpul de lucru al a lui A este polinomial. atunci nu exist˘ un algoritm a aproximativ A polinomial ¸i cu RA < ∞.

VII. cele care imit˘ proa cese din natur˘). Abord˘ri ale unor probleme a NP-dificile pe grafuri. a a ¸ care se pot analiza ¸i uneori se pot folosi ˆ s ın metaeuristici (de exemplu. de¸i nu a ¸ s rezolv˘ problema. 1. 1994). Pentru unele euristici se prea cizeaz˘ ¸i instante ale problemelor pentru care as ¸ ele functioneaz˘ corect. ¸ a Partizanii unor astfel de abord˘ri apeleaz˘ la a a a¸a numita no free lunch theorem (Wolpert s and Macready. all non-repeating search algorithms have the same mean performance when averaged uniformly over all possible objective functions f : X→Y 327 . ofer˘ solutii aproximative. Euristici Se proiecteaz˘ algoritmi eficienti care.

. . 2. a a v1. π) culori. ¸ a Algoritmul construie¸te colorarea c ce utilizeaz˘ s a χ(G. Fie G = (V. . datorit˘ alegerii. . . deja a ˆ alniti pˆn˘ ˆ acel moment. adic˘ a cu cea mai mic˘ culoare (num˘r ˆ a a ıntreg pozitiv) nefolosit˘ de nici unul dintre vecinii lui vi . de fiecare dat˘. . .1 Colorarea vˆrfurilor unui graf a Algoritmul greedy de colorare Un mod simplu ¸i natural de a colora un graf. ıntˆ ¸ a a ın Acest˘ metod˘ poart˘ denumirea de algoritmul greedy a a a de colorare. colorˆnd a a a a a fiecare vˆrf vi cu prima culoare disponibil˘. .1. . v2. E). . n} −→ {1. . c : {1. parcurgem aceast˘ list˘. 328 . 2. este dat de urm˘torul a algoritm: pornind de la o ordine fixat˘ a vˆrfurilor lui G. . . s cu nu foarte multe culori. . . χ(G. 2. . vn. π)}. cu V = {1. n} ¸i π o s permutare a lui V (ce corespunde unei ordon˘ri a a multimii vˆrfurilor).a celei mai a a mici culori care s-ar putea folosi.

j) = 0 then { c(πi) ← j + 1. } until f irst(πi. χ(G. S1 ← {π1 }. if f irst(πi. π). χ(G. repeat j ← j + 1. v din Sj a. Sj+1 ← {πi}. determin˘ primul vˆrf (conform ordon˘rii a a a π). j) = 0 or j = χ(G.Algoritmul greedy-color } 329 c(π1 ) ← 1. ˆ πi v ∈ E(G). Sj ← Sj ∪ {πi}. if v exist˘ then a f irst(πi. c(πi) ← j. for i ← 2 to n do { j ← 0. j) ← v else { f irst(πi. j) ← 0. π) ← j + 1. ı. π) ← 1. } .

χ(G) = 2. . ˆ a. 2 . Rezult˘ c˘ χ(G) ≤ 1 + ∆(G). . n. n }. . 2. din care se elimin˘ muchiile a 11 . . . n} ∪ a ¸ a {1 .n. . avˆnd multimea de vˆrfuri {1. nn . . 2. unde graa ful G este obtinut din graful bipartit complet ¸ Kn. . . . .S˘ observ˘m c˘ folosind algoritmul greedy nu a a a vom obtine niciodat˘ mai mult de 1 + ∆(G) ¸ a culori. c(n) = c(n ) = n avˆnd deci n a culori. a a ˆ a ∆(G) se poate ˆ Ins˘ ındep˘rta oricˆt de mult de a a s a s a χ(G) ¸i exist˘ grafuri ¸i permut˘ri pentru care algoritmul poate s˘ gre¸easc˘ la fel de mult. . 22 . 2 . . . n algoritmul va a obtine colorarea c cu c(1) = c(1 ) = 1. ıns˘ 330 . c(2) = ¸ c(2 ) = 2. . . . 1 . . cum G este bipartit. a s a Un astfel de exemplu este urm˘torul. . Fixˆnd ordinea 1. .

5’ Este u¸or de v˘zut c˘. 4’. 3. executˆnd algoritmul greedy. a a a a v ∈ Si ¸i w ∈ Sj atunci v se afl˘ ˆ s a ınaintea lui w ˆ permutare). . 5. s a a exist˘ totu¸i permut˘ri pentru care algoritmul a s a ofer˘ o colorare optimal˘. Sχ(G) sunt clasele a a de colorare corespunz˘toare unei color˘ri optia a male. atunci pentru orice permutare care p˘streaz˘ ordinea claselor (adic˘ dac˘ i < j. 1’. . 2. se ın a vor obtine χ(G) culori. . 2’. pentru orice graf G. 3’. 4. ¸ 331 . S2.1 2 3 4 5 1’ 2’ 3’ 4’ 5’ pi: 1. a a ˆ Intr-adev˘r dac˘ S1. .

ˆ acest a s ın caz. se obtine ¸i num˘rul de clic˘ al grafului . 1. π) = ω(G) ¸i prin urmare.w) Sj S c (v) S c (w) ˆ demonstatia teoremei se arat˘ c˘. j) < ıncˆ f irst(w. ¸ s a a Pe de alt˘ parte. j) ∈ ın a E atunci χ(G. χ(G.Teorem˘. c(w)} astfel ˆ at f irst(v. Conditia din enunt poate fi verificat˘ ˆ timp ¸ ¸ a ın liniar ˆ raport cu num˘rul de muchii ale graın a fului ¸i poate reprezenta un ultim pas al algos ritmului. atunci cˆnd conditia In ¸ a a a ¸ este ˆ ındeplinit˘. exist˘ grafuri pentru care aceast˘ a a a conditie nu va fi ˆ ¸ ındeplinit˘ de nici o permutare.v) v w first (j . j) (ˆ ordonarea π) avem c˘ vf irst(w. Dac˘ pentru orice vw ∈ E ¸i a a s orice j < min{c(v). π) = χ(G). first (j . a 332 .

Aceast˘ abordare este ˆ a ıntr-un fel opus˘ primeia a (cea geedy) deoarece se aleg vˆrfuri care formeaz˘ a a “clici” mari ˆ raport cu vˆrfurile deja alese ın a (spre deosebire de multimi stabile mari ˆ cazul ¸ ın greedy). ca fiind num˘rul de a a culori diferite din vecin˘tatea acestuia. alegˆnd a a a de fiecare dat˘ vˆrful cu un num˘r maxim de a a a constrˆngeri privitoare la culorile disponibile acesa tuia. a 333 . definim gradul de saturatie al a ¸ unui vˆrf v. notat dsat(v). Dac˘ G este un graf ¸i c o colorare partial˘ a a s ¸ a vˆrfurilor lui G. ¸ a a Ideea este de colora vˆrfurile pe rˆnd.Algoritmul Dsatur { Degree of Saturation} Acest algoritm ( Br´laz. 1979 ) este o metod˘ e a secvential˘ dinamic˘ de colorare.

334 . ın coloreaz˘ vˆrful ales cu cea mai mic˘ culoare posibil˘. a while exist˘ vˆrfuri necolorate do a a { alege un vf. Algoritmul DSatur garanteaz˘ a a g˘sirea num˘rului cromatic pentru grafurile bia a partite.Algoritmul DSatur } ordoneaz˘ vˆrfurile ˆ ordinea descresc˘toare a gradelor lor. alege un vf. de satur. necol. a a a a 1 4 3 6 5 2 Numarul de culori gasite este chiar numarul cromatic Teorem˘. a a ın a atribuie unui vˆrf de grad maxim culoarea 1. dac˘ acesta a nu-i unic. de grad maxim ˆ subgr. maxim.necolorat. 2. cu gr.

Cele mai cunoscute modific˘ri locale sunt a¸a a s numitele 2-opt.se ˆ ıncearc˘ repetat imbun˘t˘¸iri locale. Figura urm˘toare sugereaz˘ cele dou˘ operatii a a a ¸ 2-opt ¸i 3-opt. 3-opt sau combinatii ale aces¸ tora care au condus la faimosul algoritm LinKernighan. . trecˆnd a a at a de la solutia curent˘ la o solutie vecin˘ din ¸ a ¸ a ¸ ¸ spatiul solutiilor ( neighborhood search). s 335 . de ex¸ emplu greedy.2 Problema comisului voiajor Cele mai performante euristici se bazeaz˘ pe a principiul optimiz˘rii locale: a .se porne¸te cu un circuit hamiltonian ales s aleator sau obtinut cu o euristic˘ de tip con¸ a structie (tour-construction heuristic).1.

c) : ˆ ıntoarce true dac˘ la traversarea cira cuitului din a se ˆ alne¸te mai ˆ ai b ¸i apoi c. b. a 336 . a Between(a. d) : Parametrii verific˘ a = N ext(b) ¸i d = N ext(c). b. c.c d 2-opt c d a b a b e f d c a b doua operatii 3-opt posibile Pentru reprezentarea circuitului hamiltonian se utilizeaz˘ a structura de date Tour care trebuie s˘ suporte (eficient) a urm˘toarele 4 operatii: a ¸ N ext(a) : ˆ ıntoarece vˆrful urm˘tor lui a pe circuit. Se actualizeaz˘ circuitul prin ˆ a ınlocuirea muchiilor ab ¸i cd cu bc ¸i ad. a a P rev(a) : ˆ ıntoarece vˆrful dinaintea lui a pe circuit. ıntˆ s ıntˆ s a s F lip(a. Se actualizeaz˘ oris s a entarea circuitului (pointerii N ext ¸i P rev) ˆ mod s ın corespunz˘tor.

a s a 337 . a Un algoritm λ-opt se bazeaz˘ pe conceptul de a λ-optimalitate: Un tur este λ-optimal (sau simplu λ-opt) dac˘ a nu este posibil s˘ se obtin˘ un tur mai scurt (de a ¸ a cost mai mic) prin ˆ ınlocuirea unei multimi de ¸ λ muchii ale sale cu alt˘ multime de λ muchii. 2 ≤ λ ≤ λ. s ¸a Principala problem˘ ˆ implementarea operatiei a ın ¸ F lip este de a determina eficient ¸irul de schimb˘s a ri ale pointerilor N ext ¸i P rev (inversarea unuia s din cele dou˘ drumuri. Pentru evitarea form˘rii de cira cuite disjuncte este nevoie de functia Between. De asemenea.Operatia 3-opt se realizeaz˘ cu ajutorul a dou˘ ¸ a a sau trei F lip. ¸ Operatia mai complicat˘ λ-opt. a ¸ Observatie: Dac˘ un tur este λ-optimal atunci ¸ a el este λ -optimal pentru orice λ . un tur cu n vˆrfuri este optimal a dac˘ ¸i numai dac˘ este n-optimal. utilizat˘ de al¸ a a goritmul Lin-Kernighan se exprim˘ ca un 3-opt a ¸i o secvent˘ de 2-opt. care din ele ?).

¸ Lin ¸i Kernighan au abordat aceast˘ problem˘ s a a prin considerarea unei metode numit˘ variable a ın λ-opt: algoritmul va schimba valoarea lui λ ˆ timpul executiei. testarea unei a mare. ¸ 338 . 3} s a (dar se cunosc ¸i abord˘ri cu λ = 4. ˆ λ-schimb˘ri necesit˘ O(nλ) operatii. E dificil s˘ se estimeze ce valoare a lui λ trea buie aleas˘ pentru ca s˘ se obtin˘ cel mai bun a a ¸ a compromis ˆ ıntre timpul de executie ¸i calitatea ¸ s solutiei modificate. Ca ura a ¸ mare. cele mai folosite valori sunt λ ∈ {2. 5). ¸ La fiecare iteratie se ˆ ¸ ıncearc˘ valori cresc˘toare a a pentru λ pentru a obtine un tur mai scurt.Num˘rul operatiilor neces˘re test˘rii tuturor a ¸ a a λ-schimb˘rilor posibile cre¸te rapid pentru n a s Intr-o implementare naiv˘.

. La fiecare iteratie a al¸ goritmului se caut˘ multimile de muchii X = a ¸ {x1. yr } astfel ca ˆ s ınlocind X cu Y ˆ T . urm˘resc eficienta a ¸ algoritmului ¸iˆ acela¸i timp ˆ s ın s ımbun˘t˘¸irea turului curent: a at -Criteriul de schimb secvential: xi ¸i yi sunt ¸ s s a adiacente ¸i la fel xi+1 ¸i yi+1. at yi = t2i t2i+1 ¸i xi+1 = t2i+1t2i+2 . s˘ se obtin˘ un tur mai bun. ın a ¸ a Aceast˘ interschimbare o numim r-opt move. Initial ¸ ¸ s sunt vide ¸i ˆ pasul i se adaug˘ xi la X ¸i yi la Y . xr . a Pentru schimbul secvential se impune ¸i ca acest drum ¸ s s˘ fie ˆ a ınchis : yr = t2r t1. a Cele 2 multimi se construiesc element cu element. y1 . . . s x i+1 t 2i+2 y y i i+1 t2i+1 x t 2i i t 2i-1 Deci x1 . 339 . x3 . . atunci xi = t2i−1t2i . . s ın a Criteriile de selectare ale acestor muchii. . . yr formeaz˘ muchiile unui drum. . . . x2 . . . y2.Fie T turul curent. Dac˘ t1 este s una din extremit˘¸ile lui x1. xr } ¸i Y = {y1.

Ratiunea alegerii acestui criteriu este c˘ dac˘ suma unei secvente de numere este a a ¸ pozitiv˘. a -Criteriul dijunctivit˘¸ii: se impune ca multimile at ¸ X ¸i Y s˘ fie disjuncte.-Criteriul de admisibilitate: se va alege xi = a t2i−1t2i astfel ca dac˘ t2i se va uni cu t1. Este introdus ˆ algoritm pentru reducın erea timpului de executie ¸i simplificarea imple¸ s ment˘rii. a -Criteriul cˆ¸tigului: se cere ca yi s˘ fie ales as a astfel ca s˘ existe un cˆstig. atunci exist˘ o permutare circular˘ a a a a acestei secvente astfel ca orice sum˘ partial˘ ¸ a ¸ a este pozitiv˘. atunci Gi = g1+g2+ a ¸ · · · + gi. Gi trebuie s˘ fie a a a as pozitiv. dac˘ gi = d(xi ) − d(yi) este cˆ¸tigul a interschimb˘rii lui xi cu yi. 340 . configuratia care rezult˘ s˘ fie tur. Aceasta simplific˘ ims a a plementarea. Se aplic˘ pentru ¸ a a a i ≥ 3 ¸i garanteaz˘ c˘ este posibil s˘ ˆ s a a a ınchidem un tur. reduce timpul de executie ¸i d˘ ¸ s a un criteriu efectiv de oprire.

4. Alege xi = t2i−1 t2i ∈ T a.ˆ G1 > 0. a If mai ∃ alte alegeri pt. i + +. Alege y1 = t1t2 ∈ T . x2 then i ← 2 ¸i goto 6. Genereaz˘ (random) un tur initial T . 9. 2. 3.ˆ ı. 10 11 12 13 341 . Stop (sau goto 1). s If mai ∃ alte alegeri pt. 6. y2 then i ← 2 ¸i goto 7. s Alege yi = t2it2i+1 ∈ T a. ı. (a) Gi > 0.Linia algoritmului Lin & Kernighan 1.ˆ (a) dac˘ t2i e unit cu t1 se obtine un tur T ¸i a ¸ s (b) xi = ys pentru toti s < i ¸ If T e mai bun ca T then fie T = T ¸i goto 2. s If mai ∃ alte alegeri pt. x1 then i ← 1 ¸i goto 3. If ∃ goto 12. t1 then goto 2. a If yi exist˘ then goto 5. y1 then i ← 1 ¸i goto 4. Alege t1. s If mai ∃ alte alegeri pt. Alege y1 = t2t3 ∈ T a. 7. (b) yi = xs pentru toti s < i ¸i ¸ s (c) xi+1 exist˘. 5. ı. s If mai ∃ alte alegeri pt. a ¸ i ← 1. 8.

ın a t3. Totu¸i pentru i = 2 a s este permis˘ o astfel de alegere neadmisibil˘: a a t4 t x2 3 y 2 y 1 x1 t2 t 1 Dac˘ y2 va fi ales astfel ca t5 s˘ fie ˆ a a ıntre t2 ¸i s ınchis ˆ urm˘torul pas. De exemplu ˆ pasul 3 avem ın dou˘ posibilit˘¸i de a alege o muchie de pe tur a at incident˘ cu t1.ˆ n descrierea anterioar˘ ”alege” ˆ I a ınseamn˘ sea lectarea unei alternative neˆ ıncercate deja (pentru turul curent). a ˆ n pasul 6 exist˘ dou˘ alegeri pentru xi. PenI a a tru un yi−1 (i ≥ 2) numai una dintre acestea va face posibil˘ ˆ a ınchiderea turului (prin ad˘ugarea a lui yi). turul va putea fi ˆ 342 . Cealalt˘ alegere va conduce la aparitia a ¸ a dou˘ subtururi disjuncte.

t6 poate fi ales ˆ ambele p˘rti ale lui ın a¸ t5. t x2 3 t6 y t x 4 x1 t2 t1 7 y 1 2 x 3 t4 t5 343 . y2 va fi ales astfel ca t5 s˘ fie ˆ a ıns˘ a ıntre s a a t4 ¸i t1.x t 3 2 y 2 y 1 t4 x t5 3 x1 t2 t1 Atunci. Dar atunci t8 trebuie s˘ fie de cealalt˘ parte a lui t7. Dac˘ ˆ a. algoritmul alege a a alternativa cu d(t7 t8) maxim˘. atunci exist˘ doar o singur˘ alegere ıntre t4 ¸i t5) ¸i t7 trebuie s˘ se s s a pentru t6 (ˆ s a afle ˆ ıntre t2 ¸i t3.

¸ a a Se poate consulta articolul : The Traveling Salesman Problem: A Case Study in Local Optimization David S. H. 344 . Lin ¸i Kernighan s limiteaz˘ c˘utarea lui yi = t2i t2i+1 la vecinii de a a ¸a pe tur ai lui t2i la distant˘ cel mult 5. limitarea c˘ut˘rii.Pa¸ii 8-12 ai algoritmului cauzeaz˘ backtrackings a ul. Local Search in Combinatorial Optimization. E. Johnson Lyle A. L. John Wiley and Sons. Lenstra (eds. El este permis numai dac˘ nu se obtine o a ¸ ˆ ımbun˘t˘¸ire ¸i numai la nivelele 1 ¸i 2. Unele reguli au fost alese pentru salvarea timpului de executie. a at s s Algoritmul se termin˘ cu un tur dup˘ ce toate a a valorile posibile ale lui t1 au fost examinate f˘r˘ a a ˆ ımbun˘t˘¸ire. McGeoch. K. 215-310. Aarts and J. De exemplu.). pp. a at Numeroase alte modific˘ri ale metodei de baz˘ a a au fost examinate. iar altele ¸ a a pentru directionarea c˘ut˘rii. 1997. London.

1973) Fie CV cu d a satisf˘cˆ a ınd ∀v. este dat˘ de Christofides. ˆ acest a a a ın caz se poate demonstra urm˘toarea a Teorem˘. dac˘ P = NP. w. Demonstratie: ¸ Consider˘m urm˘torul algoritm A: a a 345 .O alt˘ euristic˘ popular˘ pentru problemele ˆ a a a ın care functia de distant˘ satisface inegalitatea ¸ ¸a triunghiular˘. u ∈ V (Kn )distincte d(vw) ≤ d(vu)+d(uw). a a Spre deosebire de cazul general cˆnd am demona strat c˘ nu se poate spera la o euristic˘ polia a nomial˘ A cu RA finit˘. ( Christofides. Exist˘ un algoritm aproximativ A pentru CV a care satisface RA = 3 ¸i are timp de lucru poli2 s nomial.

. vi1 ). . . 30. a 346 . Se determin˘ T 0 multimea muchiilor unui a ¸ arbore partial de cost minim ˆ K n (costul ¸ ın muchiei e fiind d(e) ). ˆ acest multigraf exist˘ un parcurs Eulerian ˆ ınchis. . Eliminˆ orice aparitie multipl˘ a unui vˆ ˆ acest ¸ir cu exceptia a ırf ın s ¸ primului ¸i ultimului vˆ se obtin vˆ s ırf. vjn vj1 ) (Acest pas ¸ necesit˘ O(n2) operatii). Problema se s ınd rezolv˘ ˆ timpul O(n3) utilizˆ algoritmul a ın lui Edmonds. . ın 20. vj2 vj3 . Problema se rezolv˘ a ˆ timp polinomial cu algoritmul lui Prim. .10. vi2 . ¸ ırfurile unui circuit hamiltonian HA ˆ Kn cu muchiın ile HA = (vj1 vj2 . . Se consider˘ multigraful obtinut din < a ¸ T 0 ∪ M 0 >Kn . ale c˘rui vˆ a ırfuri sˆ ınt ınd ¸ (vi1 . . prin duplicarea muchiilor din In a T 0 ∩ M 0. Se determin˘ M 0 un cuplaj perfect ˆ suba ın graful indus de vˆ ırfurile de grad impar ale arborelui T 0 ¸i de cost minim.

Arborele T o o Cuplajul M 5 9 11 3 8 6 1 4 10 Graf Eulerian 2 Turul H A 7 347 .

ın Presupunem c˘ d(M 1) ≤ d(M 2). a avem din inegalitatea triunghiular˘. . vi2 . < i2k . . Fie A = {vi1 . Dac˘ H = {vi1 vi2 . . . H este circuit de lungime a par˘. . d(H) ≤ d(H0). . deci este reuniunea a dou˘ cuplaje pera a fecte ˆ [A]Kn . . Vom ar˘ta ¸ a a 2 s (cf. . a prin ˆ ınlocuirea ponderii fiec˘rei ”corzi” d(vij vij+1 ) a cu suma ponderilor muchiilor de pe circuitul H0 subˆ ıntinse de vij vij+1 . . a 348 . M 1 ∪ M 2. Pe de alt˘ parte. . vi2k vi1 }. . . ¸ a Fie m = n ¸i H0 solutia optim˘. v2v3.HA este solutia aproximativ˘ a problemei CV. vnv1} (evena tual. vi2 vi3 . schimbˆ ınd numerotarea vˆ ırfurilor). i1 < i2 < . vi2k } vˆ ırfurile de grad impar ale lui < T 0 >Kn. . vi2k−1 vi2k . . Cornuejols ¸i Nemhauser) c˘ s a ∀n ≥ 3 3m − 1 d(HA ) ≤ d(H0) 2m Presupunem c˘ H0 = {v1v2.

o H M 1 H M2 H2 H1 349 .

. avem d(M 0) ≤ d(M 1) ≤ 1 (d(M 1 ) + d(M 2)) = 1 d(H) ≤ 1 d(H ). 0 2 2 2 Fie α ∈ R+ astfel ˆ ıt d(M 0) = αd(H0). 0 < α ≤ 1 . . m α ≤ 1 se obtine ¸ 2 + αd(H0 ) = d(HA ) ≤ 3m−1 d(H0 ) 2m pentru n ≥ 3. a d(HA ) ≤ d(T 0 ) + d(M 0) ≤ d(H0 )(1 − (1 + Cum α(m−1) )d(H0 ). Din inegalitatea triunghiular˘ obtinem: a ¸ d(H i ) ≥ d(M i) i = 1. m Fie T arborele partial obtinut din H0 prin ˆ atu-rarea ¸ ¸ ınl˘ ¸ ın a Cum T 0 este arbore partial de cost minim ˆ Kn . 2. Deoarece d(H 1 ) ≥ d(M 1) ≥ d(M 0) = a α d(H0 ). punˆ ˆ H i toate ¸ a muchiile lui H0 subˆ ıntinse de o coard˘ din M i a (vij vij+1 ∈ M i ⇒ vij vij +1.Din alegerea lui M 0. 2 ın ınd ın Partition˘m H0 ˆ H 1 ∪ H 2. rezult˘ Folosind inegalitatea triunghiular˘. 350 . M˘car unul din H 1 sau H 2 are cel mult m = a a a a αd(H0 ). . m n 2 muchii. ıncˆ Evident. vij+1−1vij+1 ∈ H i). Presupunem c˘ H 1. . Avem a d(T ) = d(H0 ) − maxe∈H0 d(e) ≤ d(H0 ) − d(T 0 ) ≤ d(H0 )(1 − α ). rezult˘ c˘ exist˘ e ∈ H 1 : d(e) ≥ unei muchii de pondere maxim˘. m α ) m α d(H0 ).

Una din metaeuristicile populare utilizate pentru rezolvarea problemelor de optimizare NPdificile este c˘lirea simulat˘. care nu s a at ¸ a sunt ˆ general. Metaeuristica simulated annealing. repetarea ala goritmului cu diferiti parametri de start ofer˘ ¸ a ¸ansa imbun˘t˘¸irii solutiilor g˘site. inventat˘ independent de a a ˇ Kirkpatrick. ın s ¸ 351 . Metode care imit˘ natura a In ultimii 20 de ani s-au dezvoltat numeroase metaeuristici inspirate din comportamentul unor sisteme biologice sau fizice ale lumii reale. metod˘ inspirat˘ a a a a din termodinamic˘ . Gelatt ¸i Vechi ˆ 1983 ¸i de Cerny s ın s ˆ 1985.2. ¸i solutii optime. ın Ca orice metod˘ Monte Carlo.

probabilitatea ca energia lor total˘ s˘ fie E este a a proportional˘ cu e− kT . baros ¸i nicoval˘ ) ca un proa a s a ces stohastic ce determin˘ o aranjare a atoma ilor care minimizeaz˘ energia total˘ a unui corp. atomii se mi¸c˘ liber ¸i se mut˘ cu s a s a rapiditate ˆ pozitii care cresc energia total˘. Pe m˘sur˘ ın ¸ a a a ce temperatura este sc˘zut˘. a a La temperaturi ˆ ınalte. unde k este constanta lui Bolz¸ a mann. iar la temperaturi joase ele apar rar. Temperatura este scazut˘ lent pentru a mentine echilibrul a ¸ termal. 352 .ˆ termodinamic˘ . Aceste cre¸teri ocazionale de energie a s joac˘ un rol crucial ˆ c˘lire : ele permit ie¸irea din a ın a s minimele locale printr-o cre¸tere temporar˘ de energie. Cˆnd atomii sunt ˆ echilibru la temperatura a ın E T . astfel de salturi apar cu mare probabilitate. s a La temperaturi ˆ ınalte. se poate interpreta c˘lirea In a a (intilnit˘ traditional ˆ prelucrarea metalelor ˆ a ¸ ın ın fier˘riile cu forj˘ . atomii se apropie gradual a a de o dispunere laticeal˘ regulat˘ ¸i numai ocazional ˆsi a a s ı¸ m˘resc energia.

Atunci cnd se dore¸te minimizarea unei s functii f : D → R. a C˘lirea simulat˘ este o metod˘ computational˘ a a a ¸ a care imit˘ modul natural de determinare a unei a configuratii care minimizeaz˘ energia unui sis¸ a tem. D.ˆ consecint˘. iar functia ¸ ¸ f ca fiind energia acestuia. dE O variabil˘ fictiv˘ T . adic˘ probabilitatea de cre¸tere a energiei scade a s odat˘ cu temperatura. a 353 . asociat˘ procesului de a a a c˘utare. va juca rolul temperaturii iar constanta a lui Bolzmann va fi considerat˘ 1. ca fiind multimea ¸ ¸ ¸ configuratiilor posibile ale sistemului. vom interpreta domeniul ¸ de definitie al functiei. probabilitatea ca energia s˘ fie In ¸a a E + dE poate fi exprimat˘. a P r(E + dE) = P r(E) · e− kT .

nc + +} } } decrease(T ) } 3. maxim de ˆ ıncerc˘ri de ˆ a ımbun˘t˘¸ire a solutiei a at ¸ la fiecare prag de temperatur˘ attempts a . If ∆E < 0 then { xold ← xnew .nr.configuratia initial˘ xstart ∈ D ¸ ¸ a . a ¸ a ∆E ← f (xold ) − f (xnew ).Algoritm de c˘lire simulat˘ a a 1. na + +. Se consider˘ un plan de c˘lire: a a . a 2.o functie de reducere lent˘ a temperaturii ¸ a decrease (T) . xold ← xstart while T > Tmin do { na ← 0.nr.temperatura initial˘ Tstart ¸ a . 1) un nr.temperatura final˘ Tmin a . T ← Tstart. maxim de schimb˘ri ale solutiei a ¸ la fiecare prag de temperatur˘ changes. return xold 354 . nc + +} else { genereaz˘ q ∈ (0. aleator a − ∆E if q < e T then { xold ← xnew . nc ← 0 while na < attempts and nc < changes do { genereaz˘ o solutie nou˘ xnew .

se porne¸te cu un s tur ales aleator. changes = 10n. a ın la un anumit nivel de temperatur˘ . decrease(T ) = 0. a √ Se poate lua Tstart = O( n). Modul ˆ care se permite. attempts = 100n. 355 .95T ¸i Tmin = s O(1).Planul de c˘lire se stabile¸te adeseori prin exa s perimente (tuning ) asupra clasei de probleme la care se aplic˘. Pentru aplicarea c˘lirii simulate pentru rezolvarea a problemei comisului voiajor. ca unele a solutii noi care nu mic¸oreaz˘ valoarea functiei ¸ s a ¸ s˘ fie considerate (cu scopul p˘r˘sirii minimelor a a a locale) poart˘ denumirea inventatorului : schema a Metropolis. iar trecerea de la o solutie ¸ curent˘ la o solutie vecin˘ ˆ spatiul solutiilor se a ¸ a ın ¸ ¸ realizeaz˘ de obicei cu ajutorul unei 2-move.

E) un graf ¸i S o suprafat˘ ¸ s ¸a ˆ R3. Spunem c˘ G este reprezentabil pe S ın a ıncˆ dac˘ exist˘ G = (V . s ın Dac˘ S este un plan atunci G se nume¸te plaa s nar iar G o reprezentare planar˘ a lui G. a Dac˘ S este un plan ¸i G este un graf care a s satisface b) c) ¸i d) de mai sus atunci G se s nume¸te graf plan. ¸ a ın s a at d) Orice punct al lui S este sau vˆ al lui G . GRAFURI PLANARE 1. Fie G = (V. Propriet˘¸i de baz˘ ale grafurilor planare at a Definitie. ¸ b) V e o multime de puncte distincte din S. G se nume¸te reprezentare a lui G ˆ S. a a c) Orice muchie e ∈ E este o curb˘ simpl˘ continut˘ ˆ S care une¸te cele dou˘ extremit˘¸i. ırf sau prin el trece cel mult o muchie a lui G . E ) un graf astfel ˆ ıt: a a ∼ a) G = G . s 356 .VIII.

φ(M ) cel de-al doilea punct de intersectie al dreptei M y cu sfera S. Fie G planar ¸i G o reprezentare ¸ s planar˘ a sa ˆ planul π. 1. a Definim φ : π → S considerˆ ınd pentru orice punct M al planului π. a a Demonstratie. s a a ın Fie y punctul diametral opus al lui x pe sfer˘.Lem˘. a y S G’ pi x 357 . Un graf este planar dac˘ ¸i numai a a s dac˘ este reprezentabil pe o sfer˘. Consider˘m un punct a ın a x al lui π ¸i S o sfer˘ tangent˘ la π ˆ x. ¸ Evident φ este o bijectie ¸i deci φ(G ) este ¸ s reprezentarea lui G pe sfer˘ (φ este proiectia a ¸ stereografic˘).

se consider˘ a a punctul x diametral opus lui y pe sfer˘. se cona struie¸te un plan tangent π sferei S ˆ punctul s ın x ¸i se define¸te ψ : S → π considerˆ s s ınd pentru orice punct M al sferei. ¸ Evident. Dac˘ ˆ ¸ a ındep˘rt˘m a a punctele lui G (vˆ ırfurile ¸i muchiile sale) din s plan se obtine o reuniune de regiuni conexe ¸ (orice dou˘ puncte se pot uni printr-o curb˘ a a simpl˘ continut˘ ˆ regiune) ale planului. dac˘ G este reprezentabil pe o sfer˘ a a S: se alege un punct y pe sfer˘. Imaginea prin ψ a reprezent˘rii lui G pe sfer˘ va fi o reprezentare a a planar˘ a lui G.Reciproc. dintre care una singur˘ este nem˘rginit˘ ¸ a a a ¸i se nume¸te fat˘ exterioar˘ a lui G. ψ(M ) intersectia ¸ dreptei yM cu planul π. s s ¸a a 358 . orice graf plan are un num˘r finit de a fete. care a ¸ a ın se numesc fetele lui G. a Definitie. Fie G un graf plan.

ˆ aceast˘ s a a ın a definitie se impune ca graful sa fie 2-conex. a ¸ Un graf plan. ˆ ımpreun˘ cu multimea fetelor a ¸ ¸ sale se nume¸te hart˘ planar˘ (uneori. ¸ atunci fetele h˘rtii planare se numesc ¸˘ri ¸i ¸ a¸ ta s dou˘ ¸˘ri sˆ a ta ınt vecine dac˘ frontierele lor au a m˘car o muchie comun˘. deci orice muchie a ın a unui circuit al grafului G se afl˘ ˆ frontierele a ın a dou˘ fete. a¸ Unui graf planar i se pot asocia reprezent˘ri a planare diferite. ˆ figura al˘turat˘ sˆ desenIn a a ınt ate trei reprezent˘ri planare diferite ale aceluia¸i a s graf: 359 . ¸ Orice circuit al lui G ˆ ımparte punctele planului ˆ dou˘ regiuni conexe. aceasta corespunde a a aspectelor intuitive de la h˘rtile geografice).Frontiera unei fete este multimea muchiilor lui ¸ ¸ G continute ˆ ˆ ¸ ın ınchiderea acestei fete.

de exemplu. a ¸ a Demonstratie: Fie G o reprezentare planar˘ a lui G ¸i F ¸ a s a a o fat˘ a lui G . ın Graful plan ¸ ¸ a G astfel obtinut va avea fata exterioar˘ φ(F 0) care are aceea¸i frontier˘ cu fata F din reprezentarea G . Alegem un punct ¸a y din interiorul fetei F 0. Orice reprezentare planar˘ a unui a a graf poate fi transformat˘ ˆ a ıntr-o reprezentare diferit˘ astfel ˆ ıt o fat˘ specificat˘ a sa s˘ a ıncˆ ¸a a a devin˘ fata exterioar˘. 2. consider˘m x punctul diametral ¸ a opus pe sfer˘ lui y ¸i efectu˘m proiectia stereografic˘ a s a ¸ a φ pe planul tangent sferei ˆ punctul x. s a ¸ 360 .1 5 f4 8 f3 4 f5 6 f2 f1 7 3 8 5 f4 4 2 1 6 6 f4 2 f5 f3 f1 f1 3 f2 7 7 8 1 2 5 4 f3 3 f2 f5 Un instrument util ˆ caracterizarea ¸i recunoa¸terea ın s s grafurilor planare este urm˘toarea observatie: a ¸ Lem˘. ca ˆ lema 1) ¸i fie a ın s ¸ a ¸ a F 0 fata corespunz˘toare a lui F (proiectia stereografic˘ transform˘ orice fat˘ tot ˆ a ¸a ıntr-o fat˘). Consider˘m G0 o reprezentare pe sfer˘ ¸a a lui G (construit˘.

rezult˘ c˘ G este arbore. Dac˘ f = 1. Rezult˘ c˘ e apartine a ¸a a a ¸ frontierei a exact dou˘ fete ale lui G. s s a a deci m = n − 1 ¸i prin urmare teorema are loc. 1. Evident G1 este graf plan. m muchii ¸i f fete. Exist˘ m˘car o muchie e. a a Teorem˘. (Formula lui Euler) Fie G = a (V. E) un graf plan conex cu n vˆ ırfuri. Acest lucru este mai bine precizat de ¸ urm˘toarea teorem˘. care ¸ a a nu este punte (altminteri G ar fi arbore ¸i ar s avea o singur˘ fat˘). Cona ¸ sider˘m G1 = G − e. Din alegerea lui e. presupunem teorema adev˘raIn a t˘ pentru orice graf plan ¸i conex cu mai putin a s ¸ de f (≥ 2) fete. s ˆ pasul inductiv. atunci G nu are circuite a ¸i cum este ¸i conex. G1 a este conex. Atunci s ¸ f =m−n+2 Demonstratie: Inductie dup˘ num˘rul fetelor ¸ ¸ a a ¸ lui G.Este aproape evident c˘ orice dou˘ reprezent˘ri a a a planare ale acelui¸i graf au acela¸i num˘r de s s a fete. 361 .

¸ a Figura urm˘toare contine grafurile planare asoa ¸ ciate poliedrelor platonice: 362 . a a Observatii: 10 Oric˘rui poliedru convex din ¸ R3 i se poate asocia un graf planar cu acela¸i s num˘r de vˆ a ırfuri ¸i muchii (se reprezinta vˆ s ırfurile ¸i muchiile poliedrului pe o sfer˘ ¸i se execut˘ s a s a proiectia stereografic˘). Pentru G1 are loc ipoteza inductiv˘. Substituind valorile lui f1. adic˘ f = m − n + 2. ˆ plus G1 are n1 = n vˆ ¸a ın ırfuri ¸i m1 = m−1 s muchii. deci f1 = a m1 − n1 + 2. m1 ¸i n1 se obtine s ¸ f − 1 = (m − 1) − n + 2.Num˘rul fetelor lui G1 este f1 = f − 1 (cele a ¸ a dou˘ fete ale lui G vor genera ˆ G1 o singur˘ a ¸ ın fat˘).

Tetraedrul Hexaedrul (Cubul) Octoedrul Dodecaedrul Icosaedrul Steinitz ¸i Rademacher (1934) au ar˘tat c˘ un s a a graf planar este graful asociat unui poliedru convex dac˘ ¸i numai dac˘ este 3-conex. s 363 . este cunoscut˘ ca formula poliea dral˘ a lui Euler ¸i precizeaz˘ num˘rul fetelor a s a a ¸ poliedrului convex ˆ functie de num˘rul vˆ ın ¸ a ırfurilor ¸i muchiilor sale. Relatia as a ¸ din teorema 1.

1.20. teorema 1 are drept consecint˘ imediat˘ faptul c˘ orice ¸a a a graf planar este ”rar”. Fie G un graf planar. cu n(≥ 3) vˆ ırfuri ¸i m > 2 muchii. atunci G a a ¸a este arbore. Fie G o reprezentare planara ¸ a lui G. Demonstratie. num˘rul muchiilor este a de ordinul num˘rului de vˆ a ırfuri. Din punct de vedere algoritmic. Orice circuit al ¸ a ¸ grafului are m˘car 3 muchii. Daca G are m˘car dou˘ fete. deci a 364 . Va rezulta c˘ a orice traversare ˆ ordinul O(|V | + |E|) a lui G ın este de fapt ˆ O(|V |) operatii. Dac˘ G are o singur˘ fat˘. m = n−1 (G are acela¸i num˘r de s a vˆ ırfuri ¸i muchii ca ¸i G). ¸i pentru n ≥ 3 ines s s galitatea are loc. Atunci s m ≤ 3n − 6. conex. a a ¸ atunci fiecare fat˘ F are ˆ frontier˘ muchiile ¸a ın a unui circuit C(F ). ın ¸ Corolar. ¸i fiecare astfel de muchie s apartine la exact dou˘ fete.

atunci m ≤ 2n − 4. a ¸ Corolar. C(F )) ≥ ¸a ın F 3 = 3f = 3(m − n + 2). Dac˘ G este un graf bipartit. a atunci G are un vˆ de grad cel mult 5. inegalitate. cu observatia c˘ orice circuit are m˘car 4 muchii ¸ a a pentru c˘. num˘rul muchia a ilor oric˘rui circuit este par. 3. 2. a conex ¸i planar cu m > 2 muchii ¸i n vˆ s s ırfuri. graful fiind bipartit. a Corolar. evident. echivalent˘ cu cea din enunt. Dac˘ G este un graf planar conex. ¸ s ¸ Demonstratie: Acela¸i rationament ca mai sus. ırf 365 .2m ≥ F fat˘ ˆ G (nrul muchiilor circ.

366 . atunci n−1 i=1 i· ni = 2m ≤ 2(3n − 6) = 6( i ni ) − 12. rezult˘ c˘ exist˘ i0. deci (i − 6)ni i + 12 ≤ 0 Cum pentru i ≥ 6 toti termenii sumei sˆ ¸ ınt a a a nenegativi. Observatie: Grafurile K5 ¸i K33 nu sˆ planare. ceea ce trebuia demonıncˆ strat. astfel ˆ ıt ni0 > 0. ¸ s ınt Primul graf violeaz˘ inegalitatea din corolarul a 1. not˘m s a cu ni num˘rul vˆ a ırfurilor de grad i (1 ≤ i ≤ n − 1) din G . 1 ≤ i0 ≤ 5.Demonstratie: Dac˘ G are mai mult de 2 muchii ¸ a aplic˘m consecinta 1 astfel: fie G o reprezentare a ¸ planar˘ a lui G cu n vˆ a ırfuri ¸i m muchii. cel de al doilea pe cea din corolarul 2.

dac˘ ¸i numai a a a as dac˘ h∗(G) este planar. w1 = w2. dac˘ w1w2 ∈ ırf a E(G). vw2 ∈ E. ˆ una din fetele reprezent˘rii planare a ın ¸ a lui h(G) se plaseaz˘ ”suficient” de aproape de a curba w1w2 un vˆ nou v ¸i se ”une¸te” cu ırf s s w1 ¸i w2. E) un graf ¸i v ∈ V (G) astfel s s ˆ ıt dG(v) = 2 ¸i vw1. s s ¸ ınduVom nota cu h∗(G) graful obtinut din G aplicˆ i repetat transformarea h. ˆ reprezentarea planar˘ s ın a a lui G ¸tergem punctul v ¸i cele dou˘ muchii s s a vw1 ¸i vw2 le ˆ s ınlocuim cu reuniunea lor. a (Dac˘ w1w2 ∈ E(G) atunci pe curba simpl˘ ce a / a s ıntr-o reprezentare planar˘ a lui a une¸te w1 ¸i w2 ˆ s h(G) se introduce un nou vˆ v. Reciproc. Se observ˘ c˘ G este planar dac˘ ¸i a a a s numai dac˘ h(G) este planar. vw2} ∪ a {w1w2}). E \ {vw1.Fie G = (V. Dac˘ a w1w2 ∈ E(G) atunci se ¸terge ¸i curba w1w2). pˆ a cˆ graful curent ın˘ ınd nu mai are vˆ ırfuri de grad 2. Din observatia an¸ terioar˘ rezult˘ c˘ G este planar. ıncˆ Consider˘m h(G) = (V \ {v}. a 367 .

ınd Suficienta se demonstreaz˘ prin inductie dup˘ ¸ a ¸ a num˘rul de muchii. a a s contrazicˆ alegerea lui G. as a Teorem˘. Dac˘ ar exista un subgraf G al lui G a homeomorf cu K33 sau K5. (Kuratowski 1930) Un graf este a planar dac˘ ¸i numai dac˘ nu are subgrafuri a s a homeomorfe cu K5 sau K33. Necesitatea teoremei este evident˘: dac˘ un a a graf este planar atunci orice subgraf al s˘u este a planar. Dou˘ grafuri G1 ¸i G2 se numesc ¸ a s ∼ homeomorfe dac˘ ¸i numai dac˘ h∗(G1) = h∗(G2). 2. cum aceste dou˘ a grafuri am ar˘tat c˘ nu sˆ a a ınt planare ¸i cum s h∗(G ) este planar dac˘ ¸i numai dac˘ G este a s a planar rezult˘ c˘ G ¸i deci G nu este planar. a 368 .Definitie.

cu linii poligonale. astfel ˆ ıt s˘ nu se violeze ıncˆ a conditia de planaritate. Desenarea unui graf planar Fie G un graf planar.2. un ¸ s rezultat mai tare demonstrat de Fary ˆ 1948 ın (¸i independent de Wagner ¸i Stein): s s Orice graf planar are o reprezentare planar˘ cu a toate muchiile segmente de dreapt˘ a (reprezentarea Fary). totu¸i. 369 . Aceast˘ teorem˘ a deschis o serie de rezula a tate referitoare la desenarea grafurilor planare. este desigur important s˘ se demonstreze existenta unei a ¸ reprezent˘ri Fary cu vˆ a ırfuri ˆ puncte de coın ordonate ˆ ıntregi. Este aproape evident c˘ se pot ın a aproxima curbele simple ce unesc vˆ ırfurile. Se pune problema tras˘rii a lui ˆ plan. ¸i ˆ acela¸i timp aria suprafetei s ın s ¸ ocupate de reprezentare s˘ fie polinomial˘ ˆ a a ın raport cu num˘rul n de vˆ a ırfuri ale grafului. Are loc. care permite pozitionarea ¸ ˆ puncte de coordonate ˆ ın ıntregi ¸i trasarea de s segmente ce unesc aceste puncte. Pentru un mediu grafic.

370 . 3.Descriem unul dintre rezultatele de acest tip: Teorem˘. ¸ a Lem˘. 3. Pollack (1988)) a Orice graf planar cu n vˆ ırfuri are o reprezentare planar˘ cu vˆ a ırfuri de coordonate ˆ ıntregi ˆ ın [0. 2n − 4] × [0. Pach. Dac˘ C este un circuit al a a lui G ce trece prin muchia uv ∈ E(G ) atunci exist˘ w ∈ V (C ) astfel ˆ ıt w = u. Fie G un graf planar ¸i G o reprezena s tare planar˘ a sa. v ¸i w nu a ıncˆ s este extremitatea nici unei corzi interioare a lui C. Not˘m c˘ demonstratia care urmeaz˘ poate fi a a ¸ a baza unui algoritm de complexitate O(n log n) pentru obtinerea acestei reprezent˘ri. (Fraysseix. n − 2] ¸i cu muchii segmente de s a dreapt˘.

v2.. vn = v). vn vˆ ¸ ırfurile circuitului C ˆ ıntr-o parcurgere a sa de la u la v a (v1 = u. j) astfel ˆ ıt vivj este coard˘ inıncˆ a terioar˘ a lui C ¸i a s j−i = min{k−l | k > l+1.. a a Atunci vi+1 nu e incident cu nici o coard˘ ina terioar˘ (vi+1vp cu i + 1 < p < j nu e coard˘ a a interioar˘ c˘ci s-ar contrazice alegerea perechii a a (ij) ¸i vi+1vl cu l < i sau l > j. at vi+1 v i vj v =u 1 v = v n 371 . nu este coard˘ s a interioar˘ datorit˘ existentei coardei vivj ¸i a a a ¸ s planarit˘¸ii). Dac˘ C nu are corzi interioare lema este demonstrat˘. vk vl ∈ E(G ). Altfel. alegem a perechea (i..Demonstratie: Fie v1. . vk vl coard˘ interioar˘ }.

vn astfel ˆ ıt v1 = ıncˆ u. muchiile fictive ¸ introduse nu se vor trasa. . v2 = v.Vom demonstra teorema 4 ˆ ipoteza supliın mentar˘ c˘ G este maximal planar : a a orice muchie i s-ar ad˘uga se obtine un graf neplaa ¸ nar (sau multigraf).. v2. a Lem˘. Ipoteza nu este restrictiv˘: de la o reprezentare a a lui G ca o hart˘ planar˘ (ce se obtine aplicˆ a a ¸ ınd de exemplu algoritmul de testare a planarit˘¸ii) at se trece la o hart˘ cu toate fetele triunghiului a ¸ prin insertia ˆ timp liniar de corzi ˆ circuite. vn = w ¸i pentru orice k. Fie G maximal planar cu n ≥ 4 vˆ ırfuri ¸i G o reprezentare planar˘ a sa cu s a fata exterioar˘ u. S˘ observ˘m c˘ orice fat˘ a unui graf maximal a a a ¸a planar este un C3 (altminteri ˆ reprezentarea ın lui G cu fata exterioar˘ m˘rginit˘ de un Cn cu ¸ a a a n ≥ 4 se pot introduce muchii f˘r˘ a pierde a a planaritatea grafului). v. 4. Exist˘ o etichetare a ¸ a a vˆ ırfurilor lui G : v1.. w. 4 ≤ k ≤ n s avem: 372 .. ¸ ın ın La desenarea grafului obtinut.

vn = w. . a a s 373 . vk−1} a s k este un drum de lungime ≥ 1 de pe circuitul Ck−1 \ uv. .1 v =u 1 v =v 2 Rezult˘ c˘ pentru k = n (i) ¸i (ii) au loc. ırful vk este ˆ fata exın ¸ (ii) ˆ subgraful Gk .( i) subgraful Gk−1 = [{v1. . . Demonstratie: Fie v1 = u. . vk−1}]G . . . Gn = ¸ a a a G. este 2-conex ¸i fata sa exterioar˘ este determinat˘ s ¸ a a ¸ de circuitul Ck−1 ce contine uv. . pen¸ tru a demonstra aceasta s˘ ordon˘m NG (w) a a dup˘ abscisele vˆ a ırfurilor ¸i s˘ folosim planaris a tatea maximal˘). a vn =w vk Ck . v2 = v. Gn−1 = G−vn. S˘ observ˘m c˘ NGn (vn) este un circuit ce contine uv (este suficient. vˆ ın terioar˘ a lui Gk−1 ¸i NG (vk ) ∩ {v1.

se observ˘ c˘ Gk−2 va contine a a a ¸ at s un circuit Ck−2 cu propriet˘¸ile (i) ¸i (ii).Dac˘ vk a fost ales (k ≤ n) atunci ˆ Gk−1 = a ın a G − {vn. v2 ¸i vn ¸i apoi cons s siderˆ ınd pentru fiecare k k ≥ 3 un vˆ vk cu ırf s proprietatea c˘ arcele cu o extremitate vk ¸i a cealalt˘ ˆ {v1. Not˘m c˘ etichetarea precizat˘ ˆ lema 4 se a a a ın poate construi ˆ O(n) considerˆ o reprezentare ın ınd a lui G cu liste de adiacent˘ ordonate circular. vk−1} formeaz˘ un segment a ın a ¸ continuu ˆ lista circular˘ a lui A(vk ) (existenta ın a unui asemenea vˆ fiind asigurat˘ de lema 4 ). Din lema 3. . rezult˘ c˘ a exist˘ vk−1 pe Ck−1 astfel ˆ ıt vk−1 nu este a ıncˆ incident cu o coard˘ interioar˘ a lui Ck−1 . . vk } vecinii lui vk determin˘ un circuit Ck−1 ce contine uv ¸i m˘rgine¸te fata ex¸ s a s ¸ a a terioar˘ a lui Gk−1. . . rezult˘ c˘ vk−1 nu este in¸ a a s cident nici cu corzi exterioare lui Ck−1 ¸i cu aceast˘ alegere. ırf a 374 . ¸a prin fixarea vˆ ırfurilor v1. a a Din constructie. . . . .

v2. A¸a cum am mai ¸ s observat. . wm = v2) atunci x w1 < x w2 < . cu vˆ a ırfurile v1. v2 s are coordonatele xv2 = i ≤ 2k − 4. vn. w ¸i etichetarea vˆ a s ırfurilor satisface conditiile din lema 4. . wm sˆ vˆ a ınt ırfurile circuitului ce m˘rgine¸te fata exterioar˘ a lui Gk ˆ ora s ¸ a ın dinea parcurgerii lor de la v1 la v2(w1 = v1. ¸i ˆ plus sˆ s ın ınt satisf˘cute conditiile: a ¸ (1) v1 are coordonatele xv1 = 0 ¸i yv1 = 0. . fata ¸ exterioar˘ u. se poate presupune G maximal planar cu n(≥ 4) vˆ ırfuri. . . . ˆ pasul k(≥ 3) al constructiei dispunem de o In ¸ astfel de reprezentare a lui Gk . . ¸ Vom construi o reprezentare Fary a lui G cu vˆ ırfurile puncte de coordonate ˆ ıntregi. Fie G o reprezentare planar˘ a lui G. v. w2. yv2 = 0. .Demonstratia teoremei 4. < x wm . (2) Dac˘ w1. . . 375 .

.(3) Muchiile w1w2. w2w3. wm−1wm sˆ segınt mente de dreapt˘ paralele cu prima sau a doua a bisectoare a axelor de coordonate. Conditia (3) asigur˘ c˘ ∀i < j dac˘ prin wi se ¸ a a a duce o paralel˘ la prima bisectoare ¸i prin wj a s o paralel˘ la a doua bisectoare. . . wq vecinii lui vk+1 ˆ Gk+1 (cf. Fie wp. wp+1.intersectia lor a ¸ este un punct de coordonate ˆ ıntregi. . . . . lemei 4) 1 ≤ p < q ≤ m. Construim Gk+1. . ın P w wp w 3 w 2 w = v1 =u 1 p+1 w p+2 wq-1 wq-2 wq w = v2=v m 376 .

duse prin wp ¸i wq ). Lu˘m vk+1 = P ¸i pasul k al constructiei a s ¸ este terminat. satisf˘cˆ conditiile a ınd ¸ (1) (2) ¸i (3). segmentele wiwi+1 cu i = q. atunci putem lua vk+1 = P ¸i obtinem reprezentarea Fary pentru Gk+1 cu ¸ vˆ ırfuri de coordonate ˆ ıntregi. Efectu˘m apoi o translatie a ¸ cu o unitate la dreapta a tuturor vˆ ırfurilor cu a a a abscisa ≥ xwq . care au abscisa ≥ xwp+1 . S˘ observ˘m c˘ acum toate ınt segmentele P wi cu p ≤ i ≤ q sˆ distincte. Dac˘ din punctul P se pot trasa a segmentele P wi p ≤ i ≤ q astfel ˆ ıt ele s˘ ıncˆ a s fie distincte. s Dac˘ segmentul a wpwp+1 este paralel cu prima bisectoare. m − 1 au pantele ±1 ¸i s s de asemenea wpP ¸i P wq (unde P este punctul obtinut prin intersectia paralelelor la prima ¸ ¸ s (respectiv a doua) bisectoare. atunci transl˘m cu o unitate a la dreapta toate vˆ ırfurile grafului Gk . 377 .Paralela prin wp la prima bisectoare intersecteaz˘ a ıntr-un paralela prin wq la a doua bisectoare. ˆ punct P .

a a a ˆ versiunea combinatorial˘ un graf este un In a ¸ triplet G = (E.− ).versiunea combinatorial˘. poate fi organizat˘ astın a fel ˆ ıt s˘ nu necesite ˆ total O(n2) operatii ıncˆ a ın ¸ ci numai O(n log n). unde E este o multime ¸ de cardinal par. Cu ¸ ınt a aceasta teorema este demonstrat˘. 378 . 3. Grafuri plane . utilizˆ structuri convenınd abile de date. ¸i θ este a a s o permutare pe E. − este o involutie pe E (permutare de ordin 2) f˘r˘ puncte fixe. a S˘ observ˘m c˘ determinarea vˆ a a a ırfurilor care se vor transla ˆ pasul k.(3) sˆ evident satisf˘cute. θ.Conditiile (1). a Vom considera ˆ cele ce urmeaz˘ doar grafuri ın a conexe cu m˘car dou˘ vˆrfuri.

Elementele lui E sunt gˆndite ca arce. ¸ a ¸ Se dore¸te ca aplicatia θ s˘ dea o orientare a s ¸ a muchiilor din jurul unui vˆrf (ˆ sens contrar a ın acelor de ceasornic). e ∈ E de arce. a a s 379 . (Un ciclu a a al permut˘rii θ este o submultime nevid˘ a lui a ¸ a Eˆ ınchis˘ ˆ raport cu θ ¸i minimal˘ cu aceast˘ a ın s a a proprietate). Dac˘ not˘m cu V multimea ciclilor permut˘rii a a ¸ a θ atunci definim t : E → V prin t(e) = unicul ciclu al lui θ ce contine ¸ e (extremitatea initial˘ a arcului e) ¸ a t : E → V prin t(e) = unicul ciclu al lui θ ce contine ¸ e (extremitatea final˘ a arcului e) a Se observ˘ c˘ ∀e t(e) = h(e) ¸i h(e) = t(e). Aplicatia − inverseaz˘ directia. Vˆrfurile sunt ciclii permut˘rii θ. inverse unul altuia. o muchie a (neorientat˘) este reprezentat˘ ca o pereche a a e.

a O component˘ conex˘ a lui G este o orbit˘ a lui E a a a ˆ grupul de permut˘ri generat de θ ¸i − : o multime ın a s ¸ nevid˘ minimal˘ cu proprietatea c˘ este ˆ a a a ınchis˘ la a −. cele dou˘ notiuni de grafuri plane coincid ¸ a a ¸ (graful neorientat construit a¸a cum am descris mai sus s ata¸at unui graf ˆ form˘ combinatorial˘ este graf plan s ın a a conform definitiei traditionale ¸i invers. mut˘rii θ a Intuitiv.Dac˘ vom considera permutarea θ∗ : E → E definit˘ de a a ¸a θ∗ (e) = θ(e). invers˘m e pentru a a obtine e ¸i apoi ne rotim (ˆ sensul acelor de ceasor¸ s ın a ¸ nic) ˆ jurul extremit˘¸ii initiale a lui e. θ ¸i s Fie G un graf cu m = 1 |E| muchii (neorientate). Num˘rul fetelor ın at ¸ lui G se noteaz˘ cu f . ¸ ın ¸ 380 . pentru a calcula θ∗ (e). s a Se poate demonstra c˘ pentru un graf conex ˆ definitia a ın ¸ traditional˘. ¸i c componente conexe. atunci o fat˘ a lui G este un ciclu al per∗. Caracteristica a ¸ s Euler a lui G se define¸te ca fiind s χ(G) = 2c + m − n − f. Un graf G se nume¸te graf plan dac˘ χ(G) = 0. ¸ ¸ s dac˘ pentru un graf traditional plan conex se construie¸te a ¸ s θ conform unei orient˘ri inverse acelor de ceasornic a a − corespunz˘toare. n = |V | 2 vˆrfuri. graful combinatorial muchiilor ¸i s a obtinut este plan ˆ noua definitie). f fete.

E) dualul s˘u ¸i a s E ⊆ E.4. E) este un graf plan ¸ a maximal (cu toate fetele triunghiuri) atunci ¸ dualul s˘u este graful G∗ = (V ∗. 1. E − E ) este arbore a s a partial al lui G∗. Teorema separatorului Definitie Dac˘ G = (V. Fie G = (V. E ) este arbore partial al lui ¸ G dac˘ ¸i numai dac˘ (V ∗. Atunci (V. E) unde V ∗ a sunt fetele grafului G iar muchiile lui G∗ se ¸ obtin din muchiile grafului G. asociindu-i fiec˘rei ¸ a muchii e ∈ E cele dou˘ fete ˆ frontira c˘rora a ¸ ın a se afl˘ e. a G G* Lem˘. ¸ 381 . G∗ = (V ∗. E) este un graf plan a maximal conex .

Exist˘ o a a partitie a lui V (G) ˆ clasele disjuncte A. Consider˘m graful conex ¸i de ¸ a s asemenea consider˘m c˘ dispunem de o reprezena a tare planar˘ (obtinute cu un algoritm liniar). a ¸ ın Demonstratie. B. |S ≤ 4 n. S ¸ ın astfel ˆ at: ıncˆ 1.Teorem˘. 1979) a Fie G un graf planar cu n vˆrfuri. |B| ≤ 2 n. S separ˘ A de B ˆ G: G − S nu are muchii a ın cu o extremitate ˆ A ¸i cealalt˘ ˆ B. |A| ≤ 2 n. (Tarjan & Lipton. 1. a ¸ Alegem un vˆrf s ¸i execut˘m o parcurgere bfs a s a din s numerotˆnd vˆrfurile (ˆ ordinea ˆ alnirii a a ın ıntˆ lor ˆ aceast˘ parcurgere) ¸i atribuind fiec˘rui ın a s a vˆrf v nivelul s˘u ˆ arborele bfs construit. a a ın 382 . 3 3 √ 3. Aceast˘ partitie se poate afla ˆ timpul O(n). ın s a ın 2.

La fel. Fie t1 nivelul de la mijloc. Evident. 2. t<t1 t>t1 2 2 √ Dac˘ ¸i L(t1) ≤ 4 n. Multimea L(t1) are o parte din pro¸ 2 priet˘¸ile separatorului pe care ˆ c˘ut˘m: at ıl a a n n ∪ L(t) < ∪ L(t) < . ıncˆ s Se alege t0 cel mai mare num˘r cu propriet˘¸ile t0 ≤ t1 ¸i a at s √ |L(t0)| ≤ n (exist˘ un astfel de nivel pentru c˘ |L(0)| = a a 1). adic˘ nivelul ce a contine vˆrful numerotat bfs cu num˘rul de ¸ a a ordine n . 0 ≤ t ≤ l + 1 multimea ¸ vˆrfurilor de pe nivelul t (nivelul l + 1 va fi ina trodus ˆ scopuri tehnice ¸i este vid. Exist˘ nivelele t0 ≤ t1 ¸i t2 > t1 a. a s Lem˘.Vom nota cu L(t). altfel a a am avea mai mult de n vˆrfuri ˆ graf. a a s √ √ √ ˆ at |L(t0)| ≤ n. s √ Orice nivel strict ˆ ıntre t0 ¸i t2 are mai mult de n vˆrfuri s a √ deci num˘rul acestor nivele este mai mic decˆt n. |L(t2)| ≤ n ¸i t2 − t0 ≤ n. fiecare nivel este un separator ˆ G ın (avem muchii doar ˆ ıntre nivele consecutive). exist˘ t2 un cel mai mic num˘r astfel ˆ at a a ınc √ t2 > t1 ¸i |L(t2)| ≤ n (de aceea s-a luat |L(l + 1)| = 0). teorema are loc. a ın 383 . ultimul ın s nivel este de fapt l).

384 .Consider˘m a C = ∪t<t0 L(t). D. D = ∪t0<t<t2 L(t). E ¸i B reuniunea celors lalte dou˘ (nu uit˘m c˘ C ¸i E au cel mult n a a a s 2 elemente). E = ∪t>t2 L(t). A multimea cu cele mai multe ¸ elemente dintre C. t1 t0 t 2 s C D E Dac˘ |D| ≤ 2 n atunci teorema are loc cu S = a 3 L(t0 ) ∪ L(t2 ).

atunci a ˆ vom ad˘uga la L(t0 ) ∪ L(t2 ) pentru a obtine ıl a ¸ √ un separator de cardinal cel mult 4 n.Consider˘m deci c˘ n1 = |D| > 2 n. Graful obtinut ˆ not˘m cu D ¸i este ın ¸ ıl a s evident planar ¸i conex. Vom ¸terge toate vˆrfurile grafului care nus a s ˆ D cu exceptia lui s pe care-l unim cu toate ın ¸ vˆ ırfurile de pe nivelul t0 + 1 (primul nivel r˘mas a ˆ D). s a ın a 385 . reunim multimea cu cel mai mare num˘r de elemente ¸ a dintre C ¸i E cu partea mic˘ r˘mas˘ din D s a a a pentru a obtine A. a a 3 Dac˘ vom g˘si un separator de tipul 1 ↔ 2 pena a 3 3 √ tru D cu cel mult 2 n vˆrfuri. atunci . s ¸ Ne ocup˘m de constructia separatorului pentru a ¸ D. iar partea mare r˘mas˘ ˆ ¸ a a ın D o reunim cu cealalt˘ multime (mic˘ ) dintre a ¸ a C ¸i E pentru a obtine B. ˆ plus are un arbore s In √ partial T de diametru cel mult 2 n (orice vˆrf ¸ a este accesibil din s pe un drum de lungime cel √ mult n a¸a cum am ar˘tat ˆ lem˘).

rezult˘ c˘ ¸epii vor sectiona un arbore a a t ¸ partial T ∗ al lui D∗. Putem presupune c˘ D este triangulat (altfel a se triangularizeaz˘ ˆ timp liniar). Exist˘ un unic drum de la t a u la v ˆ T care ˆ ın ımpreun˘ cu e determin˘ un a a circuit c(e). Muchiile lui D a ın care nu-s pe arborele T vor fi numite ¸epi. Din t lema 1. Construim a ın dualul s˘u D∗. Fie e = uv un ¸ep.Acest arbore se construie¸te simplu pornind de s la ultimul nivel ¸i ad˘ugˆnd pentru fiecare vˆrf s a a a o muchie incident˘ cu el ¸i cu cealalt˘ extrema s a itate pe nivelul precedent (nivelul 0 contine ¸ doar s). recursiv de la frunze ˆ sus: t ın 386 . Consider˘m o fat˘ a lui D ¸ a ¸a drept r˘d˘cin˘ a lui T ∗ ¸i consider˘m muchiile a a a s a a a a lui T ∗ orientate dinspre r˘d˘cin˘. Parcurgem ¸epii conform unei travers˘ri dfs a t a lui T ∗ calculˆnd urm˘toarele informatii pentru a a ¸ fiecare ¸ep. tot ˆ timp liniar.

. e u v x Cazul 1.|c(e)| = 3 (D e triangulat). . e este a ¸ t un ¸ep ˆ acela¸i triunghi ca ¸i e ¸i u este pe circuitul t ın s s s c(e).o reprezentare ca list˘ a lui c(e).|c(e)|. Suntem ˆ ıntr-o frunz˘ e a lui T ∗ (ce se detera min˘ num˘rˆnd vecinii). a a . ac. Avem calculat˘ informatia pentru ¸epul e = u v. Atunci: a a a . a a . rezult˘ testˆnd dac˘ u nu-i pe lista c(e ). v].num˘rul vˆrfurilor de pe circuitul c(e). a a a Atunci: 387 ..I(e) = 0.I(e).num˘rul vˆrfurilor din interiorul lui c(e). x. e u v u’ e’ ’ c (e ) Cazul 2.c(e) = [u. a Sunt posibile urm˘toarele patru cazuri (ce corea spund ˆ ıntoarcerilor din parcurgerea dfs).

e”. .I(e) = I(e ).c(e) = [u] · c(e ).I(e) = I(e ) + 1. . s 388 . . Atunci: a .|c(e)| = c(e ) + 1. ac. Avem calculat˘ informatia pentru ¸epii e = uy a ¸ t ¸i e” = yv iar e este un ¸ep ˆ acela¸i triunghi s t ın s ca ¸i e . rezult˘ testˆnd a a dac˘ u e pe lista c(e ).|c(e)| = c(e ) − 1.. u e’ p c (e ) ’ e v e" c (e " ) y x Cazul 4. e u v u’ e’ Cazul 3.c(e ) = [u]·c(e) (deci c(e) se obtine ¸tergˆndu¸ s a l pe u din lista c(e ). e este un ¸ep ˆ acela¸i triunghi ca ¸i e ¸i t ın s s s u nu este pe circuitul c(e). Avem calculat˘ informatia pentru ¸epul e = a ¸ t u v. .

3 3 Atunci se poate lua c(e) ca separator. Atunci: a a ın a . s s Calculul lui |p| ¸i reprezentarea lui c(e) se obtin s ¸ scanˆnd c(e ) ¸i c(e”) plecˆnd din y pˆn˘ ˆ alnim a s a a a ıntˆ ultimul vˆrf comun care este x. a 3 389 . iar cele din interior a drept cealalt˘ clas˘. vˆrfurile a din interior drept o clas˘.c(e ) = c · [x] · c” unde c este c(e ) cu p ¸ters s ¸i c” este c(e”) cu p ¸ters.I(e) = I(e ) + +I(e”) + |p| − 1 (toate vˆrfurile a lui p cu exceptia lui x sunt ˆ interiorul lui c(e)). a a R˘mˆne de ar˘tat c˘ exist˘ un ¸ep e astfel ˆ at a a a a a t ıncˆ 2n1 2n1 ∧ n1 − (I(e) + c(e)) ≤ . care satisface proa a a a prietatea c˘ I(e) + |c(e)| ≥ n1 . Aceasta nu a afecteaz˘ complexitatea de timp liniar˘. ¸ ın . . a a I(e) ≤ Fie e primul ¸ep ˆ alnit la ˆ t ıntˆ ıntoarcerea din frunzele lui T ∗ c˘tre r˘d˘cin˘.|c(e)| = c(e ) + c(e”) − 2|p| + 1.Fie p drumul comun al lui c(e ) ¸i c(e”) ¸i fie x s s cel˘lalt cap˘t al lui p ˆ afar˘ de y.

deci 3 ceea ce r˘mˆne de ar˘tat este c˘ I(e) ≤ 2n1 . 3 3 Cu aceasta teorema separatorului este complet a demonstrat˘. a 3 4. a a a a 3 2. I(e) = 0 ≤ 2n1 . 390 . Aceasta rezult˘ analizˆnd cazurile 1-4 de mai a a sus ˆ care s-a ajuns la e: ın 1. 3. deci e nu-i prima muchie cu proprietatea c˘ I(e) + |c(e)| ≥ n1 . I(e)+|c(e)| = I(e )+|c(e )|+1 < n1 +1 ≤ 2n1 3 3 (pentru n1 ≥ 3). I(e) + c(e) = I(e ) + I(e ) + |p| − 1 + c(e ) + c(e ) − 2|p| + 1 < 2n1 − |p| < 2n1 . 3 Ilustr˘m cum poate fi folosit˘ teorema separaa a torului ˆ ımpreun˘ cu o metod˘ de divide & ima a pera pentru a obtine algoritmi exacti cu com¸ ¸ portare subexponential˘ pentru probleme NP¸ a hard pe grafuri planare.Atunci multimea vˆrfurilor din exteriorul lui c(e) ¸ a este de cardinal n1 − (I(e) + |c(e)|) ≤ 2n1 . I(e) + c(e) = I(e ) + c(e ).

Consider˘m problema test˘rii dac˘ un graf plaa a a nar dat admite o 3-colorare a vˆrfurilor (proba lem˘ cunoscut˘ ca fiind NP-complet˘). a a a Pentru grafuri cu putine vˆrfuri (un num˘r con¸ a a stant c) se poate testa ˆ timpul O(3c) = O(1) ın dac˘ graful are o 3-colorare. a Pentru grafuri planare cu num˘rul n de vˆrfuri a a mai mare decˆt c, construim ˆ timp liniar O(n), a ın a¸a cum ne asigur˘ teorema separatorului, partis a ¸ia A, B, C a multimii vˆrfurilor sale cu |A|, |B| ≤ t ¸ a √ 2n ¸i |C| ≤ 4 n. 3 s
√ |C| = 2O( n) functii Pentru fiecare din cele 3 ¸

posibile definite pe C ¸i cu valori ˆ {1, 2, 3} s ın se testeaz˘ dac˘ este 3-colorare a subgrafului a a indus de C ¸i dac˘ poate fi extins˘ la o 3s a a colorare a subgrafului indus de A ∪ C ˆ G ¸i la ın s o 3-colorare a subgrafului indus de B ∪ C ˆ G ın (recursiv).
391

Timpul de lucru al acestui algoritm, T (n), va satisface recurenta ¸
O(1) √ √ O(n) + 2O( n)(O( n) + 2T ( 2n )) 3 dac˘ n ≤ c; a dac˘ n > c. a

T (n) =

√ O( n), destul de bun pentru Se obtine T (n) = 2 ¸

probleme de dimensiuni rezonabile.

Este posibil ˆ a ca notatia O(.) s˘ ascund˘ ıns˘ ¸ a a constante mari !

Exist˘ ¸i alte abord˘ri pentru obtinerea de ala s a ¸ goritmi performanti pentru problemele dificile ¸ pe grafuri planare. Descriem ˆ continuare una ın din ele.
392

Definitie O t-descompunere a unui graf G = ¸ (V (G), E(G)) este o pereche ({Xi |i ∈ V (T )}, T ), unde {Xi|i ∈ V (T )} este o familie de submultimi ale lui V (G) ¸i T este un ¸ s arbore, astfel ˆ at: ıncˆ 1. ∪i∈V (T )Xi = V (G); 2. ∀vw ∈ E(G) ∃i ∈ V (T ) astfel ˆ at v, w ∈ Xi; ıncˆ 3. ∀v ∈ V (G) multimea vˆrfurilor {i|v ∈ Xi } in¸ a duce un subarbore ˆ T . ın

L˘¸imea unei t-descompuneri {Xi|i ∈ V (T )} se at define¸te ca fiind maxi∈V (T )(|Xi | − 1). s

t-l˘¸imea unui graf G este l˘¸imea minim˘ a at at a unei t-descompuneri a lui G ¸i se noteaz˘ cu s a tw(G).
393

Definitie O b-descompunere a unui graf G = ¸ (V (G), E(G)) este o pereche (T, τ ), unde T este un arbore cu vˆrfurile de gradul 1 sau 3 a ¸i τ este o bijectie de la multimea vˆrfurilor s ¸ ¸ a pendante ale lui T la E(G). Ordinul unei muchii e a lui T este num˘rul a vˆrfurilor v ∈ V (G) astfel ˆ at exist˘ vˆrfurile a ıncˆ a a pendante t1, t2 ale lui T ˆ componente conexe ın s diferite ale lui T − e cu τ (t1) ¸i τ (t2) incidente cu v. Latimea b-descompunerii (T, τ ) este ordinul ¸ maxim al unei muchii a lui T . b-l˘¸imea unui graf G este l˘¸imea minim˘ at at a a unei b-descompuneri a lui G ¸i se noteaz˘ s a cu bw(G). (dac˘ |E(G)| ≤ 1 se define¸te ba s l˘¸imea lui G ca fiind 0; grafurile nule nu au at b-descompuneri; dac˘ |E(G)| = 1 atunci G are a o b-descompunere care const˘ dintr-un arbore a cu un nod, a c˘rui l˘¸ime se consider˘ 0). a at a
394

Teorem˘. 2. (Robertson & Seymour, ’90) a Pentru orice graf conex G cu E(G) ≥ 3 avem 3 bw(G) ≤ tw(G) + 1 ≤ bw(G). 2

Teorem˘. 3. (Fomin & Thilikos, 2003) a Pentru orice graf planar G avem

bw(G) ≤

4.5|V (G)| ≤ 2.122 |V (G)|.

Teorem˘. 4. (Fomin & Thilikos, 2003) a Fie Π o problem˘ de optimizare care este rea zolvabil˘ pe grafuri cu b-l˘¸imea cel mult l ¸i a at s ordinul n ˆ timpul f (l)g(n). Atunci pe grafurile ın planare de ordin n problema Π este rezolvabil˘ a √ ˆ timpul O(f (2.122 n)g(n) + n4). ın Demonstratia rezult˘ utilizˆnd teorema ante¸ a a rioar˘ ¸i un algoritm de complexitate O(n4) dat as de Robertson & Seymour pentru determinarea unei b-descompuneri optimale a unui graf.
395

De exemplu, se ¸tie c˘ problema determin˘rii s a a unei multimi stabile de cardinal maxim ˆ ¸ ıntr-un graf cu t-l˘¸imea l se poate rezolva ˆ timpul at ın O(2l n). Deci, pentru grafuri cu b-l˘¸imea cel at mult l se poate rezolva ˆ ın
3l O(2 2 n).

Obtinem c˘ problema determin˘rii unei multimi ¸ a a ¸ stabile de cardinal maxim ˆ ıntr-un √ graf planar se poate rezolva ˆ timpul O(23.182 nn + n4). ın

Timpii obtinuti sunt mai buni decˆt metodele ¸ ¸ a bazate pe teoremele de separare !

E N D

396

Seminarii
Setul de probleme 1
Problema 1. Un graf G se nume¸te rar dac˘ num˘rul s a a s˘u de muchii m este mai mic decit a
n2 , log n

unde n reprezint˘ a

num˘rul de virfuri. O justificare este aceea c˘ matricea a a ¸ de adiacent˘ A a grafului, care ocup˘ n2 locatii de mem¸a a
n orie, poate fi intotdeauna reprezentat˘ folosind O( log n ), a
2

locatii de memorie astfel incit r˘spunsul la o intrebare ” ¸ a A(i, j) = 1 ? ” s˘ se fac˘ in O(1). Descrieti o astfel de a a ¸ schem˘ de reprezentare. (4 puncte) a Problema 2. Diametrul unui graf este lungimea

a a a maxim˘ a unui drum de lungime minim˘ intre dou˘ virfuri ale grafului. Dou˘ virfuri care sunt extremit˘¸ile a at

unui drum minim de lungime maxim˘ in graf se numesc a diametral opuse. Demonstrati c˘ urm˘torul algoritm ¸ a a

determin˘ o pereche de virfuri diametral opuse intr-un a arbore T : • dintr-un virf oarecare se execut˘ o parcurgere BFS a a lui T ; fie u ultimul virf vizitat;din virful u se execut˘ o a
397

parcurgere BFS a lui T ; fie 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 r˘d˘cin˘. Un algoritm simplu de desenare a lui T poate a a a fi descris recursiv dupa cum urmeaz˘. a - Folosim ca suport o gril˘ (liniatura unui caiet de mate); a virfurile se plaseaz˘ in punctele de intersectie ale grilei. a ¸ - Desen˘m subarborele sting; Desen˘m subarborele drept. a a - Plas˘m cele dou˘ desene unul ling˘ altul la distant˘ a a a ¸a pe orizontal˘ doi ¸i cu r˘d˘cinile la aceea¸i in˘ltime. a s a a s a¸ - Plas˘m r˘d˘cina cu un nivel mai sus la jum˘tatea a a a a distantei pe orizontal˘ dintre cei doi copii. ¸ a - Dac˘ avem doar un copil plas˘m r˘d˘cina cu un nivel a a a a mai sus la distanta 1 fat˘ de copil (la stinga sau la ¸ ¸a dreapta dup˘ cum este acesta). a Descrieti cum se poate asocia pentru fiecare nod v al ar¸ borelui T (folosind algoritmul de mai sus) coordonatele (x(v), y(v)) reprezentind punctul de pe gril˘ unde va fi a desenat.(3 puncte)
398

Intr-o sesiune de examene s-au inscris n studenti care trebuie s˘ sustin˘ examene dintr-o multime ¸ a ¸ a ¸ de m discipline. se ¸ dore¸te ca toti studentii care dau examen la o disciplin˘ s ¸ ¸ a s˘ fac˘ acest lucru simultan. regulamena a tul de desf˘¸urare a examenelor interzice ca un student as s˘ dea dou˘ examene in aceea¸i zi. Pentru fiecare stua a s dent se dispune de lista disciplinelor la care dore¸te s˘ s a fie examinat. De asemenea. S˘ se descrie constructia unui graf G care s˘ ofere r˘spunsul a ¸ a a la urm˘toarele dou˘ intreb˘ri prin determinarea unor a a a parametri asociati (care se vor preciza): ¸ .Problema 4. Intrucit examenele se sustin in scris.care e num˘rul maxim de examene ce se pot organiza a in aceea¸i zi ? s .care e num˘rul minim de zile necesare organiz˘rii tua a turor examenelor? (3 puncte) 399 .

Fie G = (S.Setul de probleme 2 Problema 1. (2 puncte) c) Determinati toate grafurile autocomplementare cu ¸ cel mult 7 virfuri. . are ordinul n ¸i dimensiunea m. a) Demonstrati c˘ un graf autocomplementar este conex ¸ a si c˘ ordinul s˘u este multiplu de 4 sau multiplu de 4 a a plus 1. ⊇ NG (xp). T . (2 puncte) 400 . ıncˆ a) Demonstrati c˘ G este X-lant dac˘ ¸i numai dac˘ ¸ a ¸ a s a este X-lant . x2 . E) un graf bipartit ¸i s X ∈ {S. descrieti ¸a s ¸ un algoritm cu timpul O(n + m) care s˘ testeze dac˘ G a a este S-lant . . xp } (unde ¸ p = |X|) astfel ˆ at NG (x1) ⊇ NG (x2 ) ⊇ . T } − {X}.(2 puncte) b) Demonstrati c˘ pentru orice graf G exist˘ un graf ¸ a a autocomplementar H astfel incit G este subgraf indus in H. (2 puncte) ¸ b) Dac˘ G (bipartit) este reprezentat cu ajutorul listelor a de adiacent˘ . Un graf G se nume¸te autocomplementar dac˘ este izomorf cu complementul s˘u : G a a G. . unde X = {S. T }. . . Graful G se nume¸te X-lant dac˘ vˆrfurile s ¸ a a multimii X pot fi ordonate X = {x1 . (2 puncte) ¸ s Problema 2. .

O echip˘ de doi programatori L(azy) a ¸i T (hinky) prime¸te ca sarcin˘ s˘ determine un drum s s a a intre 2 noduri date. motivˆnd a s a c˘ intr-un astfel de graf nu pot exista prea multe drua muri intre dou˘ noduri fixate (sunt putine muchii ¸i deci a ¸ s putine posibilit˘¸i de ramificare. a a ¸ intr-un graf G dat. Ajutati-l pe L s˘ inteleag˘ contraexem¸ a ¸ a plul. Programatorul L propune ca solutie ¸ generarea (cu backtracking) a tuturor drumurilor dintre cele dou˘ noduri ¸i selectarea celui convenabil. care s˘ satisfac˘ anumite cerinte. intr-un arbore ¸ at exist˘ exact un drum intre orice dou˘ noduri fixate).. ar˘tind c˘ este rar ¸i estimind a a s num˘rul drumurilor de la x la y. a a Programatorul T nu-i de acord ¸i d˘ urm˘torul cons a a traexemplu: se consider˘ graful H = K2 × Pn−1 (n un a intreg mare). G. are propriet˘¸ile din problema ¸ at de rezolvat ¸i totu¸i num˘rul drumurilor de la x la y in G s s a este prea mare. iar cealalt˘ pereche s a de virfuri de grad 2 adiacente din H se une¸te cu un virf s nou y. de ex. graful obtinut. despre care se ¸tie c˘ este rar : s a |E(G)| = O(|G|). desenind graful G.Problema 3. (2 puncte) a 401 . o pereche de virfuri de grad 2 adiacente din H se une¸te cu un virf nou x.

(2 puncte) 402 . y. inc˘ dou˘ virfuri ale a a lui C y ¸i z astfel incit (x.Problema 4. Ar˘tati c˘ pentru orice virf x al lui C se pot a ¸ a determina in timpul O(n). z) este un circuit s de lungime 3. Presupunem c˘ un turneu (dia graf cu proprietatea c˘ orice 2 virfuri sunt unite a exact printr-un arc) are un circuit C de lungime n ≥ 4.

Demonstrati c˘ matricea A + QQT este o matrice diago¸ a nal˘ ¸i precizati semnificatia combinatorie a elementelor as ¸ ¸ ei. dac˘ v este extremitatea final˘ a arcului e a a (Q)ve = 0 in toate celelalte cazuri. Deduceti c˘ testarea a ¸ a izomorfismului a 2 grafuri oarecare se reduce polinomial la testarea izomorfismului a 2 grafuri bipartite (2 puncte) 403 . Fie G un graf oarecare ¸i not˘m cu b(G) s a graful obtinut din G prin inserarea cite unui nou nod pe ¸ fiecare muchie. initial˘ a arcului e. a ¸ a (Q)ve = 1.Setul de probleme 3 Problema 1. Fie G = (V. −1}n×m definit˘ prin : a (Q)ve = −1. (3 puncte) Problema 2. Demonstrati c˘ b(G) este un graf bipar¸ a tit. Dintre cele 2m s ¸a orient˘ri posibile ale muchiilor sale consider˘m una oarea a care ¸i cu ajutorul ei construim matricea de incident˘ s ¸a virf-arc Q ∈ {0. dac˘ v este extremit. 1. m muchii ¸i cu matricea de adiacent˘ A. (2 puncte) Demonstrati c˘ G ¸i H sunt izomorfe dac˘ ¸i numai ¸ a s a s dac˘ b(G) este izomorf cu b(H). E) un graf cu n virfuri.

f˘r˘ a-l memora explicit pentru utia a liz˘ri ulterioare). Dac˘ G este un graf cu n virfuri reprezena tat prin matricea de adiacent˘. ¸a (o prob˘ este un acces la un element oarecare a al matricii. ar˘tati c˘ se ¸a a ¸ a poate testa dac˘ este graf paianjen folosind a doar O(n) probe ale matricii de adiacent˘. Graful paianjen cu n virfuri este graful care se obtine unind unul din vir¸ furile de grad 1 ale grafului P3 cu toate virfurile unui graf oarecare cu n − 3 virfuri. disjunct de P3 (n este un intreg pozitiv mare). (4 puncte) a 404 .Problema 3.

Problema 4. Asociem unui arbore binar T de ordin n cu r˘d˘cina r un drum P3n orientat procedind astfel: a a fiec˘rui nod v al lui T i se asociaz˘ trei noduri cu acela¸i a a s a nume v pe care le desemn˘m prin v1 . atunci se introduc in P3n arcele v1w1 ¸i w3 v2. dac˘ descendentul drept al lui v in T este w. Demonstrati c˘ : ¸ a dac˘ din acest ¸ir se retine doar prima aparitie a fiec˘rui a s ¸ ¸ a nume se obtine parcurgerea pre-order a arbrelui T . ¸ dac˘ din acest ¸ir se retine doar a treia aparitie a fiec˘rui a s ¸ ¸ a nume se obtine parcurgerea post-order a arbrelui T . dac˘ v nu are in T descendent drept. v3 . atunci se introduce arcul v1v2 in P3n . s a s atunci se introduc in P3n arcele v2 w1 ¸i w3 v3 . atunci se a a introduce arcul v2 v3 in P3n. ¸ (3 puncte) 405 . ¸ dac˘ din acest ¸ir se retine doar a doua aparitie a fiec˘rui a s ¸ ¸ a nume se obtine parcurgerea in-order a arbrelui T . v2. dac˘ v nu a are in T descendent sting. dac˘ descendentul sting al lui v in T este w. ¸ a Dac˘ se parcurge drumul P3n de la extremitatea initial˘ a a s a r1 la extremitatea final˘ r3 ¸i se listeaz˘ numele virfurilor in ordinea parcurgerii lor se obtine un ¸ir in care numele ¸ s fiecarui virf al lui T apare exact de trei ori.

obtinut s a a a ın din G prin ˆ ınlocuirea fiec˘rei muchii {vij . K5 . =3 : (4 puncte) 406 .Setul de probleme 3’ Problema 1. G a) Descrieti un algoritm care primind la intrare G reprezen¸ tat cu ajutorul listelor de adiacent˘ ¸i d ∈ N∗ . . .k} . vin } a vˆrfurilor lui a ¸ G se nume¸te d-m˘rginit˘ dac˘ ˆ digraful G→. . avem ∀v ∈ V d+→ (v) ≤ d. fiecare dintre acestea ¸ 5 2 muchiilor oric˘rui graf complet Kn a partitionat˘ ˆ ¸ a ın reprezentˆnd multimea muchiilor unui arbore (subgraf a ¸ al lui Kn ). Exemplu. (2 puncte) s b) Utilizati algoritmul de la punctul a) pentru a deter¸ mina ˆ timpul O(m log n) parametrul ın o(G) = min{d ∈ N| G are o ordonare d-m˘rginit˘ }. E) un graf de ordin n ¸i dis mensiune m.k} ). . Fie G = (V. (2 puncte) Problema 2. n 2 Demonstrati algoritmic c˘ multimea ¸ a ¸ (n ≥ 2) poate fi submultimi. vik } cu arcul a (vimin{j. O ordonare V = {vi1 . vimax{j. ( 2 puncte) a a c) Ar˘tati c˘ orice graf G admite o colorare a vˆrfurilor a ¸ a a cu o(G) + 1 culori. testeaz˘ ¸a s a ˆ timpul O(n + m) dac˘ G are o ordonare d-m˘rginit˘ ın a a a (se vor argumenta corectitudinea ¸i complexitatea).

(2 puncte) b) Demonstrati c˘ num˘rul total al grafurilor ¸ a a introduse ˆ coada Q nu dep˘¸e¸te |G|2. . minimal˘ ˆ raport cu incluziunea (nici o a ın submultime proprie nu-i multime de articulatie ¸ ¸ ¸ ˆ H).se extrage ˆ H graful din capul cozii. ¸ a a . . ¸i dac˘ V1.Problema 3. . Vk (k ≥ 2) sunt multimile ın s a ¸ de vˆrfuri ale componentelor conexe ale grafua lui H − A. . . Pentru un graf conex G se execut˘ urm˘torul algoritm: a a . ın . . (2 puncte) ın as s 407 .se adaug˘ la Q grafurile [A ∪ V1]H . . a Se observ˘ c˘ dac˘ graful curent este complet atunci nu se adaug˘ a a a a nimic ˆ coada Q.Se initializeaz˘ o coad˘ Q cu graful G. .Cˆt timp coada Q nu-i vid˘: a a . atunci . ın a) Ar˘tati c˘ fiecare graf introdus ˆ coad˘ a ¸ a ın a este conex. [A ∪ Vk ]H .se determin˘ o multime de articulatie A ⊆ a ¸ ¸ V (H).

Fie D = (V. . 3. E) un digraf (f˘r˘ bucle) de a a ordin n cu multimea vˆrfurilor V = {1. 408 2. Cn. . 2. Kn. ıncˆ for i = n to 1 do \\ dreapta → stˆnga a if i ∈ SK ∧ (∃j ∈ SK astfel ˆ at ji ∈ E) then SK ← SK \ {i}. Fie C clasa grafurilor G cu proprietatea c˘ orice arbore df s al lui G este un a drum (pentru orice ordonare a vˆrfurilor lui G a ¸i orice ordonare a listelor de adiacent˘ asos ¸a ciate acestor vˆrfuri. SK ← ∅. . Con¸ a sider˘m urm˘torul algoritm: a a 1. a for i = 1 to n do \\ stˆnga → dreapta if ( ∃j ∈ SK astfel ˆ at ji ∈ E) then SK ← SK ∪ {i}. (1+3 puncte) Problema 2. . a ın Demonstrati c˘ ¸ a C = {K1.n}. K2} ∪ ∪n≥3{Kn.Setul de probleme 3” Problema 1. n}. . orice aplicare a unui df s a genereaz˘ un drum hamiltonian ˆ G). ıncˆ output SK.

E) este un a ¸ a a graf bipartit cu urm˘toarele propriet˘¸i: a at ∗ ). (2 puncte) Problema 4. .∀t1. a atunci are loc inegalitatea m ≤ n.∀t1. l) disa a s tincte din V ) dac˘ ¸i numai dac˘ i = l sau j = k. a a . j)(k. j) ¸i (k. — (i. j)|1 ≤ i ≤ n. t2 ∈ T dac˘ t1 = t2 atunci |NG (t1) ∩ NG (t2)| = k. T .|S| = n.Demonstrati c˘ SK este un seminucleu ˆ D: SK este ¸ a ın nevid˘.∀t ∈ T |NG(t)| > k > 0. Indicati structurile de date ¸i modul de folosire a aces¸ s tora pentru o implementare a algoritmului de mai sus ˆ ın timpul O(n + m) (m fiind |E|). m ∈ N . (2+2 puncte) Problema 3. Ar˘tati c˘ dac˘ G = (S. t2 ∈ T dac˘ t1 = t2 atunci NG (t1) = NG (t2). Pentru n ∈ N∗ definim graful Gn = (V. stabil˘ ˆ G[D] (graful suport al digrafului D) ¸i a a ın s orice vˆrf din v ∈ V \ SK e accesibil ˆ D. dintr-un vˆrf a ın a al lui SK.(pentru un k oarecare — mai mic decˆt n). l) ∈ E (pentru dou˘ vˆrfuri (i. ˆ at T = ıncˆ Gn (2+2 puncte) 409 . 1 ≤ j ≤ n}. . a s a Demonstrati c˘ Gn este universal pentru familia arborilor ¸ a de ordin n: oricare ar fi T un arbore de ordin n exist˘ A ⊂ V astfel a ∼ [A] . pe un drum de lungime cel mult 2. E) astfel: — V = {(i. |T | = m (n.

u ∈ S v ∈ S}. s ∈ V un virf O multime A de muchii se nume¸te ¸ s oarecare al lui G iar t un alt virf. Fie G = (V. E) un graf conex ¸i v un s a virf al s˘u cu proprietatea c˘ NG (v) = V − {v}. 410 . t ∈ S a a a ¸i A = {e ∈ E|e = uv. Prezentati (pe cel mult o pagin˘ ) o ¸ a problem˘ interesant˘ din domeniul IT care s˘ necesite a a a rezolvarea eficient˘ a unei probleme de drum minim intra un digraf asociat problemei initiale. N = NG (A) = ∅ ¸i at R = V − (A ∪ N ) = ∅ (de exemplu. Fie G = (V. st-inevitabil˘ dac˘ exist˘ S ⊂ V astfel incit s ∈ S.Setul de probleme 4 Problema 1. Ar˘tati c˘ num˘rul s a ¸ a a ¸ a a maxim de multimi st-inevitabile disjuncte dou˘ cite dou˘ este egal cu distanta in G de la s la t ¸i c˘ se poate de¸ s a termina o familie de astfel de multimi cu ajutorul unui ¸ bfs a lui G din s. A = {v}). (3 puncte) Problema 3. [A]G este conex. E) un graf. accesibil in G printrun drum din s. se a observ˘ c˘ exist˘ multimi de virfuri A care satisfac proa a a ¸ s priet˘¸ile : v ∈ A. (3 puncte) ¸ Problema 2. Dac˘ a a pentru A ⊂ V not˘m cu NG (A) = ∪a∈ANG(a) − A.

a atunci multimea N de la punctul a) are propri¸ etatea c˘ este clic˘ in graful G.a) Demonstrati c˘ dac˘ se consider˘ o multime ¸ a a a ¸ A maximal˘ (in raport cu incluziunea) satisf˘cind a a proprietatile enuntate. ¸ a regulate ¸i conexe sunt grafurile complete.(2 puncte) a a c) Deduceti c˘ singurele grafuri {Ck }k≥4-free. atunci orice virf din R ¸ ¸ este adiacent cu orice virf din N .(2 puncte) b) Dac˘. (2 puncte) 411 . in plus. graful G este {Ck }k≥4-free. Ar˘tati c˘ se poate utiliza a ¸ a o parcurgere dfs pentru a determina un circuit par intr-un graf 3-regulat oarecare.(2 s puncte) Problema 4.

412 . V −S. Demonstrati c˘ in orice graf conex G = ¸ a (V. S˘ se arate c˘ un graf G este bipartit a a dac˘ ¸i numai dac˘ orice subgraf indus H al lui G satisa s a face proprietatea 2α(H) ≥ |H| (3 puncte) Problema 2.(3 Problema 4. E) exist˘ o multime stabil˘ S astfel incit graful bipara ¸ a tit H = (S. Demonstarati c˘ intr-un graf bipartit G ¸ a cu n virfuri ¸i m muchii avem inegalitatea 4m ≤ n2. unde E = E −P2 (V −S) . E ) este conex. Deduceti c˘ α(G) ≥ ¸ a (3 puncte) |G|−1 ∆(G) pentru orice graf conex G. Ar˘tati c˘ orice graf G cu m muchii a ¸ a m 2 are un graf partial H bipartit si cu cel putin ¸ puncte) muchii. (2 s puncte) Descrieti un algoritm care s˘ testeze dac˘ un graf cu n ¸ a a virfuri ¸i m muchii este complementarul unui graf bipars tit in timpul O(n + m) (3 puncte) Problema 3.Setul de probleme 5 Problema 1.

Un exemplu banal de graf confidential ¸ conex este graful Kn cu n ≥ 3.. cu cel putin ¸ a ¸ trei virfuri ¸i care nu-i complet. Orice muchie a grafului este continut˘ intr-un C4 ¸ a indus in graf sau este muchia din mijlocul unui P4 indus in graf. dimensiunea ¸i diametrul lui Gd .Setul de probleme 6 Problema 1. Demonstrati c˘ un graf conex G = (V. (4 puncte) 413 . Pentru d ∈ N ∗ se consider˘ graful Gd = a K2 × K2 × . vw ∈ E} este nevid˘ ¸i induce un graf conex. este confidential conex s ¸ dac˘ ¸i numai dac˘ au loc urm˘toarele dou˘ conditii : a s a a a ¸ 1. a s (2 puncte) S˘ se arate c˘ Gd este bipartit ¸i s˘ se determine α(Gd ). Un graf cu cel putin trei virfuri se ¸ nume¸te confidential conex dac˘ pentru orice trei virfuri s ¸ a distincte a. × K2 . Pentru orice virf v multimea N (v) = {w ∈ V |w = ¸ v. a s 2. c ale grafului exist˘ un drum de la a la a b astfel incit niciunul dintre virfurile interne ale acestui drum (dac˘ exist˘ astfel de virfuri) nu este c sau un a a vecin al lui c. E). b. d f actori S˘ se determine ordinul.. a a s a (2 puncte) Problema 2.

Demonstrati c˘ ¸ ¸ a exist˘ o atribuire a valorilor de adev˘r ¸i fals pentru a a s variabilele booleene.. dac˘ ¸i numai dac˘ digraful G are poprietatea a a as a s ¸ c˘ pentru orice i ∈ {1. x2 .. .. conventia referitoare la dubla negare). (2 puncte) at 414 . (4 puncte) Argumentati complexitatea timp de O(n + m) pentru ¸ testarea propriet˘¸ii de mai sus. . .. Cm } .... literalii reprezentind ¸ variabile sau negatiile acestora.. x2 . x1 . unde fiecare clauz˘ Ci este a disjunctia a doi literali Ci = vi ∨ wi .. . C2 . xn} (adic˘ toti literalii posibili) ¸i in care pentru fiecare clauz˘ Ci = ¸ s a a s vi ∨ wi se adaug˘ arcele viwi ¸i wivi (folosind.Problema 3... astfel incit fiecare clauz˘ s˘ fie a a adev˘rat˘. evident.. . In Problema 2-SAT se dau : o multime ¸ de variabile boolene U = {x1 . n} xi ¸i xi apartin la compoa nente tari conexe diferite.. xn . Problemei i se asociaz˘ ¸ a a un digraf G cu V (G) = {x1 .. x2 . xn } ¸i o multime de s ¸ clauze C = {C1 .

f (3) = 3. a s Indicatie: Ar˘tati c˘ f (2) = 1. a s a (a) Descrieti o schem˘ de a da telefoanele astfel incit ¸ a intr-un numar minim f (n) de apeluri telefonice. fiecare cunoa¸te o parte dintr-o birf˘ pe care s a celelalte n-o cunosc. Ele comunic˘ prin telefon ¸i orice a s apel telefonic intre orice dou˘ doamne are ca efect fapa tul c˘ fiecare din ele va afla tot ce cunoa¸te cealalt˘. Intr-un grup de n ”doamne”. fiecare ”doamn˘” va afla tot ce ¸tiu celelalte. indicind scheme de telefonare cu aceste numere de apeluri).Setul de probleme 7 Problema 1. Gossip Problem. f (4) = 4 ¸i ¸ a ¸ a s s pentru n > 4 f (n) = 2n − 4 (u¸or. ¸ a a (2 puncte pentru descrierea schemei. 1 punct pentru demonstrarea optimalit˘¸ii) at ¸ (b) Modelati problema in limbajul teoriei grafurilor: schemei de telefonare ii va corespunde un ¸ir de muchii iar cunoa¸terea s s comun˘ se va exprima printr-o condititie referitoare la a ¸ existenta unor drumuri speciale cu elemente din ¸irul ¸ s considerat (1 punct) 415 . Incercati sa ¸ argumentati c˘ 2n − 4 este chiar num˘rul minim.

. A2 − ¸ {x}. Demonstrati c˘ exist˘ ¸ ¸ a a un element x in multimea S astfel incit A1 − {x}. An submultimi distincte (4 puncte) Problema ale unei multimi de n elemente S. Descrieti un algoritm eficient pentru determinarea ¸ unui circuit C ∗ in D astfel incit a(C ∗ ) b(C ∗ ) = min{ a(C) . a : E(D) −→ R+ ¸i b : E(D) −→ ∗ R+ .Problema 2. . (4 puncte) 416 . Fie D un digraf ¸i dou˘ functii definite s a ¸ s pe multimea arcelor sale... .. A2. ¸ Fie A1. An − {x} s˘ fie ¸i ele distincte. a Descrieti un ¸ algoritm eficient care s˘ determine pentru dou˘ virfuri s a a ¸i t distincte ale grafului drumul cu locul ingust cel mai s mare (dintre toate drumurile de la s la t in graful G).. C circuit in D } b(C) 3. Fie G un graf ¸i c : E(G) −→ R+ o s Oric˘rui drum din a functie de capacitate a muchiilor. ¸ graf cu m˘car o muchie i se asociaz˘ locul ingust ca a a fiind muchia sa de capacitate minim˘ .. (2 puncte) a s Problema 4.

. E) un arbore ¸i w : V → R+ s o functie de pondere nenegativ˘. Fie T = (V. . a : E → R+ o functie de cost nenegativ˘. i ←ˆ ınainte(i) }.ˆ ınainte(s) ← s. s. ca fiind suma s ponderilor vˆrfurilor sale. Pentru ¸ a s a a rezolvarea problemei P1 (a determin˘rii unui drum de cost a minim a de la s la t ˆ G) se propune urm˘torul algoritm: ın a 1. 3. ¸i s = t dou˘ vˆrfuri fixate. while i = t do if ∃j ∈ V astfel ˆ at pi − pj = aij then ıncˆ {ˆ ınainte(j) ← i. a ıncˆ Ar˘tati c˘ exist˘ un vˆrf v0 ∈ V astfel ˆ at nici unul a ¸ a a a a din subarborii lui T − v0 nu are ponderea mai mare decˆt 1 w(T ). a)Demonstrati c˘ dac˘ pasul 2 se termin˘ atunci afirmatiile din ¸ a a a ¸ pasul 3 sunt corecte. Pentru orice subarbore ¸ a T al lui T se define¸te ponderea sa. ˆ ınainte(ˆ ınainte(t)). . . } else { pi ← minij∈E (aij + pj ). Costul unui drum de cost minim de la s la t este ps − pt ¸i un drum de cost minim se obtine din: s ¸ t. Fie G = (V.(2 puncte) b)Stabiliti complexitatea timp a algoritmului(2 puncte) ¸ Problema 2. 2. i ← s. w(T ).Setul de probleme 7’ Problema 1. ˆ ınainte(t). i ← j. (2 puncte) 417 . for each i ∈ V do pi ← 0.(1 punct) 2 Descrieti un algoritm cu timpul O(|V |) pentru g˘sirea lui ¸ a v0 . E) un digraf de ordin n.

iar ν(H) cardinalul maxim al unui cuplaj al lui H . Dac˘ G ¸i H sunt dou˘ graa s a furi. (3 puncte) Problema 4. (Se presupune cunoscut˘ teorema lui Tutte)(4 puncte) a 418 . m ≥ 3. atunci a q(H) noteaz˘ num˘rul componentelor conexe a a de ordin impar ale lui H.Problema 3. Dac˘ H este un graf. Demonstrati c˘ ¸ a pentru orice graf G are loc relatia: ¸ S⊂V (G) max (q(G − S) − |S|) = |V (G)| − 2ν(G) . m ∈ N. Justificati corectitudinea unui algoritm care s˘ ¸ a r˘spund˘ ˆ timpul O(1) la ˆ a a ın ıntrebarea: ”Are loc Cn → Cm ? ” (n. notatia G → H semnific˘ faptul c˘ exist˘ ¸ a a a f : V (G) → V (H) astfel ˆ at ∀ uv ∈ E(G) ıncˆ avem c˘ f (u)f (v) ∈ E(H) (exist˘ un morfism a a de grafuri de la G la H). n. Ck este graful circuit de ordin k).

B ⊂ V dou˘ multimi disjuncte. adic˘ nu mai exist˘ un alt drum de la A a a la B care s˘ aib˘ lungimea d(A. Fie d(A. B) := min{d(a. b) Ar˘tati cum poate fi folosit algoritmul de la a) pena ¸ tru implementarea algoritmului lui Hopcroft & Karp de aflare a unui cuplaj de cardinal maxim ˆ ıntr-un graf bipartit. b ∈ B} (d(x. s a a Descrieti un algoritm de complexitate O(n + m) pentru ¸ aflarea unei multimi maximale P de drumuri disjuncte ¸ (cu multimile de vˆrfuri disjuncte) de la A la B. dac˘ acesta exist˘). (3+2 puncte) 419 . y)=distanta ˆ D de la x la y = lungimea ¸ ın celui mai scurt drum dintre x ¸i y. E) un digraf aciclic cu n vˆrfuri ¸i m arce a s ¸i A. fiecare ¸ a de lungime d(A. ale grafului: Determinati num˘rul cuplajelor perfecte ¸ a 1 2 3 2n-1 2n (3 puncte) Problema 2. stabile ˆ G(D) (gras a ¸ ın ful suport al digrafului).Setul de probleme 7” Problema 1. B) ¸i s˘ fie disjunct de a a s a orice drum din P). B) (maximalitatea lui P este ˆ raport ın cu incluziunea. b)|a ∈ A. a) Fie D = (V.

. E) un digraf cu multimea de ¸ vˆrfuri V = {1. cu cea care s-ar fi f˘cut a a a a dac˘ s-ar fi cunoscut drumul P . . 0. dac˘ se pl˘te¸te 1 RON se obtine dreptul de a a a a face aceast˘ alegere. em}. iar dac˘ se pl˘tesc T >> 1 RONi ¸ atunci se obtine dreptul de a face gratuit toate alegerile urm˘toare. lungimea drumului P este cel putin 1 ¸i ea depinde de structura grafului ¸i de ¸ s s alegerile f˘cute. notat˘ P osteriori(P ). Ar˘tati c˘ pentru orice submatrice p˘trat˘ B a lui A are loc: a a det(B) ∈ {−1. . Atunci a cˆnd nu mai este posibil˘ nici o alegere. ˆ struie¸te un drum P astfel: se pleac˘ dintr-un vˆrf oares a a s a ın a care de start ¸i apoi. Fie D = (V. . alegem un vecin diferit de vˆrfurile deja vizitate. Dup˘ terminarea constructiei se poate coma a ¸ para suma pl˘tit˘. constructia a a ¸ lui P se ˆ ıncheie. Aceast˘ plat˘ se poate face ˆ a a ınaintea fiec˘rei a s a a s ¸ alegeri ¸i. . Proprietarul grafului solicit˘ o plat˘ a a a pentru folosirea acestuia ˆ procesul de constructie a ın ¸ drumului P . (2 puncte) Intr-un graf f˘r˘ vˆrfuri izolate se cona a a Problema 4. din vˆrful curent ˆ care ne afl˘m. a G˘siti o strategie de plat˘ astfel ˆ at pentru orice graf a ¸ a ıncˆ ¸i orice drum construit P s˘ avem Apriori(P ) ≤ (2 − s a 1/T )P osteriori(P ). . 0. 1}.Problema 3. (4 puncte) 420 . n} ¸i multimea arcelor E = {e1 . . a s ¸ Fie A = (aij ) ∈ Mn×m ({−1. dac˘ arcul a a ın a ¸ a ej intr˘ ˆ i atunci aij = −1. Evident. . Apriori(P ). altfel aij = 0). 1}) matricea de incident˘ ¸a a a lui D (dac˘ arcul ej iese din i atunci aij = 1.

2. ¸ a) Ar˘tati c˘ dac˘ functia de cost are proprietatea c˘ a ¸ a a ¸ a orice t˘ietur˘ are o unic˘ muchie de cost minim. Vom numi t˘ietur˘ a a orice multime A ¸ de muchii ale lui G cu proprietatea c˘ exist˘ o bipartitie a a ¸ (S. (2 puncte) a ¸ b) Deduceti c˘. Consider˘m o numerotare fixat˘ a a a celor m > 0 muchii ale unui graf conex G = (V.1 definit prin xA = 1 ⇔ ei ∈ A (vect. 0 ¸i 1. ¸i operatiile de adunare ¸i inmultire modulo 2).atunci ¸ a a ¸ a G are un unic arbore partial de cost minim. Fie G un graf conex ¸i o functie de cost s ¸ c : E(G) −→ R. E) de Pentru orice submultime de muchii A con¸ a sider˘m xA ∈ GF m vectorul m-dimensional cu elemente 0. s s ¸ s ¸ 421 . dac˘ functia de cost c este injectiv˘. i ¸ GF m este spatiul vectorial peste corpul GF (cu elem. V (G) − S) a multimii virfurilor lui G astfel incit A ¸ este multimea muchiilor lui G cu extremit˘¸ile in clase ¸ at diferite ale bipartitiei. caracteristic). (1 punct) ¸ c) Sunt adev˘rate reciprocele afirmatiilor a) si b) ? (1 a ¸ punct) Problema ordin n. atunci a a a exist˘ un unic arbore partial de cost minim.Setul de probleme 8 Problema 1.

(2 puncte) ¸ Problema 4.(1 ¸ punct) b) Demonstrati c˘ vectorii caracteristici ai multimilor ¸ a ¸ muchiilor circuitelor grafului G genereaz˘ un subspatiu a ¸ vectorial U al lui GF m ortogonal pe X. se poate construi in timpul O(n) un ¸a cuplaj propriu. Fie T = (V.a) Demonstrati c˘ multimea vectorilor caracteristici ai ¸ a ¸ tuturor t˘ieturilor grafului G. v = r. (2 puncte) 422 . (1 punct) c) Ar˘tati c˘ dim(X) ≥ n − 1 (1 punct) a ¸ a d) Ar˘tati c˘ dim(U ) ≥ m − n + 1(1 punct) a ¸ a e) Deduceti c˘ dim(X) = n − 1 ¸i c˘ dim(U ) = m− n + 1. Un cuplaj M al lui T se nume¸te propriu dac˘ s a orice virf expus v (relativ la M ) in T are un frate w (dou˘ virfuri sunt frati dac˘ au acela¸i p˘rinte) astfel a ¸ a s a incit w parent(v) ∈ M . E) un arbore cu r˘d˘cina r a a s a (un virf oarecare) ¸i cu parent(v) p˘rintele nodului v ∈ V. formeaza un subspatiu vectorial X al lui GF m . (1 punct) b)Ar˘tati c˘ pentru orice arbore cu n virfuri. dat prin a ¸ a listele de adiacent˘. la care ad˘ug˘m ¸i vectorul a a a s nul. ¸ a s a (1 punct) Problema 3. Ar˘tati c˘ orice arbore cu gradul maxim a ¸ a t > 0 are cel putin t virfuri pendante. a)Demonstrati c˘ orice cuplaj ¸ a propriu este de cardinal maxim.

(2 puncte) ¸ a 423 . graful G a are un cuplaj de cardinal cel putin |S| − k dac˘ ¸i numai ¸ a s dac˘ ∀A ⊆ S |NG(A)| ≥ |A| − k. c˘ exist˘ in graful G un cuplaj care sata a ureaz˘ toate virfurile de grad maxim dac˘ ¸i numai dac˘ a as a orice cuplaj de grad maxim are aceea¸i proprietate. un cuplaj M cu suma gradelor virfurilor saturate de M maxim˘ printre toate cuplajele grafului. T . Utilizati ¸ teorema lui Hall pe un graf convenabil pentru a demonstra c˘ pentru orice intreg k. a a) Ar˘tati c˘ un cuplaj de grad maxim este de cardinal a ¸ a maxim (2 puncte) b) Dem. E) un graf bipartit. Numim cuplaj de grad maxim in graful G. (2 a puncte) d) Deduceti c˘ multimea muchiilor unui graf bipartit G ¸ a ¸ poate fi partitionat˘ in ∆(G) cuplaje. atunci G are un cuplaj care satureaz˘ toate virfurile de grad maxim. cu 0 ≤ k ≤ |S|. (2 s puncte) c) Demonstrati c˘ dac˘ multimea virfurilor de grad maxim ¸ a a ¸ ale grafului G induce un graf bipartit. Fie G = (S. (2 puncte) a Problema 2.Setul de probleme 9 Problema 1.

utilizind teorema lui a ¸ Tutte. ¸a Intrebare : Exist˘ in G un subgraf H cu b a muchii. f˘r˘ virfuri izolate ¸i cu ordinul lui H a a s cel putin k ? ¸ Ar˘tati c˘ problema se poate rezolva in timp a ¸ a polinomial. Ar˘tati.Problema 3. c˘ orice graf 2-muchie conex 3-regulat a are un cuplaj perfect. k ∈ N . (2 puncte) Problema 4. Consider˘m urm˘toarea proba a lem˘ de decizie: a Instant˘: G = (V. (2 puncte) 424 . E) un graf. b ∈ N ∗.

Fie G un graf conex cu n virfuri ¸i TG s familia arborilor s˘i partiali. multimea arborilor partiali de cost ¸ ¸ c minim induce un subgraf conex in H. a) Demonstrati c˘ H este conex ¸i are diametrul cel mult ¸ a s n − 1. t ∈ T . a ¸ toate arcele de la S la T sunt ro¸ii ¸i toate arcele de la s s T la S sunt ro¸ii sau galbene. Se coloreaz˘ toate arcele lui H cu galben. E(H)) unde T1T2 ∈ E(H) ⇐⇒ |E(T1) E(T2 )| = 2. cu singura conditie ca arcul ts s˘ s s ¸ a fie galben (se poate intimpla ca s˘ nu avem arce ro¸ii a s sau verzi). E) un digraf ¸i ts ∈ E un arc s fixat al s˘u. T ) a lui V astfel incit s ∈ S. Demonstrati algoritmic c˘ are loc exact una ¸ a din urmatoarele situatii: ¸ i) exist˘ un circuit in graful G(H) (nu se ¸ine seama de a t orientare) cu arce galbene sau verzi care contine arcul ¸ ts ¸i toate arcele galbene ale sale au aceea¸i orientare. Se consider˘ graful H = a ¸ a (TG. a a ro¸u ¸i verde arbitrar. (2 puncte) Problema 2. (2 puncte) b)Demonstrati c˘ pentru orice functie de cost c pe multimea ¸ a ¸ ¸ muchiilor grafului G. s s ii) exist˘ o partitie (S. Fie H = (V. s (2 puncte) 425 .Setul de probleme 10 Problema 1.

. F . O multime de ¸ virfuri A ⊆ V se nume¸te m-independent˘ dac˘ exist˘ un s a a a cuplaj M al lui G astfel incit A ⊆ S(M ). Dac˘ M este un cuplaj perfect in Kn. a S˘ se arate c˘ pentru orice ordon˘ri ale preferintelor exa a a ¸ ist˘ un cuplaj stabil ¸i s˘ se construiasc˘ unul in O(n3). b2. f2 ... <b fin ¸i s ∀f ∈ F are o ordonare a preferintelor sale pe B : ¸ bi1 <f bi2 <f . . .(4 puncte) Problema 4.n = (B.. atunci M (b) <b f . Fie G = (V. E) un graf. Cuplaje stabile in grafuri bipartite Fie graful complet bipartit Kn.Problema 3..... a s a a (4 puncte) 426 . vom folosi notatia : bifj ∈ M ⇐⇒ fj = M (bi) ⇐⇒ bi = M (fj ). fn}. de asemea nea. <f bin .n (fiecare b este cuplat cu exact un f ).. Demonstrati c˘ ¸ a dac˘ A ¸i B sunt multimi m-independente ¸i |A| < |B|. a s ¸ s atunci ∃b ∈ B − A : A ∪ {b} este m-independent˘ a (multimile m-independente maximale au acela¸i cardi¸ s nal). ¸ Vom presupune c˘ a ∀b ∈ B are o ordonare a preferintelor sale pe F : ¸ fi1 <b fi2 <b . E). bn} ¸i F = {f1 .n se nume¸te stabil dac˘ : s ∀b ∈ B dac˘ f <b M (b).. atunci M (f ) <f b ¸i. s a Un cuplaj perfect M al lui Kn. ∀f ∈ F dac˘ b <f M (f ). unde B = s a {b1.

Ar˘tati c˘ se poate determina. cu ajutorul unui algoritm de s a flux maxim (pe o retea convenabil definit˘). s a Se cere s˘ se determine (cu ajutorul unei probleme de a flux maxim) un plan de echilibrare static˘ a inc˘rc˘rii a a a procesoarelor : se va indica pentru fiecare procesor ce cantitate de inc˘rcare va trimite ¸i la ce procesor asta s fel incit. (3 puncte) Problema 2. toate procesoarele s˘ aib˘ aceea¸i a a s inc˘rcare. Ar˘tati c˘se poate utiliza ¸a a ¸ a acest algoritm pentru determinarea eficient˘ a cuplajua lui de cardinal maxim intr-un graf oarecare.Setul de probleme 11 Problema 1. Se dispune de un algoritm care primind la intrare un graf G ¸i o functie de pondere nenegativ˘ s ¸ a pe multimea muchiilor acestuia. o multime de cardinal s a ¸ maxim de elemente egale cu 0 ¸i care s˘ nu se g˘seasc˘ s a a a pe aceea¸i linie sau coloan˘. Digraful G = (V. returneaz˘ un cuplaj ¸ a perfect in graful G de pondere minim˘ (printre toate a cuplajele perfecte ale grafului. E) descrie topologia interconectarii intr-o retea de procesoare. dac˘ G nu are cuplaj pera fect se anunt˘ acest lucru). (4 puncte) a 427 . (3 puncte) ¸ a Problema 3. in final. intr-o a ¸ a matrice cu elemente 0 ¸i 1 dat˘. Pentru fiecare ¸ procesor v ∈ V se cunoa¸te inc˘rcarea sa load(v) ∈ R+ .

Problema 4. S˘ se determine fluxul de valoare maxim˘ a a in reteaua din figura de mai jos (explicind functionarea ¸ algoritmului lui Edmonds-Karp): a 4 c 3 4 3 1 s 3 b d 5 6 t 10 (Etichetele arcelor reprezinta capacit˘¸ile) at (4 puncte) 428 .

. ¸a a a Intrebare: Are G un cuplaj perfect? Demonstrati c˘ PERF se reduce polinomial la ¸ a 3PERF (4 puncte) Problema 2. . .Setul de probleme 11’ Problema 1. de asemenea. e1 ¸i e10 nu sunt adiaın cente ˆ K5. Demonstrati c˘ nu exist˘ nici ¸ a a o permutare e1. e10 a muchiilor grafului complet K5. Consider˘m urm˘toarele proba a leme de decizie: PERF Instant˘: G un graf. . . (2 puncte) ın 429 . . . 9} muchiile ei ¸i ei+1 nu sunt adiacente s s s ˆ K5 ¸i. ¸a Intrebare: Are G un cuplaj perfect? 3PERF Instant˘: G un graf cu gradul fiec˘rui vˆrf ≤ 3. astfel ˆ at pentru orice i ∈ ıncˆ {1. . e2.

. D). . a a s Organizatorul are de ales ˆ ıntre a cump˘ra fete de mas˘ noi. ıncˆ s b) Se coloreaz˘ greedy vˆrfurile: lui vi1 i se atribuie culoarea 1 ¸i a a a apoi pentru fiecare vˆrf vij . vin } a astfel ˆ at dG(vi1 ) ≥ dG (vi2 ) ≥ . ¸i serviciul lent prin care returneaz˘ fetele de mas˘ curate la ˆ a ¸ a ınceputul zilei i + 2 la un cost unitar c2 . . ˆ dimineata zilei i. . la pretul a ¸ a ¸ unitar p. O euristic˘ natural˘ pentru colorarea vˆrfurilor unui a a a graf G = (V. E) este urm˘toarea: a a) Se alege o D-ordonare a lui G. n. i ≥ 2). Cur˘¸˘toria are dou˘ tipuri ata a de servicii: serviciul rapid. p > c1 > c2 . . vi2 . . D). . a ıncˆ a a ¸ la un pret minim. la ˆ a a ¸ ın ınceputul conferintei. cu j = 2. se atribuie cea mai mic˘ a culoare posibil˘ (cel mai mic num˘r natural p cu proprietatea c˘ nu a a a a fost atribuit drept culoare unuia dintre vecinii s˘i deja colorati). sau.Problema 3. prin care se returneaz˘ fetele de mas˘ a ¸ a s curate la ˆ ınceputul zilei i + 1 la un cost unitar c1 . ¸i c˘ valoarea acestora dup˘ terminarea conferintei e ¸ s a a ¸ a neglijabil˘). . astfel ˆ at s˘ satisfac˘ toate cererile pe durata conferintei. . ¸ ın Se cunoa¸te num˘rul Mi al meselor de care e nevoie ˆ ziua i a s a ¸ a conferintei (i = 1. Problema pe care ¸i-o pune organizatorul este de a face o planifis care a modului de cump˘rare ¸i trimitere la cur˘¸˘torie a fetelor de a s ata ¸ mas˘. a ¸ 430 . . ≥ dG(vin ). Se consider˘ c˘ toate cele Mi fete de mas˘ ¸ a a se murd˘resc la sfˆr¸itul zilei i (i = 1. Desigur. ¸ (Se presupune c˘ nu exist˘ fete de mese ˆ stoc. (4 puncte) Problema 4. Un organizator al unei conferinte trebuie s˘ asigure ¸ a fete de mas˘ (curate) pentru fiecare din cele D zile cˆt dureaz˘ ¸ a a a conferinta. adic˘ o ordonare V = {vi1 . S˘ se formuleze problema organizatorului ca o problem˘ de flux de a a cost minim (justificare). s˘ trimit˘ la cur˘¸at fete de mas˘ ın ¸ a a at ¸ a murdare (din zilele precedente.

Consider˘m urm˘toarea problem˘ de decizie: a a a 3GCOL Instant˘: G un graf. (4 puncte) 431 . ¸a Intrebare: Exist˘ o D-ordonare a vˆrfurilor lui G astfel ˆ at a a ıncˆ euristica de mai sus d˘ o 3-colorare a lui G ? a Demonstrati c˘ problema ¸ a 3COL Instant˘: G un graf. ¸a Intrebare: Admite G o 3-colorare ? se reduce polinomial la 3GCOL.

se adaug˘ arcele st ¸i ts de capacitate c(st) = c(ts) = a s ∞. t ∈ V (G). T ) ˆ R are loc ¸ ın v(x) ≤ i∈S. s. a a) Demonstrati c˘ pentru orice flux legal x ¸i orice ¸ a s sectiune (S. Presupunem s (f˘r˘ a restrˆnge generalitatea !) c˘ st ¸i ts nu sunt arce a a a a s ˆ G.se adaug˘ la G o intrare nou˘ s ¸i o ie¸ire nou˘ t. t = s ie¸irea s ¸ ¸i c : E(G) → R+ functia de capacitate). 432 . Numim flux legal ˆ R orice flux x ˆ R cu ın ın proprietatea c˘ x(e) ≥ m(e) ∀e ∈ E(G).Setul de probleme 11” Problema 1. a a s . . satisf˘cˆnd m(e) ≤ c(e) pe orice arc a a e al lui G. b) Se construie¸te din R reteaua R astfel: s ¸ s a . Se dispune ¸i de o functie de m˘rginire inferioar˘ ın s ¸ a a m : E(G) → R+ .pentru ∀v ∈ V (G) se adaug˘ arcul sv de capacitate a c(sv) = uv∈E(G) m(uv). Fie R = (G. . t.pentru ∀v ∈ V (G) se adaug˘ arcul vt de capacitate a c(vt) = vu∈E(G) m(vu). .ji∈E(G) m(ji).ij∈E(G) c(ij) − i∈S. s ∈ V (G) intrarea.se define¸te c pe arcele ij ale lui G ca fiind c(ij) = s c(ij) − m(ij).j∈T.j∈T. c) o retea (G digra¸ ful suport.

¸ a a s atunci se nume¸te arbore Steiner corespunz˘tor tripletei s a (H.Demonstrati c˘ exist˘ un flux legal ˆ reteaua R dac˘ ¸i ¸ a a ın ¸ as numai dac˘ exist˘ un flux de valoare M = e∈E(G) m(e) a a ˆ reteaua R = (G. w) un arbore T (H. c) Utilizˆnd un flux legal de start (care se poate obtine a ¸ ca la b)). w)] = e∈ET w(e). A. A. t. c) (G este digraful construit mai ın ¸ ¸ a sus. s. Dac˘ H este un graf conex. s a (2+2+2 puncte) Problema 2. 433 . ¸ a) Justificati c˘ determinarea lui T (H. w) = (VT . cu proprietatea c˘ A ⊆ VT ¸i suma costurilor muchiilor a s a ¸ sale. w) se poate ¸ a face ˆ timp polinomial pentru cazul cˆnd A = V (H) ın a sau |A| ≤ 2. c este functia de capacitate definit˘ mai sus). A ⊆ V (H) a o multime nevid˘ de vˆrfuri ale sale ¸i w : E(H) → R+ . indicati cum se poate adapta algoritmul lui ¸ Ford & Fulkerson pentru a obtine un flux legal de valoare ¸ maxim˘ ˆ a ıntr-o retea ˆ care pe fiecare arc este precizat˘ ¸ ın a capacitatea ¸i marginea inferioar˘. subgraf al lui H. ET ). este minim˘ printre toti arborii subgrafuri ale lui H care contin A. A. s[T (H. A.

c)] = s[T (Kn. c) se poate construi un arbore Steiner T (G. c) Ar˘tati c˘ exist˘ un arbore Steiner T (Kn . . . n} ¸i A ⊆ V . A. a ¸ ¸ a Consider˘m ¸i graful complet Kn cu multimea de vˆrfuri a s a V ¸i cu functia de cost c : E(Kn ) → R+ dat˘ de c(ij) = s ¸ min[ P drum ˆ G de la i la j ] c(P ) pentru orice ij ∈ E(Kn ). . A. c).b) Fie G = (V. A. c) cu proa ¸ a a prietatea c˘ vˆrfurile sale care nu-s din A au gradul cel a a putin 3. E) un graf conex cu multimea de vˆrfuri ¸ a V = {1. A. . c) cu cel mult 2|A| − 2 vˆrfuri. A. c)] ¸i c˘ din ¸ a s a orice arbore Steiner T (Kn . A. ın Demonstrati c˘ s[T (G. a ((1+1)+(1+2)+(2+1) puncte) 434 . Deduceti (folosind aceast˘ proprietate ) c˘ ¸ ¸ a a exist˘ ˆ a ıntotdeauna un arbore Steiner T (Kn . Pe multimea muchiilor lui G s ¸ este dat˘ o functie de cost c : E → R+ .

. s. Pk (0 ≤ k ≤ |E(G)|). Numim GP-descompunere a grafului graful complet Kn orice multime A = {B1 . ¸i numerele reale nenegative v1 . E) un graf ¸i f : V −→ V cu s proprietatea c˘ ∀uv ∈ E : f (u)f (v) ∈ E. E) exist˘ functii f cu proprietatea de mai sus ¸i a ¸ s astfel incit |f (V )| ≤ ∆(G) + 1 ? (4 puncte) 435 ..... este flux in R de valoare maxim˘ v.. (4 puncte) a Problema 2. . . astfel incit x : E(G) −→ R .k(A)E(Bi ) = E(Kn ).Setul de probleme 12 Problema 1. t). vk .. c. Ar˘tati c˘ orice GPs a ¸ a descompunere A a lui Kn satisfce inegalitatea k(A) ≥ n − 1.. Fie G = (V.. Este adev˘rat c˘ pentru orice graf a a a G = (V. Bk(A) }. ¸ unde : fiecare Bi este un subgraf bipartit complet al lui a ¸ Kn . orice dou˘ grafuri Bi si Bj au multimile de muchii disjuncte ¸i ∪i=1. Fie v valoarea fluxului maxim in reteaua ¸ R = (G. Demonstrati c˘ exist˘ k st-drumuri in G. (4 puncte) Problema 3. Demonstrati a ¸ c˘ ω(G) ≤ |f (V )|. ¸ a a s P1. definit pentru orice arc ij prin xij = 0 + Σt:ij∈Pt vt ....

(2 puncte) a ¸ 436 . ¸ Descrieti un algoritm polinomial care s˘ testeze ¸ a dac˘ un graf dat are partitii speciale. Fie G = (V. Ar˘tati c˘ graful circuit Cn (n ≥ 3) nu are a ¸ a partitii speciale. T ) a ¸ a ¸ lui V astfel incit subgraful indus de T in G este neconex ¸i subgraful indus de S in complemens tarul grafului G este neconex. Numim partitie special˘ orice bipartitie (S. E) un graf.Problema 4.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->