Sunteți pe pagina 1din 437

ALGORITMICA

GRAFURILOR
C. Croitoru
2006-2007

Motivat
ie: Grafurile sunt considerate cele
mai utilizate structuri abstracte din Informatic
a .

Scop: Familiarizarea studentilor cu principalele not


iuni
si rezultate din Teoria Grafurilor

si aplicarea acestora n proiectarea unor algoritmi ecient


i pentru diversele probleme de optimizare pe grafuri.

Cont
inut: Probleme, Algoritmi, Complexitate; Vocabular al Teoriei Grafurilor; Probleme
de drum (parcurgeri, drumuri minime, conexiune); Arbori part
iali de cost minim (unionnd, complexitate amortizat
a); Cuplaje; Fluxuri; Reduceri polinomiale pentru probleme de
decizie pe grafuri; Abord
ari ale problemelor NPhard pe grafuri; Grafuri planare.
1

Bibliograe:
- Manualul cursului :
CROITORU C., Tehnici de baz
a n optimizarea
combinatorie, Editura Universit
a
tii 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 algoritmilor paraleli, Editura Matrix Rom, Bucure
sti, 2002.
- TOMESCU I., Probleme de combinatorica
si
teoria grafurilor, Editura did
si ped, Bucure
sti,
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


a (computat
ional
a)
ca ind o aplicat
ie
P : I O,
(I mult
imea intr
arilor problemei, mult
imea instant
elor
problemei; O mult
imea ie
sirilor, r
aspunsurilor, solut
iilor)

care pentru ecare intrare i I ofer


a o ie
sire
P(i) O.
Dac
a O = {da, nu} atunci P se va numi problem
a de decizie, P(i) {da, nu} va r
aspunsul
(la ntrebarea pus
a de P), iar forma uzual
a de
prezentare a problemei va :
P

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 ecare 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 asocia o problem
a de decizie (care ne va da informatii
asupra dicult
a
tii 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 rezolvate cu ajutorul calculatorului
problemele sunt codicate.
Vom considera o mult
ime nit
a xat
a numit
a alfabet, mult
imea tuturor cuvintelor
peste .
5

Obiectele care apar n descrierea unei probleme (numere rat


ionale, grafuri, funct
ii, matrici etc.) vor 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 anumit 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
si P (w) = da}.
P 1(da) = {w|w
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
O(|w|k ).
Limbajul L este decis de algoritmul A
at
n timp polinomial dac
a k N astfel nc
pentru orice w algoritmul A evalueaz
a
A(w) = da, dac
a w L
si A(w) = nu, dac
a
w L, n timpul O(|w|k ).
Prefer
am

un mod informal de prezentare a not


iunilor
de algoritm
si timp de executie
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 lima
bajul L = P 1(da) satisface L P. Se noteaz
aceasta (cam abuziv) P P.
De exemplu, problema DrM IN -D este rezolvabil
a n timp polinomial dac
a funct
ia de lungime
(specicat
a n intrarea ei) este cu valori nenegative. Dac
a se permit
si valori negative, atunci
nu se cunoa
ste nici o demonstrat
ie a apartenent
ei DrM in-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 = {L |A alg. a.. L e acceptat de A
n timp polinomial},
se observ
a imediat c
a P P
si nu e dicil s
a
se arate
si incluziunea invers
a, deci P = P .

2. Se veric
a u
sor c
a dac
a P P atunci
si \ P P.
8

Vericare n timp polinomial.


Un algoritm de vericare este o funct
ie
A : {da, nu, nedecidabil}.
Pentru A(x, y), x este intrarea iar y este certicatul.
Limbajul L este vericat de algoritmul de
vericare A dac
a
L = {w|w
si y a. . A(w, y) = da}.
Clasa de complexitate

NP:

NP = {L | A algoritm de vericare
cu timp de lucru polinomial a..
L = {x | y , k N a. .
si A(x, y) = da}
|y| = O(|x|k )
}.

Dac
a P e o problem
a de decizie, atunci ea este
a limbajul L = P 1(da)
problem
a (din) NP dac
satisface L NP.
9

Observat
ie. NP este mnemonic pentru Nedeterminist 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.
Justicarea este imediat
a: Dac
a L P, atunci exist
aA:
{da, nu, nedecidabil} algoritm care decide L n timp
polinomial. Consider
am A : {da, nu, nedecidabil},
satisf
ac
and A (x, x) = A(x) pentru orice x . Se vede
u
sor c
a L este vericat de A n timp polinomial.
Din denit
iile de mai sus ar fost mai normal s
a not
am

VP (vericabil polinomial). Sintagma Nedeterminist


Polinomial se justic
a dac
a am considera algoritmi nedetermini
sti n care controlul execut
iei este astfel nc
at
dup
a ecare pas este posibil s
a se execute unul oarecare dintre pa
sii specicat
i ntr-o mult
ime nit
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 denit
ie
a accept
arii nedeterministe este echivalent
a cu cea de
vericare 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 pentru care r
aspunsurile armative au certificate
care pot folosite pentru a demonstra succint
(n timp polinomial) corectitudinea lor.
Intuitiv, NP este clasa tuturor problemelor de
decizie pentru care se poate verica un r
aspuns
pozitiv (da) rapid dac
a ni se d
a o solut
ie.
De exemplu, pentru problema M axCut-D un r
aspuns
armativ are drept certicat o partit
ie (S , T ) a mult
imii
v
arfurilor grafului (iar proprietatea c
a suma lungimilor
si cealalt
a n T nu
muchiilor cu o extremitate n S
dep
a
se
ste pragul k se face n timp polinomial). Deci,

M axCut-D NP.
Dac
a am considera urm
atoarea problem
a de
decizie:
UnDrum Intrare: 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 justica un r


aspuns da la o
problem
a U nDrum? Dac
a prezent
am un drum
anume drept certicat, 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 U nDrum 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 ecare v
arf al s
au?

Observat
ie. P NP co-NP.
12

Reduceri polinomiale.
Fie L1, L2 . Spunem c
a L1 se reduce polisi not
am aceasta prin L1 L2,
nomial la L2,
dac
a exist
a f : o funct
ie polinomial
calculabil
a astfel nc
at w : w L1 dac
a

si numai dac
a f (w) L2.
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 LP
si L L, atunci L P.
Fie A un algoritm polinomial care decide L
si F un algoritm de reducere polinomial
a a lui L la L. Atunci,
A = A F este un algoritm polinomial care decide L .
(x , A (x) = da A(F (x)) = da F (x) L
x L ; A e polinomial deoarece mult
imea polinoamelor
e nchis
a la operat
ia de compunere).
2.Relat
ia este tranzitiv
a: L1 L2, L2 L3 L1 L3.

Limbajul L este NP-dicil (engl. NP-hard)


dac
a L NP are loc L L.
Limbajul L este NP-complet dac
a
L NP
si L este NP-dicil.
13

Terminologia se transfer
a pentru probleme de decizie:

Spunem c
a problema de decizie P1 se reduce
polinomial la problema de decizie P2,
si not
am
P1 P2, dac
a L1 = P11(da) L2 = P21(da).
Problema de decizie P este NP-dicil
a dac
a
P NP are loc P P .
a dac
a
Problema de decizie P este NP-complet
P NP
si P este NP-dicil
a.
Folosind observat
ia 1
si faptul c
a P NP rezult
a urm
atoarea

Teorem
a Dac
a P o problem
a oarecare NPcomplet
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 dicile probleme. Dac
a g
asim un algoritm
polinomial pentru una dintre ele, putem construi un algoritm poliacate, de
si nu
nomial pentru oricare alt
a problem
a din NP. Din p
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 complexitate:
14

NP-hard

P
NP
NP-complete

Se obi
snuie
ste s
a se spun
a c
a o problem
a de optimizare
este NP-dicil
a, dac
a problema de decizie asociat
a este
a
sa. Pentru ca s
a ne aliniem la denit
iile precedente,
vom spune c
a o problem
a oarecare P (nu neaparat de
a dac
a existent
a unui algoritm
decizie) este NP-dicil
polinomial pentru P implic
a P = NP.
Comentariu metaforic: Saying that a problem is NPhard is like saying If I own a dog, then it can speak
uent English. You probably dont know whether or
not I own a dog, but youre probably pretty sure that I
dont own a talking dog. Nobody has a mathematical
proof that dogs cant speak English. Nevertheless, no
sane person would believe me if I said I owned a dog
that spoke uent English. So the statement If I own
a dog, then it can speak uent English has a natural
corollary: No one in their right mind should believe that
I own a dog! Likewise, if a problem is NP-hard, no one
in their right mind should believe it can be solved in
polynomial time. [Je Erickson, Univ. of. Illinois]
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 = {u1, . . . , un} o mult


ime nit
a de variabile
booleene.
C = C1 C2 . . . Cm o formul
a n form
a
conjunctiv
a peste U :
Ci = vi1 vi2 . . . viki i = 1, m, unde
ij {1, . . . , n} astfel nc
at
vij = u sau vij = 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 certicat pentru r
aspunsul da este o atribuire t0 care
poate vericat
a n timp polinomial.
O demonstratie c
a orice limbaj din NP se reduce polinomial la SAT necesit
a o abordare formal
a not
iunilor de
algoritm
si timp de executie (pe care le-am considerat
aici la nivel intuitiv)
si o omitem.

3SAT este restrict


ia lui SAT n care ecare
clauz
a Ci are exact trei literali (ki = 3), un
literal vij ind, 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
a (apartenent
a
obt
ine c
a 3SAT este NP-complet
la NP e clar
a ind 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 explicit
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 despre care
stim
c
a este NP-complet.
3. Se ncearc
a construirea unui algoritm de
reducere F de la L 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. Denit
ia unui graf
Un graf este o pereche G = (V (G), E(G)),
unde
- V (G) este o mult
ime nit
a nevid
a, iar
- E(G) este o submult
ime a mult
imii P2(V (G))
a p
art
ilor cu dou
a elemente ale lui V (G).
V (G) se nume
ste mult
imea vrfurilor grafului
G
si num
arul elementelor sale




V (G), este ordinul grafului G;

E(G) este mult


imea muchiilor
si

 grafului G


num
arul s
au de elemente, E(G), este dimensiunea grafului G.
Atunci cnd nu exist
a posibilitatea confuziilor,
vom nota simplu, G = (V, E).
19

Dac
a e = {u, v} E(G) este o muchie a grafului G vom nota e = uv (pentru simplicarea
scrierii)
si vom spune c
a:
muchia e une
ste vrfurile u
si v;
vrfurile u
si v sunt adiacente n G;
muchia e este incident
a cu vrfurile u
si v;
vrfurile u
si v sunt vecine n G;
vrf. u
si v sunt extremit
a
tile muchiei e.
Dac
a v V (G), atunci mult
imea
NG(v) = {w|w V (G), vw E(G)}
se nume
ste vecin
atatea vrfului v n G.
Se mai noteaz
a NG(v) = G(v).
20

Remarc
am faptul c
a graful G poate
 denit

(n mod echivalent) ca o pereche V (G), G
unde


G : V (G) P V (G)

asociaz
a ec
arui vrf vecin
atatea sa.
Dou
a muchii e
si e care au o extremitate comun
a se numesc adiacente.
Intuitiv, un graf G = (V (G), E(G)) poate
reprezentat (dup
a cum sugereaz
a
si numele
s
au) cu ajutorul unei guri plane format
a dintro mult
ime de mici forme geometrice aat
a
n corespondent

a cu mult
imea de vrfuri V (G),
dou
a forme ind unite printr-o curb
a simpl
a
dac
a
si numai dac
a, perechea de vrfuri corespunz
atoare lor este o muchie a grafului G.
Corespondent
a dintre v
arfurile grafului
si gurile geometrice considerate este vizualizat
a
21

uneori cu etichete ata


sate v
arfurilor. De asemenea, muchiile pot etichetate. In plus, sunt
utilizate diferite atribute grace pentru expresivitatea desenului, diagramei.
De exemplu,

gura

si
reprezint
a acela
si graf, de
si lipsa etichetelor
face dicil
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

1
3
3
3

4
4

22

O mult
ime independent
a de vrfuri (sau
mult
ime stabil
a) n G este o mult
ime S
V (G) de vrfuri cu proprietatea c
a
P2(S) E(G) =
(adic
a o mult
ime de vrfuri neadiacente du
a
cte 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} ind 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
2

5
e

n
G

d
H

23

Problema urm
atoare este natural
a, u
sor de formulat
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-dicil
a. Problema
de decizie corespunz
atoare,
SM

Intrare:
Intrebare:

G un graf, k N.
Exist
a S m.stabil
a n G,
cu |S| k?

este NP-complet
a (Karp, 1972). Probabil c
ao
cauz
a a dicult
a
tii 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 gura de la
pagina precedent
a).
24

O mult
ime independent
a de muchii sau cuplaj n graful G este o mult
ime de muchii neadiacente dou
a cte 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 ind 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 numeste pcolorare a (vrfurilor) lui
G o aplicat
ie c : V (G) {1, . . . , p} cu proprietatea c
a c1(i) este o mult
ime stabil
a n
G, i {1, . . . , p} (remarc
am c
a, din denit
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

4-colorare
rosu= culoarea 1
galben= culoarea 2
verde=culoarea 3
albastru=culoarea 4
negru=culoarea 5

Problema urm
atoare apare n diverse situat
ii
practice (de exemplu n problemele de orar,
sau n problemele de acoperire din wireless networks):
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 problema 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 e NP-dicil
a. Problema de decizie
COL

Intrare:
Intrebare:

G un graf, k N.
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 pcolorare a muchiilor lui G este o aplicat


ie
c : E(G) {1, . . . , p} cu proprietatea c
a c1(i)
este un cuplaj al lui G, i {1, . . . , p}.
Indicele cromatic al grafului G, notat (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 incidente n acela
si v
arf trebuie s
a aib
a culori distincte. Problema
P4

Intrare: G un graf.
Ie
sire: (G)
si un martor:
o (G)-colorare a muchiilor lui G.

29

s-a dovedit a NP-dicil


a, de
si era de a
steptat
ca (lucr
and cu cuplaje, iar problema P2 ind
din P) ca ea s
a e 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 u
sor aproximabil
a (n timp polinomial), problema P4 poate
rezolvat
a aproximativ cu o eroare de o unitate (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
H, dac
aceasta prin G =
a exist
a o biject
ie
: V (G) V (H)
cu proprietatea c
a aplicat
ia
: E(G) E(H),
denit
a pentru orice uv E(G) prin (uv) =
(u)(v) este o biject
ie.
30

(deci, dou
a grafuri snt izomorfe dac
a exist
a o
biject
ie ntre mult
imile lor de vrfuri care induce
o biject
ie ntre mult
imile lor de muchii).
Grafurile urm
atoare sunt izomorfe, a
sa cum se
sugereaz
a n gur
a
1

a
b

Problema urm
atoare este util
a n multe probleme de modelare discret
a (de exemplu n chimie)
ISO

Intrare:
Intrebare:

G, H grafuri.
H?
G=

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 aat
a ntre P
si NP). Exemplul
urm
ator arat
a dicultatea 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 circuite de lungime 4, iar n al doilea nu !)

Dac
a G = (V (G), E(G))este un graf, un automorsm 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 automorsmelor grafului G formeaz
a,
n raport cu operat
ia de compunere a aplicat
iilor,
un grup numit grupul automorsmelor grafului G, notat Aut(G).
Aut(G) este tranzitiv dac
a
v V (G), {w | Aut(G) : (v) = w} = V (G)
Exemplu:

5
4

33

2. Variat
ii n denit
ia unui graf
a) Dac
a n denit
ia unui graf,
se
a

 consider
E(G) o multimult
ime pe P2 V (G) , adic
a este


dat
a o funct
ie m : P2 V (G) N, se obt
ine
not
iunea de multigraf.


Un element e P2 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 ec
arei muchii multiple cu o singur
a muchie cu acelea
si extremit
a
ti.
Pictural, modic
arile de reprezentare sunt evidente; graful suport al multigrafului desenat
mai jos, este graful desenat pe pagina precedent
a.
1

5
4

34

b) Dac
a n denit
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 vrful v.
Exemplul urm
ator arat
a un graf general M
si
graful s
au suport.
0

35

4
23
G(M)

Pentru evitarea confuziilor, uneori grafurile


a
sa cum le-am denit 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 nit
a nevid
a (mult
imea
vrfurilor 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 snt 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 nal
a a lui a.
Pictural, digrafurile se reprezint
a la fel ca
si
grafurile, ad
augnd curbei ce une
ste dou
a guri asociate v
arfurilor o s
ageat
a pentru a preciza perechea de vrfuri corespunz
atoare arcului desenat.
36

Exemplu:

3
7
4

2
6

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 este
digraful obt
inut din D prin nlocuirea ec
arui
arc vw cu opusul s
au wv.
Dac
a D este un digraf, atunci nlocuind ecare
arc cu mult
imea de vrfuri 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 gndit ca obt
inut prin orientarea ec
arei muchii a grafului M (D)).
Un digraf complet simetric este un digraf n
care ecare pereche de vrfuri este unit
a prin
exact o pereche de arce simetrice.
Un turneu este un digraf n care orice dou
a
vrfuri snt unite prin exact un arc.
Dinamo

0
1

Petrolul
Rapid

4
2
3

Steaua

Stiinta

38

d) Grafurile innite se obt


in prin nl
aturarea
condit
iei de nitudine a mult
imii de vrfuri
si
(sau) muchii. Acestea se consider
a a num
arabile,
iar tratarea lor utilizeaz
a instrumente care nu
sunt neaparat combinatorii ( de exemplu, mecanisme generative). Un graf G local nit este
un graf innit n care NG(v) este nit
a pentru
orice vrf 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 nite de mult
imi
si vom ar
ata
c
a pot 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 vrf
al s
au, atunci valent
a sau gradul lui v n G,
notat dG(v) sau G(v) este
|{e | e E, e incident
a cu v}|.
Un vrf de grad 0 se nume
ste izolat; un vrf
de grad 1 se nume
ste pendant. Dac
a toate
vrfurile lui G au aceea
si valent

a atunci G
se nume
ste graf valent sau regulat. Un
graf 0valent se nume
ste graf nul. Un graf
3valent se numeste graf trivalent sau cubic. 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 deni


si pentru digrafuri. Dac
a v este un vrf al digrafului D
atunci valent
a interioar
a sau gradul interior

notat in(v) sau


(v)
sau
d
arul
D
D (v), este num
arcelor incidente cu v spre interior; valent
a
exterioar
a sau gradul exterior notat out(v)
+
sau +
(v)
sau
d
arul arcelor inD
D (v), este num
cidente cu v spre exterior.
De exemplu, n digraful D desenat mai jos avem
+
d
(v)
=
1,
d
D (v) = 2;
D
+
d
(u)
=
3,
d
D (u) = 0;
D
+
(w)
=
1,
d
d
D (w) = 3;
D
v

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, spanning subgraph).
Dac
a A V (G) atunci [A]G = (A, P2(A)
E(G)) se nume
ste subgraf indusn G de mult
imea
de vrfuri A (se mai noteaz
a
si G[A]).
In gura 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

10

4
8

6
6

8
3
10

10
G

G[{4,8,6,3,10}]

42

Subgraful [V (G) \ A]G se noteaz


a GA
si este
subgraful lui G obt
inut prin ndep
artarea
vrfurilor din A; n particular, dac
a A = {v},
atunci G {v} se noteaz
a G v.
Dac
a E E(G) atunci E G = (V (G), E ) este
graful part
ial sect
ionat de E n G. G E
este prin denit
ie E(G) \ E G, iar G e =
G{e} (e E(G)). Pentru G graful din gura
precedent
a
si E = {12, 14, 23, 25, 36, 59, 710, 810, 910},
obt
inem c
a E G este graful G :
2
1

10
G

Concepte similare se pot deni n mod analog


pentru multigrafuri, grafuri generale sau digrafuri.
43

5. Operat
ii cu grafuri
Dac
a G = (V (G), E(G))este un graf, atunci :
-complementarul s
au este graful
Gcu

si E(G) = P2 V (G) \ E(G).
V (G) = V (G)

Graful initial

Graful complet

Complementarul

-graful reprezentativ al muchiilor lui G este


graful L(G) cu V (L(G)) = E(G)
si
E(L(G)) = {ee | e, e E(G), e
si e adiacente n G}.
a

a
c

c
d

e
d

g
f
Graful initial

Line-graful sau

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}.
1

a
1

2
4

3
c

b
3

Graful initial
Graful total

-graful obt
inut din G prin insert
ia unui vrf
(z) pe o muchie (e = vw) este graful G = (V (G)
{z}, E(G) \ {vw} {vz, zw})

(z
/ V (G), e E(G)).

z
v

Dou
a grafuri obt
inute prin insert
ii succesive de vrfuri
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)}).
z
v

G|e

Dac
a H se poate obt
ine prin contract
ii succesive de muchii din graful G, se spune c
a
G este contractibil la H.
Fie G = (V (G), E(G))
si G = (V (G ), E(G ))
dou
a grafuri.
- Dac
a V (G) = V (G ) atunci reuniunea celor
dou
a grafuri
si intersect
ia lor se denesc
G G = (V (G), E(G) E(G )),
G G = (V (G), E(G) E(G )).
46

1
5

Intersectia

Reuniunea

-Dac
a V (G)V (G ) = atunci G G = (V (G)
ste reuniunea
V (G ), E(G)E(G )) se nume
disjunct
a a grafurilor G
si G . Reuniunea
disjunct
a a k grafuri izomorfe cu G se noteaz
a kG.
a

1
5

Reuniunea disjuncta

-Suma a dou
a grafuri G
si G este graful

G + G = G G .
47

G+G

-Produsul cartezian al grafurilor G


si G este
graful G G cu V (G G ) = V (G) V (G )

si
E(G G ) = {(v, w)(v , w )|v, v V (G), w, w V (G )
si ww E(G )sau
v = v
w = w
si vv E(G)}

G:

G x G

48

6. Clase de grafuri
Graful
complet
de ordin n : Kn





cu V (Kn ) = n
si E(Kn ) = P2 V (Kn ) .

K1

K2

K3

K4

K5

Graful nul de ordin n : Nn = K n.

N1

N2

N3

N4

N5

49

Circuitul de ordin n (n 3)
:
cu V (Cn ) = {1, . . . , n}
si
E(Cn ) = {12, 23, . . . , n 1n, n1}.

C3

C4

C5

C6

Cn

C7

Drumul de ordin n : Pn
P1 = K1, P2 = K2;
n 3 : Pn = Cn e
(e E(Cn)).

P1

P2

P3

P4

P5

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
3

omega
2

omega
4

omega
2

omega
5

Un graf bipartit este un graf G cu proprietatea 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 snt 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 bipartit, 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 Ks,t unde
s = |S|
si t = |T |.

K1,1

K1,3

K2,2

K2,3

K3,3

Pentru orice hipergraf H = (V, E), se poate


asocia un graf bipartit GH = (V, E; E(GH )),
unde v V , F E vF E(GH ) v F .
G

1
3

F1

2
4

F3
1

F2
4

5
7

6
F1

Hipergraful H

F2

5
6
7

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 reprezentat n plan astfel nct
ec
arui vrf s
a-i corespund
a un punct al planului, iar muchiilor le corespund curbe simple ce
unesc punctele corespunz
atoare extremit
a
tilor
lor
si n plus aceste curbe se interesecteaz
a
(eventual) numai n vrfuri. Un graf care nu-i
planar se num
ste neplanar. Exemple minimale
de grafuri neplanare snt grafurile K5
si K3,3.

Planar

Planar

Planar

K5 neplanar

53

De
si problema
PLAN

Intrare:
G un graf.
Intrebare: Este G planar ?

pare mult mai dicil


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 deni clase de grafuri este de a interzice aparit
ia unor subgrafuri
induse, pentru grafurile acelei clase.
Dac
a F este o mult
ime de grafuri, atunci un
graf G se nume
ste F -liber (sau F -free) dac
a
G nu are ca subgraf indus pe niciunul dintre grafurile lui F . De exemplu, clasa grafurilor nule poate denit
a ca ind clasa grafurilor K2-free; clasa grafurilor ale c
aror componente conexe sunt subgrafuri complete este
clasa grafurilor P3-free;
clasa grafurilor triangulate (sau cordale) este
clasa grafurilor (Ck )k4-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 vrfuri
si muchii
(v =)v0, v0v1, v1, . . . , vr1, vr1vr , vr (= w);
v
si w se numesc extremit
a
tile mersului.
Dac
a muchiile mersului snt distincte atunci
mersul se nume
ste parcurs (trail) n G de la v
la w.
Dac
a vrfurile snt distincte atunci mersul se
nume
ste drum (path) de la v la w.
3

mers M: 1

6 5
8

2
4
parcurs T: 9

8
9

drum P: 6

9
4

55

Dac
a v = w atunci mersul (parcursul) se nume
ste
nchis.
Dac
a ntr-un mers toate vrfurile snt distincte,
cu except
ia extremit
a
tilor, 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
circuite
impare :

3
2

8
9

4
6

9
5
circuit par :

8
9

8
1

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 snt vrfuri 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
dG(v, w).
Diametrul grafului G, notat d(G) este d(G) =
max{dG(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 diametrul d(G) mic n raport cu num
arul v
arfurilor (restrict
ie
de calitate a interconect
arii).

Denit
iile de mai sus se extind, n mod evident,pentru digrafuri singura modicare 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 vrfuri ale sale; un graf
care nu este conex se nume
ste neconex.
Orice graf G poate unic exprimat ca o reuniune disjunct
a de subgrafuri induse, conexe
si
maximale cu aceast
a proprietate; aceste subgrafuri se numesc componentele conexe ale
grafului G (mai precis, se pot deni componentele conexe ca subgrafurile induse de clasele de
echivalent

a determinate pe V (G) de relat


ia de
echivalent

a V (G) V (G) denit


a prin :
v w exist
a n G un drum de la v la w ).

Graful din gura 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 deni


si pentru digrafuri; 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
snt arbori se nume
ste p
adure.

Time to leave the trees !!!


Dac
a G este un graf conex, un vrf v V (G) cu
proprietatea c
a G v este neconex se nume
ste
vrf (punct) de articulat
ie; mai general, o
mult
ime A de vrfuri ale unui graf G se nume
ste
mult
ime separatoare de vrfuri (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;
a
un graf G cu m
acar p vrfuri este pconex dac
G = Kp sau are cel put
in p + 1 vrfuri
si nu are
mult
imi separatoare de vrfuri de cardinal mai
mic dect p.
Evident, G este 1-conex 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 pconex.

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 vrfuri este
pmuchie-conex dac
a nu admite mult
imi separatoare de muchii de cardinal mai mic dect p.
Num
arul de muchie-conexiune al lui G, notat (G), este cel mai mare num
ar natural p
pentru care G este pmuchie-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 ecare
muchie a grafului (respectiv, ecare arc al digrafului).
Un (di)graf G se nume
ste hamiltonian dac
a
are un circuit care trece prin ecare vrf.
8

10

2
11

5
7

3
9

Graf Eulerian

2
Graf care nu-i
hamiltonian

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 indica printr-o permutare a v
arfurilor care poate
testat
a n timp liniar. In schimb pentru problema
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 = ({v1, . . . , vn}, {e1, . . . , em}) este un
graf, atunci
Matricea de adiacent

a a grafului G este matricea A = (aij )nn, unde


aij =

1
0

dac
a vi
si vj snt adiacente
altminteri.

Matricea de incident

a a grafului G este matricea B = (bij )nm, unde


bij =

1
0

dac
a vi
si ej snt incidente
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 gura de mai jos,


5

1
5
1

4
6

4
3

matricea de adiacent

a este:

0 1 1 0 0

1 0 0 1 1

A = 1 0 0 1 1
,
0 1 1 0 1

0 1 1 1 0
iar matricea de incident

a:

0 0 0 0 0 1 1

1 0 1 0 0 0 1

B = 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, respectiv, 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 pentru reprezentarea (di)grafului G sunt:
a) matricea de adiacent

a
Dac
a A = (aij )nn este matricea de adiacent
a lui G atunci, reprezentarea acesteia cu ajutorul unui tablou bidimensional va necesita
O(n2) operat
ii pentru orice init
ializare, deci orice
algoritm, care folose
ste o astfel de reprezentare,
are complexitatea (n2).
Cu aceast
a structur
a de date testarea dac
a
dou
a v
arfuri sunt sau nu adiacente se face n
+
(v)),
O(1), dar parcurgerea lui NG(v) (sau NG
pentru un v
arf oarecare v V , necesit
a (n)
operat
ii.
67

b) listele de adiacent

a
Pentru ecare vrf 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
NG(v) = {v|w V
si vw E} iar dac
a G este
digraf atunci A(v) cont
ine
+
NG (v) = {v|w V
si vw E}.
Pentru cazul n care G este graf, ecare 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 de O(n+
2e). Pentru cazul n care G este digraf, spat
iul
de memorie utilizat este de O(n + e).
Listele de adiacent

a pot reprezentate cu ajutorul tablourilor sau ca structuri dinamice de


date (liste nl
ant
uite).
Testarea dac
a un v
arf xat v este adiacent cu
un v
arf oarecare w n G se face n (dG(v)), dar
se poate parcurge NG(v) n timpul O(dG(v))
si
nu O(n) ca n cazul matricii de adiacent

a.
68

Pentru digraful desenat mai jos, sunt reprezentate listele de adiacent

a:
3

3 A(2)

A(3)

1
2

A(1)

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 specice.

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 xat.
Dat G = (V, E) un (di)graf cu mult
imea vrfurilor
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 aarea ecient
a a mult
imii vecinilor nodului
curent, n procesul sistematic de vizitare).
Prezent
am succint cele dou
a tehnici principale de parcurgere.

bfs - breadth rst 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
{
vv
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) = dG(s, v);
- variabila parent dene
ste arborele bfs asociat 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 orientat cu toate v


arfurile accesibile prin drumuri
din r
ad
acin
a);
- deoarece ecare list
a de adiacent

a a unui v
arf
din mult
imea S este traversat
a exact o dat
a,
complexitatea timp a lui bf s(s) este O(nS +
mS ), unde nS = |S| iar mS = |E([S]G)|;
In gura urm
atoare sunt desenat
i arborii corespunz
atori lui bfs(1)
si bfs(2).
3

3 A(2)

A(3)

1
2

A(1)

2 0

0 1

1 3

1 2

2 6

2 5

5 1 3 1

A(5)
A(6)

72

dfs - depth rst search


Init
ial, v V are eticheta label(v) < 0

si tot
i pointerii de parcurgere a listelor de adiacent

a sunt la nceput.

label(s) 0
parent(s) 0;
creeaz
a stiva S cont
in
and s;
nS 1
while S = do
{
vv
arful din capul stivei S;
w next[A(v)]
if w then
if label(w) < 0 then
{
label(w) nS ; nS ++;
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 df s(s) este O(nS + mS ).
73

Pentru exemplul nostru de lucru, arborii dfs(1)

si dfs(2) sunt ilustrat


i mai jos.
3

3 A(2)

A(3)

1
2

A(1)

2 0

0 1

1 3

3 2

2 6

4 5

5 1 3 2

A(5)
A(6)

Parcurgerile sistematice sunt importante pentru obt


inerea
unor algoritmi ecient
i pentru determinarea componentelor conexe n grafuri, pentru determinarea componentelor tari conexe n digrafuri, componentelor 2-conexe n
grafuri etc., (care sunt preproces
ari uzuale pentru probleme mai complicate).
Ele sunt esent
iale n problemele din Inteligent
a Articial
a, unde spat
iul st
arilor de c
autare poate v
azut ca
un graf . De data aceasta graful este dat implicit; n
ecare nod (stare) se dispune de un predicat precondit
ie
care este utilizat de o funct
ie neighbours care intoarce
lista nodurilor accesibile n contextul curent din acel nod.
Graful explicit care se poate construi n principiu, este
folosit pentru descrierea algoritmului
si analizele de complexitate.
74

2. Probleme de drum minim.


Fie G = (V, E) un digraf cu mult
imea vrfurilor
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 cmp 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 = (aij )nn cu
aij =

a(ij)

dac
a ij E
altfel

Aici desemneaz
a un num
ar real mare n raport cu celelalte costuri (de exemplu > n
maxijE a(ij))
si vom presupune n plus c
a
75

a = , + = .
(Este posibil, de asemenea, ca s
a semnice
acces terminat cu insucces n structura de date
n care se reprezint
a matricea A).
Dac
a i, j V , vom nota cu
Dij = {Dij | Dij drum n G de la i la j}.
Pentru Dij Dij
Dij : (i =)v0, v0v1, v1, . . . , vr1, vr1vr , vr (= j)
mult
imea vrfurilor este V (Dij ) = {v0, v1, . . . , vr }

si mult
imea arcelor
E(Dij ) = {v0v1, v1v2, . . . , vr1vr }.
Orice vrf k = i, j al lui Dij , determin
a pe Dij
dou
a drumuri Dik Dik
si Dkj Dkj . Vom
nota Dij = Dik Dkj .
Costul unui drum Dij Dij se dene
ste

a(Dij ) = 0 +

aij .

ijE(Dij )

In particular, a(Dii) = 0.
76

Principalele probleme de drum (de cost) minim


care apar n aplicat
ii practice (sau snt utile n
rezolvarea altor probleme de optimizare combinatorie) snt:
P1 Date G digraf;a : E(G) R; s, t V (G),s = t.
D , astfel
S
a se determine Dst
nct
st
) = min{a(D ) | D D }.
a(Dst
st
st
st
P2 Date G digraf; a : E(G) R; s V (G).
D i V (G), a.
.
S
a se determine Dsi
si
) = min{a(D ) | D D }.
a(Dsi
si
si
si
P3 Date G digraf; a : E(G) R.
D i, j V (G), a.
S
a se determine Dij
.
ij
) = min{a(D ) | D D }.
a(Dij
ij
ij
ij
Observat
ii:
1. Cu convent
ia folosit
a n reprezentarea matricilor de cost adiacent

a, se poate considera
c
a Dij = i, j V .
77

Dac
a a(Dij ) < atunci Dij este drum (adev
arat)
n G de la i la j, iar dac
a a(Dij ) = , atunci Dij
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 consider
a minimele n problemele precedente, snt
nevide
si, cum digrafurile considerate snt nite, rezult
a c
a aceste mult
imi snt nite (n
ecare drum vrfurile snt distincte), deci minimele considerate exist
a.
2. Algoritmii de rezolvare a problemei (P1)
se obt
in din algoritmii de rezolvare a problemei (P2) ad
augndu-li-se un test suplimentar
(evident) de oprire.
3. Problema (P3) se poate rezolva iternd un
algoritm de rezolvare a problemei (P2). Snt
posibile ns
a solut
ii mai eciente.
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
formnd mult
imea E.
Dac
a a(e) reprezint
a lungimea arcului e, atunci
cele trei probleme de mai sus reprezint
a probleme naturale, care se pun n astfel de ret
ele:
determinarea drumurilor celor mai scurte.
Dac
a pij (0, 1] este probabilitatea de funct
ionare
a arcului ij E atunci, presupunnd c
a arcele
funct
ioneaz
a independent unele de altele, probabilitatea de funct
ionare a drumului D este
p(D) =

pij .

ijE(D)

Considernd aij = log pij , problema drumului


de cost minim de la s la t semnic
a determinarea drumului cel mai sigur de la s la t.
79

b) Ret
ele PERT (Project Evaluation and Review Technique).
imea activit
a
tilor atomFie P = {A1, . . . , An} mult
ice ale unui proiect de anvergur
a (n este mare).
P este o mult
ime part
ial ordonat
a cu relat
ia de
ordine
activitatea Aj nu poate ncepe
Ai < Aj
dect dup
a terminarea activit
a
tii Ai.
Se cunoa
ste, pentru ecare activitate Ai timpul de execut
ie ti .
Se cere s
a se determine un plan de organizare a proiectului astfel nct timpul total de execut
ie s
a e minim. (Not
am c
a
problemele practice snt mai complexe datorit
a
restrict
iilor de utilizare concurent
a a resurselor
- oameni, utilaje, etc. - de c
atre diversele activit
a
ti).
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
a
ti Al i se asociaz
a arcul il jl de
cost a(il jl ) = tl .
Nodul il reprezint
a evenimentul de nceput al
activit
a
tii Al , iar nodul jl reprezint
a evenimentul de sfr
sit al activit
a
tii Al .
Dac
a activitatea Ak poate ncepe imediat dup
a
terminarea activit
a
tii Al , se introduce n digraf
arcul jl ik ( activitate ctiv
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
unite prin cte un arc ecare element maximal
al lui P .
In digraful obt
inut (care este evident aciclic)
costul maxim al unui drum de la s la t reprezint
a
cel mai scurt timp posibil de execut
ie a proiectului.
Un drum de cost maxim se nume
ste drum
critic, ntruct ntrzierea oric
arei activit
a
ti corespunz
atoare unui arc de pe drumul critic conduce la ntrzierea 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. Dicultatea major
a este
n construct
ia digrafului (modelarea problemei
reale)
si problema devine extrem de interesant
a
dac
a (dar
si NP-dicil
a) dac
a se introduc
si
alte tipuri de restrict
ii ntre activit
a
ti (nu numai temporale).
A4: t4
0

A1: t1

A8: t8
0
A5: t5

0 0

End

A2: t2

Start

A9: t9

A6: t6
0
A3: t3

A10:t10
A7: t7

c) Problema rucsacului. Dispunem de n obiecte


de volume a1, . . . , an
si de un rucsac de volum
b (ai Z+ , i = 1, n, b Z+, ai b i = 1, n).
82

Cunoscnd protul pi R+ adus de introducerea obiectului i n rucsac, se cere s


a se
determine o nc
arcare a rucsacului de prot
total maxim:
n


max

i=1

pixi |

aixi b, xi {0, 1}i = 1, n .

i=1

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 (discrete)
si problemele de drum minim ntr-un digraf.
Consider
am G = (V, E) un digraf cu
V = {s} V1 V2 . . . Vn {t}, unde
Vi = {i0, i1, . . . , ib} este asociat obiectului i, i =
1, n.
Arcele lui G snt:
83

s10
si s1a1 cu a(s10 ) = 0
si a(s1a1 ) = p1.
( se pune obiectul 1 n rucsac
si se obt
ine protul
p1, ajung
andu-se la nivelul a1 de umplere, sau nu se
pune obiectul 1 n rucsac, protul ind 0
si nivelul
de umplere r
am
an
and 0).

i = 2, n j = 0, b:
(i 1)j ij cu a((i 1)j ij ) = 0;
(dac
a decidem s
a nu introducem obiectul i n rucsac, 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 protul
ce se va ad
auga este 0).

Dac
a j ai 0 atunci
avem
si arcul

(i 1)jai ij cu a (i 1)jai ij = pi.
(se poate ajunge la o nc
arcare j prin introducerea
arcare a primelor
obiectului i de volum ai la o nc
i 1 obiecte de nivel j ai).

j = 0, b: nj t cu a(nj t) = 0.
84

Figura urm
atoare ilustreaz
a construct
ia acestui digraf.
0

1:0

2:0

n:0
0

p2
p1

1:1

2:1

n:1

2:a2

n:2 0

1:a1

2:a1
p2
0

2:a1+a2

1:b

2:b

n:b

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 prot 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 u
sor transformat
a n una procedural
a
astfel nct digraful s
a reprezinte doar ilustrarea
unei metode de programare dinaminc
a (prospectiv
a) pentru rezolvarea problemei rucsacului.
Atent
ie !

Problema rucsacului este referit


a uzual

ca una din problemele NP-dicile. 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 nct
(I)

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

Atunci (u1, . . . , un) este o solut


ie a sistemului

us = 0

()

(uj + aji )

ui = min
j =i

i = s.

D astfel
dac
a
si numai dac
a i V , Dsi
si
) = u

nct a(Dsi
i si a(Dsi ) = min{a(D) | D
Dsi}.
( i V ) solut
Demonstrat
ie: Fie Dsi
ii
) = min{a(D) | D
ale problemei (P2) cu a(Dsi
) (i V ).
Dsi}. Not
am cu ui = a(Dsi

87

Ipoteza (I) asigur


a faptul c
a us = 0, adic
a
prima ecuat
ie a sistemului (*) este vericat
a.
are un penultim v
Pentru i = s drumul Dsi
rf
j. Dac
a Dsj este drumul de la s la j determi de v
) =
rful j, avem: ui = a(Dsi
nat pe Dsi
)+a =u +a .
a(Dsj ) + aji a(Dsj
ji
j
ji
Ar
at
am c
a ui = uj + aji .
Presupunem c
a ui > uj + aji , adic
a a(Dsj ) >
). Avem dou
a cazuri posibile:
a(Dsj
). Atunci D 1 = D (j, ji, i) D
1. i V (Dsj
si
sj
) + a < a(D ) + a = a(D ),

si a(D1) = a(Dsj
ji
sj
ji
si

ceea ce contrazice alegerea drumului Dsi (vezi


gura urm
atoare).
Dsj
j
i
s
D*sj

88

). Fie D = D D
2. i V (Dsj
a
si
ij cele dou
sj
de v
drumuri determinate pe Dsj
rful i. Atunci
circuitul C = Dij (j, ji, i) are costul a(C) =
) a(D ) + a = u + a
a(Dij ) + aji = a(Dsj
si
ji
j
ji
) = u +a u < 0, cona(Dsi) uj +aji a(Dsi
j
ji
i
trazicnd ipoteza (I) (vezi gura urm
atoare).
Dij
Dsj

C
j
i

s
D*sj

Deci am demonstrat c
a i = s ui = uj + aji.

Dac
a ui nu satisface (*), atunci ar exista j1
astfel nc
at ui > uj1 + aj1i. Atunci, ca mai sus,
se poate construi un drum de cost mai mic
dec
at ui de la s la i.
89

Rezult
a c
a sucient
a teoremei este demonstrat
a.
Not
am c
a de fapt am dovedit mai sus c
a a(Dsj ) =
) adic
a(Dsj
a, dac
a j este vrful dinaintea lui i
pe un drum de cost minim de la s la i atunci

si port
iunea de drum de la s la j este drum de
cost minim de la s la j. Inductiv, rezult
a :
(Principiul optimalit
a
tii al lui Bellman) dac
a
este drum de cost minim de la s la i atunci
Dsi
), dac
= D D atunci D
j V (Dsi
a Dsi
sj
ji
sj
(respectiv Dji) snt drumuri de cost minim de
la s la j (respectiv de la j la i).
. Dovedim c
a dac
a (u1, . . . , un) este o
solut
ie a lui (*) atunci
(a) Dsi Dsi : ui = a(Dsi), i V.
)).
(b) i V ui = min{a(D) | D Dsi}(= a(Dsi
90

(a) Dac
a i = s, atunci us = 0
si drumul Dss
satisface a(Dss) = 0 = us.
Dac
a i = s, consider
am urm
atorul algoritm:
v i; k 0;
while v = s do
a w astfel nct uv = uw + awv ;
{ determin
// w pentru c
a uv satisface (*)

ik v; k + +; v w

ik+1 s

S
a observ
am c
a algoritmul determin
a drumul
D : (s =)ik+1, ik+1ik , . . . , i1, i1i0, i0(= i)
cu D Dsi satisf
acnd a(D) = a(ik+1 ik ) + +
a(i1i0) = (uik uik+1 ) + (uik1 uik ) + +
(ui0 ui1 ) = ui0 uik+1 = ui us = ui.
Nu este posibil ca ntr-o iterat
ie oarecare w
{i0, . . . , ik1}, c
aci atunci s-ar obt
ine un circuit
C de cost total 0, contrazicnd ipoteza (I).
91

Din construct
ie, se observ
a c
a ui = ui1 + ai1i.
) i V . Conform primei
(b) Fie ui = a(Dsi
p
art
i a demonstrat
iei ui, i = 1, n, satisfac sistemul (). Presupunem c
a u = (u1, . . . , un) =
u = (u1, . . . , un). Cum us = us = 0, rezult
a c
a
exist
a i = s astfel nct ui = ui
si j V (Dsi),
j = i, uj = uj , unde Dsi este drumul construit
la (a) pentru ui. Atunci avem:
ui > ui = ui1 + ai1i = ui1 + ai1i
(din alegerea lui i)
ui
pentru c
a ui satisface (*).

a ui
Contradict
ia g
asit
a arat
a c
a u = u, deci c
reprezint
a costuri de drumuri minime.

92

Observat
ii 1. Din demonstrat
ie rezult
a c
a pentru rezolvarea problemei P2 este sucient 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
ui = uk + aki atunci a
sa cum am v
azut, k este
vrful dinaintea lui i de pe drumul minim de la
s la i de cost ui.
Rezult
a c
a dac
a n algoritmul de rezolvare a lui
() construim un tablou nainte[1..n] cu componente din V {0, } cu interpretarea nal
a
nainte[i]=vrful dinaintea lui i de pe drumul
minim de la s la i, atunci vrfurile acestui drum
pot determinate n O(n) construind
sirul i,
nainte[i], nainte[nainte[i]],. . . pn
a se depisteaz
a vrful 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 sistemului (), problema (P2) este rezolvat
a. Rezult
a
c
a ace
sti algoritmi vor rezolva problema (P2)
n condit
ia
(I )

C circuit n G, a(C) 0.

3. In cazul grafurilor, rezolvarea problemelor


(P1)-(P3) corespunz
atoare se poate face utiliznd algoritmii pentru digrafuri, prin nlocuirea
ec
arei muchii cu o pereche de arce simetrice de acela
si cost ca
si muchia pe care o
nlocuiesc.
Dicultatea 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 snt valabili doar dac
a toate costurile snt nenegative.
94

4. Avnd n vedere c
a mult
imile Dij snt nite,
se pot considera probleme analoge problemelor
(P1)-(P3) nlocuind min cu max.
Utilizarea ideii uzuale,
max x = (min(x))
xA

xA

prin nlocuirea costurilor aij cu aij este posibil


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 hamiltoniene) a N P -dicile.
95

Rezolvarea problemei (P2) n cazul digrafurilor f


ar
a circuite
O numerotare aciclic
a a (vrfurilor) digrafului G = (V, E) este un vector ord[v] v V ,
(cu interpretarea ord[v] = num
arul de ordine
al vrfului v) astfel nct
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 admite o numerotare aciclic
a atunci G nu are circuite (dac
a v1, v2, . . . , vk , v1 snt vrfurile unui
circuit atunci, cum G are o numerotare aciclic
a, obt
inem ord[v1] < ord[v2] < . . . < ord[vk ] <
ord[v1], contradict
ie ).
96

Reciproc, dac
a G nu are circuite atunci exist
a un vrf
v0 V
astfel nct d
G (v0) = 0
(altfel, datorit
a nitudinii digrafului, se poate
construi un circuit); punem ord[v0] 1, consider
am G G-v0
si repet
am rat
ionamentul
(proprietatea de a nu avea circuite se transmite la subdigrafuri induse).
Aarea 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 problema 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 vrfurilor,
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
si vrfurile de grad inG
terior 0 le memor
am ntr-o stiv
a S0 ;
si-l nu(a)- scoatem vrful din topul stivei S0
merot
am;
(b)- sc
adem 1 din gradele interioare ale vrfurilor
din lista de adiacent

a a vrfului tocmai numerotat(l scoatem din digraf) ;


(c)- n modicarea anterioar
a, crearea unui vrf
de grad interior 0 va implica memorarea lui n
stiva S0;
(d)- relu
am secvent
a (a) (c) pn
a cnd stiva
devine vid
a.
Dac
a nu s-au numerotat toate vrfurile rezult
a
c
a digraful cont
ine circuite; n cazul epuiz
arii
vrfurilor, 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. u1 0; nainte[1] 0;
for i := 2 to n do
{ ui ; nainte[i] 0;
for j := 1 to i 1 do
if ui > uj + aji then
{ ui uj + aji ;
nainte[i] j
}
}

Complexitatea pasului 2 este, evident


O(1 + 2 + + n 1) = O(n2).
99

Rezolvarea problemei (P2) n cazul costurilor nenegative.

Algoritmul lui Dijkstra


Dac
a aij 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 (Dijkstra, 1961).
Se consider
a S V astfel nct pe parcursul
algoritmului are loc
(D) :

i S
i V \ S

ui = min{a(Dsi) | Dsi Dsi }


ui = min{a(Dsi) | Dsi Dsi , V (Dsi ) \ S = {i}}

Dac
a se reu
se
ste construirea lui S astfel nct
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 cte un nou vrf din V .
100

Algoritmul lui Dijkstra


1. S {s}; us 0; nainte[s] 0;
for i V \ {s} do
{ ui asi; nainte[i] s }
// dup
a aceste init
ializ
ari (D) are loc

2. while S = V do
{
determin
a j V \ S : uj = min{uj | j V \ S};
S : S {j };

for j V \ S do
if uj > uj + aj j then
{ uj uj + aj j ; nainte[j] j }

Corectitudinea algoritmului va rezulta dac


a vom
ar
ata c
a, dac
a naintea unei iterat
ii din pasul 2 are loc (D), atunci, dup
a execut
ia acelei
iterat
ii, (D) are loc de asemenea.
Ar
at
am mai nti 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 uj = min{uj | j
V \ S} atunci uj = min{a(Dsj ) | Dsj Dsj }.
101

1 D astfel
Presupunem c
a exist
a Dsj
nct

sj
1 ) < u .
a(Dsj

j
Cum S satisface (D), avem
uj = min{a(Dsj ) | Dsj Dsj , V (Dsj ) \ S =
1 ) \ S = {j }.
a c
a V (Dsj
{j }}. Rezult

1 (
Fie k primul vrf al drumului Dsj
n parcurgerea sa din s) astfel nct k
/ S.
1 ) = a(D 1 ) + a(D 1 ).
Atunci a(Dsj

sk
kj
1 ) \ S = {k}
Din alegerea lui k, avem V (Dsk
si
1 ) = u . Obt
cum (D) are loc, avem a(Dsk
inem
k
1 ) = u + a(D ) u (costurile s
uj > a(Dsj
nt

k
k
kj
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(Dsj ) | Dsj Dsj , V (Dsj ) \ (S {j }) =
{j}} = min min{a(Dsj ) | Dsj Dsj , V (Dsj ) \
S = {j}},
min{a(Dsj ) | Dsj Dsj , V (Dsj ) \ S =

{j, j } .
102

Cum (D) are loc, primul din cele dou


a minime
de mai sus este uj . Fie j valoarea celui de1 drumul pentru care
al doilea minim
si e Dsj
1 ), avem =
se realizeaz
a. Cum j V (Dsj
j
1
1
a(Dsj ) + a(Dj j ).
Intruct S {j } satisfce prima parte a lui (D),
1 ) = u (altfel s-ar contrazice alegerea
avem a(Dsj
j
1
1 , port
1 cu un
iunea Dsj
lui Dsj nlocuind n Dsj
drum de cost mai mic). Deci j = uj +
a(Dj1 j ).
Dac
a drumul Dj1j este de lungime 1 atunci
avem j = uj + aj j .
Altfel, considernd k vrful dinaintea lui j de
1 avem k = j , k S
pe drumul Dsj
si j =
1 ) + a . Cum S {j } satisface prima
a(Dsk
kj
parte a lui (D), obt
inem j = uk + akj .
Intruct S satisface (D), uk este costul unui
drum minim de la s la k cu vrfurile cont
inute
n S deci j este costul unui drum de la s la j
cu vrfurile cont
inute n S. Rezult
a c
a j uj ,
c
aci S satisface (D).
103

Am obt
inut c
a singurul caz n care j < uj este
ie testat
a
atunci cnd j = uj +aj j < uj , situat
n ciclul for al pasului 2.
Rezult
a c
a (D) are loc pe tot parcursul algoritmului
si deci valorile nale ale variabilelor
ui reprezint
a solut
ia sistemului (). Evident,
tabloul nainte este actualizat pentru memorarea implicit
a a drumurilor de cost minim.
Complexitatea timp a algoritmului, n descrierea dat
a este O(n2) datorit
a select
arii minimelor din pasul 2.
Este posibil
a organizarea unor cozi cu prioritate (de exemplu heap-urile) pentru a memora
valorile ui, i U = V \ S, astfel nct extragerea
minimului s
a se fac
a n O(1), iar actualiz
arile
necesare n pasul 2 s
a se fac
a n timpul total de O(m log n) unde m = |E| (execut
anduse O(m) descre
steri de valori ui, ecare necesit
and O(log n) operat
ii; Johnson ,1977).
104

Cea mai bun


a implementare se obt
ine util
az
and
heap-uri Fibonacci, ceea ce conduce la o complexitate timp de O(m + n log n) (Fredman
si
Tarjan, 1984).
Op
adure cu r
ad
acini ( rooted forest) este un
digraf aciclic D = (V, A) cu proprietatea c
a
ecare 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 ec
arui v
arf v pot
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 + 2 log |V | copii.
Dem. Not
am cu (v) num
arul v
arfurilor accesibile 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 armat
ia din enunt
ul teoremei.
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 e vi copilul num
arul i al lui
v (i = 1, . . . , k).
+

at
Avem, (vi ) 2(d (vi)1)/2 2(i1)/2, ntruc
d+ (vi) i 2.
k
k
Deci (v) = 1+ i=1 (vi) 1+ i=1 2(i3)/2
2(k1)/2,
si teorema e demonstrat
a.
106

Un heap Fibonacci cont


in
and valorile reale
(uj ; j U ) este o p
adure Fibonacci F = (U, A)
(ecare v
arf j are ordonat
i copii astfel nc
at
copilul num
arul i are cel put
in i2 copii) n care
este precizat
a o mult
ime T U astfel nc
at:

( i) dac
a jk A atunci uj uk ;
(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 j1
si j2 sunt dou
a r
ad
acini distincte
atunci d+ (j1) = d+(j2).
Teorema anterioar
a ne asigur
a c
a num
arul
r
ad
acinilor nu va dep
a
si 2 + 2 log |U |.
Heapul Fibonacci va reprezentat cu ajutorul
urm
atoarei structuri de date:
- c
ate o list
a dublu nl
ant
uit
a Cj a copiilor
ec
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 + 2 log |U |)
cu proprietatea c
a b(d+ (j)) = j pentru ecare
r
ad
acin
a j;
-funct
ia l : U {0, 1} cu l(j) = 1 dac
a
si numai dac
a j T.

Teorem
a. Pentru g
asirea
si
stergerea de n ori
a unui j care minimizeaz
a uj
si descre
sterea de
m ori a unei valori uj , structura de date poate
fi actualizat
a n timpul O(m + p + n log p), unde
p este num
arul de v
arfuri din p
adurea init
ial
a.
Dem. Pentru g
asirea unui j care minimizeaz
a
uj este sucient s
a parcurgem ub(i) pentru i =
0, . . . , t, deci n O(log p). Un astfel de element
j (cu uj minim) se poate
sterge astfel:
-e v1, . . . , vk copii lui j;
-
stergem j
si arcele ce ies din j din p
adure;
-acum v1, . . . , vk au devenit r
ad
acini, iar condit
iile
(i)
si (ii) nu-s afectate;
108

-pentru repararea condit


iilor (iii) se execut
a
pentru ecare r = v1, . . . , vk :
repar
a(r): dac
a s r
ad
acin
a cu d+ (r) = d+(s)
a s ca ultim copil
atunci: dac
a ur us, adaug
a r
al lui r
si repar
a(r), altfel ( ur > us), adau
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 uj pentru un j U se
face astfel:
declar
a r
ad
acin
a(j):
dac
a j are un p
arinte, e acesta v, atunci
se
sterge arcul vj
si se aplic
a repar
a(r);
dac
av
/ 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(uj )+decr(T )
decr(uj )+incr(T )+p 2decr(uj )+p=2m + p,
deoarece cre
stem T cel mult o dat
a dup
a ce a
descrescut un uj .
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(n log p+ num
arul de apeluri ale lui declar
a r
ad
acin
a)+p

2(n log p + 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+n log p)

si teorema e demonstrat
a.
110

Corolar. Algoritmul lui Dijkstra pentru rezolva


rea problemei P2 se poate imlementa cu ajutorul heap-urilor Fibonacci n complexitatea timp
O(m + n log n).
Demonstrat
ia rezult
a din teorema precedent
a

si din urm
atoarea gur
a care indic
a un mod de
construct
ie a heap-ului init
ial (binomial):

B4

B3

B2

B1

B0

111

Dac
a se dore
ste rezolvarea problemei (P1) cu
ajutorul algoritmului lui Dijkstra, atunci, la introducerea lui t n S, se poate opri algoritmul.
Complexitatea, n cazul cel mai nefavorabil,
r
amne aceea
si. Totu
si, n situat
ii practice concrete exist
a posibilitatea de a gr
abi introducerea lui t n S utiliznd o funct
ie de dirijare a
procesului de construct
ie a lui S.
O funct
ie g : V R+ se nume
ste estimator
consistent dac
a
(i) i V ui + g(i) min{a(Dst) | Dst
si i V (Dst)};
Dst
(ii) ij E g(i) aij + 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 snt
satisf
acute condit
iile (ii).
112

Dac
a g este un estimator consistent atunci se
poate modica alegerea lui j n algoritm astfel: uj + g(j ) = min{uj + g(j) | j V \ S}.
Algoritmul r
amne 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
vrfuri 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 digrafului. In cazul digrafurilor cu multe vrfuri


(n care, de exemplu, listele de adiacent

a snt
memorate n memoria secundar
a), sau n cazul
digrafurilor date funct
ional (se dispune de o
procedur
a care construie
ste pentru un vrf dat,
lista sa de adiacent

a) aceast
a implementare
este neecient
a, respectiv neaplicabil
a. O implementare care nu are aceste decient
e este
urm
atoarea datorat
a lui Glover, Klingman
si
Philips (1985)
113

Partition Shortest Path ( PSP) algorithm:


1. us 0; nainte(s) 0;
S ; N OW {s}; N EXT ;
2. while N OW N EXT = do
{ while N OW = do
{ Extrage i din NOW;
S S {i};
L NG+ (i);// se genereaz
a n L, lista de
adiacent

a
si costurile corespunz
atoare
for j L do
if j
/ N OW N EXT then
{ uj ui + aij ; nainte(j) i;
introdu j n NEXT
}
else if uj > ui + aij then
{ uj ui + aij
nainte(j) i
}
}
if N EXT = then
{ determin
a d = min{ui | i N EXT };
transfer
a i N EXT cu ui = d n NOW
}
}

114

Rezolvarea problemei (P2) n cazul general.


Dac
a exist
a ij E astfel nct aij < 0, algoritmul lui Dijkstra nu mai este valabil n general
(introducerea lui j n S poate conduce la violarea condit
iei (D)).
Considernd ndeplinit
a condit
ia (I) vom rezolva sistemul () prin aproximat
ii succesive.
Consider
am i V
si m = 1, n 1
(BM )
um
i = min{a(D) | D Dsi , 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

u1 = (u11, . . . , u1n), u2 = (u21, . . . , u2n), . . .,


n1), atunci un1 este
un1 = (u1n1, u2n1, . . . , un
solut
ia sistemului ().
Algoritmul care rezult
a este urm
atorul:
115

Algoritmul lui Bellman, Ford, Moore ( 1960)


1
1. u1
s 0; for i V \ {s} do ui asi ;
// evident (BM) are loc
2. for m := 1 to n 2 do
for i := 1 to n do


m+1
m
m
ui
min ui , minj =i(uj + aji )

Pentru a demonstra corectitudinea algoritmului, ar


at
am c
a dac
a um(m 1) satisface (BM)
atunci
si um+1 o satisface. Fie i V
si consider
am mult
imile de drumuri:
A = {D | D Dsi, num
arul arcelor lui D m+1}.
arul arcelor lui D m}.
B = {D | D Dsi, num
C = {D | D Dsi, 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 um satisfac (BM), rezult


a c
a
min{a(D) | D A} = min(um
i , min{a(D) | D
C}).
Fie min{a(D) | D C} = a(D 0), D0 C.
Dac
a j este vrful ce-l precede pe i n D0 (exacar 2 arce) atunci
ist
a, ntruct D0 are m
0 ) + a um + a ,
a(D0) = a(Dsj
ji
ji
j
0 are m arce
si um satisface (BM).
ntruct Dsj
Rezult
a c
a
m +
min{a(D) | D A} = min{um
,
min
(u
j
=
i
i
j
aji )} valoare care n algoritm se atribuie lui
.
um+1
i
Observ
am c
a algoritmul are complexitatea de
O(n3) dac
a determinarea minimului din pasul
2 necesit
a O(n) operat
ii.
Determinarea drumurilor minime se face ment
innd
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.. uin1 > minj =i(ujn1 + aji ))
thenexist
a circuit de cost negativ .

se obt
ine posibilitatea test
arii n O(n3) a
existent
ei unui circuit C de cost negativ n digraful G (altfel, din demonstrat
ia corectitudinii
algoritmului ar trebui s
a nu se poat
a mic
sora
uin1).
Depistarea circuitului C se face simplu (O(n))
utiliznd vectorul nainte.
2. Dac
a exist
a k < n 1 astfel nct uk = uk+1
atunci algoritmul se poate opri. Mai mult, se
poate obt
ine o implementare a acestui algoritm, care s
a aib
a complexitatea O(nm), folosind
o coad
a U Q n care se vor p
astra vrfurile i
a,
c
arora li se modic
a ui curent (se va renunt
evident, la memorarea tuturor aproximat
iilor
succesive).
118

Rezolvarea problemei (P3).


Consider
am
uij = min{a(Dij ) | Dij Dij } i, j V.
Problema se reduce la determinarea matricii
ste A maU = (uij )nn, atunci cnd se cunoa
tricea de cost-adiacent
a.
Drumurile de cost minim vor obt
inute n O(n)
dac
a odat
a cu determinarea matricii U se va
construi matricea

Inainte=(nainte(i,j))nn cu elementele avnd


semnicat
ia
nainte(i,j)=vrful dinaintea lui j de pe drumul
de cost minim de la i la j n G.
S
a observ
am c
a dac
a aij 0 ij, atunci, iternd
algoritmul lui Dijkstra pentru s {1, . . . , n}, se
obt
ine un algoritm de complexitate O(n3).
119

Dac
a G nu cont
ine circuite de cost negativ, dar
exist
a
si arce de cost negativ, iternd algoritmul
ine un
lui Bellman Ford pentru s = 1, n se obt
algoritm de complexitate O(n4).
Ar
at
am n continuare c
a se poate proceda
si
mai ecient.
Solut
ia I a.
Fie : V R a. . ij E (i) + aij (j).
Consider
am a : E R+ dat
a de
aij = aij + (i) (j), ij E.
Avem aij 0
si, n plus, oricare ar Dij Dij ,
(2)

a(Dij ) = 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 (uij := uij (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(n3), xnd
sV
si rezolvnd (P2) cu alg. Bellman-Ford.
In adev
ie a lui
ar, dac
a (ui, i V ) este solut
(P2), atunci (uj , j V ) este solut
ie a sistemului () uj = mini =j {ui + aij }, adic
a ij E
uj ui + aij , sau, aij + ui uj 0.
Deci, se poate considera (i) = ui i V .
Solut
ia a II a.
Fie
um
ij = min{a(Dij ) | Dij Dij , V (Dij ) \ {i, j}
{1, 2, . . . , m1}} i, j {1, 2, . . . , n}, m = 1, n + 1.
121

Atunci, evident u1
ij = aij i, j V (presupunem
matricea A avnd elementele diagonale egale
cu 0). In plus,
m m
m
=
min{u
,
u
+u
um+1
ij
im
mj } i, j V, m = 1, . . . , n.
ij

Aceast
a ultim
a relat
ie se poate justica inductiv: un drum de cost minim de la i la j care nu
are vrfuri interioare m poate s
a nu cont
in
a
vrful m,
si atunci are costul um
ij , sau poate
cont
ine vrful m,
si atunci, din principiul optimalit
a
tii al lui Bellman
si ipoteza inductiv
a,
m
este um
im + umj .
Evident, dac
a se obt
ine um
ii < 0 atunci digraful
cont
ine un circuit de cost negativ C care trece
prin vrful i, cu V (C) \ {i} {1, . . . , m 1}.
Aceast
a solut
ie a problemei (P3) este cunoscut
a ca algoritmul lui Floyd-Warshal
si poate
descris astfel:
122

1: for i := 1 to n do
for j := 1 to n do
{ nainte(i, j) i;
if i = j then { aii 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 aij > aim + amj then
{ aij aim + amj ;
nainte(i, j) nainte(m, j)
if (i = j aij < 0) then
return circuit negativ
}
Evident, complexitatea algoritmului este de O(n3).
Observat
ie. Dac
a digraful nu cont
ine circuite
de cost negativ, atunci init
ializnd aii , valorile nale ale elementelor diagonale dau costul
minim al unui circuit ce trece prin vrful corespunz
ator.
123

Solut
ia a III a. Consider
am aii = 0 i V (G
nu cont
ine circuite de cost < 0).
Iterarea algoritmului lui Bellman Ford corespunde
urm
atoarei abord
ari. Fie
um
ij = min{a(Dij ) | Dij Dij , Dij are cel mult m arce}
i, j V , m = 1, 2, . . . , n 1.
Dac
a not
am U m = (um
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 u0
ij if i = j else 0;
2. for m := 0 to n 2 do
for i, j V do um+1
= mink (um
ij
ik + akj );
(n minimul anterior, comparat
ia cu um
ij din
algoritmul Bellman Ford, se realizeaz
a pentru k = j,
si utiliznd ipoteza c
a ajj = 0).
Intregul proces de calcul se poate rescrie matricial dac
a se consider
a urm
atorul produs pe
mult
imea matricilor p
atrate cu elemente reale:
124

B, C Mnn

B C = P = (pij )

unde, pij = mink=1,n(aik + bkj ).


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
si inductiv rezult
a c
a
U m+1 = U m A
U 1 = A, U 2 = A(2), . . . , U n1 = A(n1)
unde A(k) = A(k1) A
si A(1) = A.
In ipoteza c
a graful nu are circuite de cost negk
ativ, atunci A(2 ) = A(n1) k : 2k n 1.
Rezult
a c
a determinarea succesiv
a a matricilor
A, A(2), A(4) = A(2) A(2), . . . conduce la un algoritm de complexitate O(n3 log n) pentru rezolvarea problemei (P3)
125

(desigur, matricea
Inainte se va obt
ine n O(n3)
operat
ii ca n demonstrat
ia teoremei 1, dup
a
determinarea lui U n1.)
Dac
a produsul matricial considerat se face
cu algoritmi mai performant
i atunci se obt
ine
o rezolvare ecient
a a problemei (n3 din evaluarea precedent
a se poate nlocui cu nlog2 7 =
n2,81(Strassen 1969); sau chiar cu n2,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 vrf x X la un vrf y Y , astfel nct
V (D) X = {x}
si V (D) Y = {y}.
In gura al
aturat
a, D1 : a, v, u, t, c
si D2 : a, d
sunt singurele XY -drumuri ce pornesc din a :
v
a
t
u
c
b

Vom nota cu D(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 D1
si D2 snt disjuncte
dac
a V (D1) V (D2) = .
Probleme practice evidente, din ret
elele de co
municat
ie, dar
si unele probleme legate de conexiunea grafurilor
si digrafurilor, necesit
a determinarea 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 grafurilor.
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 nct D D(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 denit
ie, rezult
a urm
atoarele propriet
a
ti
imediate ale mult
imilor XY -separatoare:
(a) Dac
a Z S(X, Y ; G) atunci D D(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 nct
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 D(X, Y ; G).
129

Proprietatea (d) este esent


ial
a pentru obt
inerea
teoremei urm
atoare
si este evident
iat
a mai jos

Teorem
a. 1. Fie G = (V, E) (di)graf
si X, Y
V . Atunci
p(X, Y ; G) = k(X, Y ; G).
a p = p(X, Y ; G)
si
Demonstrat
ie: 10. Dac
D1, D2, . . . , Dp snt XY -drumuri disjuncte n G,
atunci Z S(X, Y ; G) avem Z V (Di) =
si
cum Di snt disjuncte (i = 1, p):

p
|Z| |Z i=1V (Di )| = i=1,p |Z V (Di)|

i=1,p 1 = p.
Deci Z S(X, Y ; G) |Z| p; n particular
k(X, Y ; G) p(X, Y, G).
130

20. 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
10, teorema e demonstrat
a).
Cum () se veric
a pentru (di)grafuri G cu
a(G) = 1, 2, consider
am n pasul inductiv c
a
() are loc pentru orice (di)graf G
si orice
X , Y V (G ), cu a(G ) < a(G). Pentru a
exclude cazurile banale, vom presupune c
a
X Y , Y X
si k = k(X, Y ; G) > 0.
Cazul 1. Exist
a Z S(X, Y ; G) astfel nct
|Z| = k, Z = X, Y .
Consider
am VXZ = {v | D D(X, Z; G) : v
V (D)}
si VZY = {v | D D(Z, Y ; G) : v
V (D)}.
131

S
a observ
am c
a VXZ VZY = Z
(dac
a exist
a v VXZ VZY Z, atunci se
obt
ine c
a Z nu este XY-separatoare; dac
a exist
a z Z astfel nct z
/ VXZ VZY atunci
Z {z} este XY-separatoare, contrazicnd |Z| =
k(X, Y ; G)).

Z
X
Vxz

Y
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, contrazicnd ipoteza cazului
1)
si evident x
/ VZY (altfel, Z nu ar XY separatoare). Rezult
a |VZY | < |V |. In mod
similar |VXZ | < |V |.
132

Fie GXZ = [VXZ ]G


si GZY = [VZY ]G. Din
observat
iile precedente: a(GXZ ), a(GZY ) < a(G).
Avem k(X, Z; GXZ ) = k
si k(Z, Y ; GZY ) = k
(Z este XZ- separatoare n GXZ , respectiv ZY -separatoare
si are cardinalul k; dac
a n unul din cele dou
a gran GZY
furi, ar exista o mult
ime T separatoare de cardinal < k,
atunci, utiliznd observat
ia (d), se contrazice denit
ia
lui k pentru G, X
si Y ).

Din ipoteza inductiv


a, rezult
a c
a exist
a k XZsi k ZY -drumuri disdrumuri disjuncte n GXZ
si |Z| = k,
juncte n GZY . Cum VXZ VZY = Z
rezult
a c
a aceste 2k drumuri se pot concatena
dou
a cte dou
a n G (vezi gura de mai jos)
si
deci () are loc.

133

Cazul 2. Oricare ar Z XY -separatoare


astfel nct |Z| = k avem Z = X sau Z = Y .
Presupunem, pentru precizarea notat
iilor, Z =
X. Cum X Y , 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 (exist
a!). S
a observ
am c
a y
/ X. Consider
am
G = G e. Avem a(G ) < a(G), deci () are
loc pentru G , X
si Y .
Dac
a k(X, Y ; G ) = k, atunci cele k XY -drumuri
disjuncte din G snt XY -drumuri disjuncte
si n
G deci () are loc pentru G, X
si Y .
a Z
Dac
a k(X, Y ; G ) < k, atunci n G exist
XY -separatoare cu |Z | = k1 (se aplic
a, eventual, proprietatea (c)).
134

Deci Z nu este XY -separatoate n G (|Z | < k).


Singurele XY -drumuri pe care Z nu le intersecteaz
a snt cele care au drept prim
a muchie
(arc) pe e.
Din denit
ia lui k, rezult
a c
a x
/ Z , y
/ Z
si
|Z {x}| = |Z {y}| = k.
si
Din alegerea lui x
si y avem Z {x} = Y
Z {y} = X.
Din ipoteza cazului 2, rezult
a atunci c
a
Z {x} = X
si Z {y} = Y .
Cele k drumuri din () snt n acest caz
si (x, xy, y).
{z}zZ
e

Y
X

Cu acestea, teorema este demonstrat


a.
135

Observat
ii: 10. Egalitatea min-max din enunt
ul
teoremei este interesant
a
si conduce, a
sa cum
vom vedea, la rezultate importante, n cazuri
particulare.
20 Teorema se poate demonstra
si algoritmic
ca o consecint

a a teoremei uxului maximsect


iunii minime, a
sa cum vom ar
ata n capitolul relativ la probleme de ux.
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 nct 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
artnd mai put
in de k
vrfuri 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 snt intern disjuncte
dac
a nu au vrfuri comune cu except
ia extremit
a
tilor.
si
Se observ
a c
a dac
a se consider
a X = NG(s)
+

Y = NG(t) (respectiv, NG
(s)
si NG
(t) n cazul
digrafurilor) teorema 1 se obt
ine imediat din
teorema 1.
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 denit un graf G p-conex (p N ) dac


a
G = Kp sau dac
a |G| > p
si G nu poate
deconectat prin ndep
artarea a mai put
in de p
vrfuri. Utiliznd teorema 2 obt
inem
Corolar. Un graf G este p-conex dac
a G = Kp
sau st E(G) exist
a p drumuri intern disjuncte 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 determinarea lui
min p({s}, {t}; G)

stE(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 cnd G este un graf bipartit iar X

si Y snt 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 vrfuri incidente cu
toate muchiile grafului.
Demonstrat
ie: Evident, cardinalul maxim al
unui cuplaj n G este
p(S, R; G), care este egal, conform teoremei 1,
cu k(S, R; G).
Teorema rezult
a imediat dac
a observ
am c
a o
mult
ime de vrfuri 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).

Denit
ie: Fie I
si S mult
imi nite nevide. Numim familie de submult
imi ale lui S (indexat
a
dup
a I) orice aplicat
ie A : I 2S . Vom nota
familia A = (Ai; i I)
si vom folosi notat
ia
funct
ional
a uzual
a
A(J) = jJ Aj (pentru J I).
139

Dac
a A = (Ai; i I) este o familie de submult
imi
ale lui S, o funct
ie rA : I S cu proprietatea
c
a rA (i) Ai, i I se nume
ste funct
ie de
reprezentare pentru familia A.
In acest caz, (rA (i); i I) formeaz
a un sistem
de reprezentant
i ai familiei A.
Dac
a funct
ia de reprezentare rA este injectiv
a atunci rA (I) S se nume
ste sistem de
reprezentant
i distinct
i ai familiei A, sau transversal
a.
Problema central
a n teoria transversalelor este
aceea de a caracteriza familiile A care admit
transversale (eventual cu anumite propriet
a
ti).
Prima teorem
a de acest tip a fost stabilit
a de
Hall n 1935:
140

Teorem
a. 3. Familia A = (Ai; i I) de submult
imi
ale lui S admite o transversal
a dac
a
si numai
dac
a
(H)

|A(J)| |J|

J I.

Demonstrat
ie: Necesitatea este evident
a: dac
a
A admite o funct
ie rA de reprezentare injectiv
a
atunci J I rA(J) A(J)
si deci |A(J)|
a).
|rA(J)| |J| (ntruct rA este injectiv
Suficient
a. Consider
am graful bipartit GA =
(I, S; E) unde am presupus I S = (altfel,
se consider
a copii izomorfe disjuncte) iar E =
{is | i I, s S s Ai}. Se observ
a c
a
NGA (i) = Ai
si c
a A are o transversal
a dac
a

si numai dac
a GA are un cuplaj de cardinal
|I|. In ipoteza c
a (H) are loc, ar
at
am c
a orice
mult
ime de vrfuri incident
a cu toate muchiile
lui GA are m
acar |I| elemente,
141

ceea ce dovede
ste existent
a cuplajului de cardinal |I| (utiliznd teorema 2).
Fie X = I S I S o mult
ime de vrfuri incident
a cu toate muchiile. Rezult
a c
a NGA (I
I ) S , adic
a A(I I ) S . Atunci, |X| =
|I | + |S | |I | + |A(I I )|. Folosind condit
ia
(H) obt
inem n continuare: |X| |I | + |A(I
I )| |I | + |I I | = |I|.

I
I
S

142

O alt
a teorem
a celebr
a care poate obt
inut
a
ca o consecint

a imediat
a a teoremei 2 este teorema lui Dilworth, 1950.
Prefer
am totu
si, o demonstrat
ie direct
a, pentru a evident
ia asem
anarea cu cea a teoremei
1. Fie (P, ) o mult
ime nit
a part
ial ordonat
a
( este o relat
ie de ordine pe P ).
Dac
a x, y P , spunem c
a x
si y snt comparabile 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
snt 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 (disjunct
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, armat
ia este trivial
a, deci presupunem, 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 incluziunea) 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 = {a1, a2, . . . , am} cu m = a(P, ). Fie


P = {x | x P, ai A : x ai}
P + = {x | x P, aj A : aj 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

a1

a2

A
am

+
P

Se poate, deci, aplica ipoteza inductiv


a pentru
a scrie
P = i=1,mL
i

L
ai L
i lant
i i = 1, m

P + = i=1,mL+
i

+
L+
lant

L
i
i
i i = 1, m.

In plus, ai este element maximal n L


i si element minimal n L+
i .
+
Rezult
a c
a (L

L
nt cele a(P, )
i )i=1,m s
i
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 vrf comun x.
Demonstrat
ie: Consider
am graful G = (V
{z}, E ), unde E = E {zy | y U }.

G este p-conex. In adev


ar, A cu |A| p 1
G A este conex (dac
a z A, acest lucru
este evident din p-conexiunea lui G; dac
a A
V , atunci G A este conex ntruct G A
este conex
si y U cu zy E(G A) ).
Lema rezult
a, aplicnd teorema 1 grafului G

si perechii x, z.
146

Lem
a. 2. Dac
a G = (V, E) este un graf pconex p 2, atunci oricare ar fi dou
a muchii
e1
si e2
si p 2 vrfuri x1, x2, . . . , xp2 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 circuit. Consider
am G obt
inut din G prin insert
ia
cte unui vrf pe muchiile e1 ( a )
si e2 ( b ).
a

e1

b
e2
G

Noul graf este tot 2-conex, deoarece orice vrf


am scoate, nu se pierde conexiunea . Exist
a
deci n G dou
a ab-drumuri disjuncte, care n G
ofer
a un circuit ce cont
ine e1
si e2.
147

Fie p > 2
si presupunem armat
ia adev
arat
a
pentru orice graf k-conex k < p. Fie G p-conex.
Putem presupune c
a extremit
atile muchiilor e1

si e2 nu snt printre x1, x2, . . . , xp2, deoarece


altfel, armat
ia ar rezulta prin induct
ie.
Graful G xp2 este (p 1)-conex. Conform
ipotezei inductive exista un circuit ce cont
ine
x1, x2, . . . , xp3
si e1, e2. Fie Y mut
imea vrfurilor
lui , |Y | p.
Folosind lema 1, exist
a n G p xp2y drumuri cu
y Y , disjuncte. Putem presupune c
a pentru
orice xp2y astfel de drum, y este primul vrf
din Y ntlnit, a
sa c
a aceste drumuri au cte un
singur vrf comun cu Y . D
am o orientare circuitului
si numerot
am vrfurile sale conform
acestei orient
ari.Avem deci drumurile
Dxp2 y1 , Dxp2 y2 , . . . , Dxp2 yp .
148

y1
yp

xp-2

y2
yi

Vrfurile y1, y2, . . . , yp descompun circuitul n drumurile Dy1 y2 , Dy2y3 , . . . , Dyp1yp , Dypy1 .
Exist
a un drum dintre acestea, n care nu e
cont
inut nici unul din elementele
x1, . . . , xp3, e1, e2.
Fie acest drum Dy1 y2 ; atunci
Dxp2 y2 , Dy2y3 , . . . , Dypy1 , Dy1xp2 este un circuit
si e2 ,
ce cont
ine x1, x2 . . . , xp2, e1

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
vrfuri ale sale trece un circuit.
Demonstrat
ie. Fie x1, x2, . . . , xp2, xp1, xp p
vrfuri oarecare ale lui G. Deoarece graful G
este conex, exist
a e1 = xxp1
si e2 = yxp
si
aplic
am lema 2.
Aplic
am aceast
a teorem
a, precum
si ideea utilizat
a n demonstrat
ia lemei 2, pentru a demonstra o condit
ie sucient
a de hamiltonietate interesant
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 hamiltonian. 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. Intruct |C| p, conform
lemei 2, exist
a p vC-drumuri disjuncte (cu except
ia lui v)
e ele Dvv1 , Dvv2 , . . . , Dvvp (numerotarea vrfurilor este n
ordinea ntlnirii lor ntro parcurgere xat
a a circuitului
). Not
am, pentru ecare vi, cu wi vrful succesor al lui
vi n parcurgerea lui C.
wk

vk
wt
w
s

vs

vt

Atunci, vwi
/ E (altfel am avea circuitul
vwi , wi, C wi vi, Dviv de lungime mai mare dect C). Cum
(G) p, mult
imea {v, w1, w2 , . . . , wp } nu este stabil
a.
Deci, exist
a wswt E.
Dar atunci:
Dvvs ,drumul (invers) pe C de la vs la wt, muchia wt ws,drumul
(invers) pe C de la ws la vt ,
si Dvtv este un circuit de
lungime mai mare dect C, contrazicnd ipoteza c
a C
este de lungime maxim
a.

151

III. ARBORI
1. Propriet
a
ti 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 snt 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 conditiile
(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 incluziune. Mai precis, cele dou
a armat
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 ) (E E) care este arbore.
Vom nota cu TG mult
imea arborilor part
iali
ai lui G.
Obs. TG = dac
a
si numai dac
a G este conex.
In adev
a un arbore
ar, dac
a TG = , atunci exist
part
ial T = (V, E ) al lui G. T este conex, deci
ntre orice dou
a vrfuri ale lui G exist
a un drum
cu muchii din E 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 nct 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
ecare iterat
ie)
si n plus la oprirea algoritmului, 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 o partit
ie (V1, V2)
a lui V exist
a e = v1v2 E cu vi Vi i = 1, 2.
Dac
a |V | = n > 0 atunci urm
atorul algoritm
construie
ste un arbore part
ial al lui G:
1. T1 ({v}, ) (v V , oarecare); k 1;
2. while k < n do
{ Fie v1v2 E cu v1 V (Tk ), v2 V \ V (Tk );
// o astfel de muchie din conexiunea lui G

V (Tk+1) V (Tk ) {v2} ;


E(Tk+1 ) E(Tk ) {v1v2};
k := k + 1
}
154

Se observ
a c
a Tk este arbore k = 1, n
(inductiv, dac
a Tk este arbore, atunci din construct
ie
si nu are circuite)
Tk+1 este conex

si, n plus, se veric


a imediat c
a:
|V (Tk )| = k iar |E(Tk )| = k 1 k = 1, 2, . . . , n.
Aceast
a demonstrat
ie aplicat
a unui arbore G
cu n vrfuri dovede
ste ca G are n 1 muchii.
Proprietatea obt
inut
a poate folosit
a pentru
completarea teoremei 1 cu alte caracteriz
ari ale
arborilor:
Teorem
a. 1. Urm
atoarele afirmat
ii snt echivalente pentru un graf G = (V, E) cu n vrfuri:
(i) G este arbore.
(ii) G este conex
si are n 1 muchii.
(iii) G este far
a circuite
si are n 1 muchii.
(iv) G = Kn pentru n = 1, 2
si G = Kn pentru
n 3
si ad
augarea unei muchii la G produce
exact un circuit.
155

2. Num
ararea
si enumerarea arborilor part
iali
Familia TG a arborilor part
iali ai unui (multi)graf
are propriet
a
ti interesante. Vom prezenta o
metod
a (tip backtrack) de generare a elementelor lui TG, 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 semnicat
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 dG(v0) muchii
din tabloul E satisfac E[i, 1] = v0 unde v0 V
este un vrf oarecare. Exemplu:
a

5
a

b
4

3
c

d
2

156

Un arbore part
ial T TG va identicat 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 vector global T [1..n1] cu componente din mult
imea
1..m
si de un indicator i avnd semnicat
ia: n
arborele curent care se construie
ste, primele
i 1 muchii snt
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
avnd 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 vrfuri; 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 dG(v0) 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 problema enumer
arii elementelor lui TG.
158

Pentru exemplul considerat mai sus (G = K4

si numerotarea precizat
a pentru muchii) arborii
generat
i sunt urm
atorii 16 :
5
3
1

1
2

1
2

31

Figura poate 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
gurii; totu
si s-a marcat muchia T (1) pentru
a se evident
ia modul de funct
ionare a algoritmului).
159

Pentru implementarea ecient


a a testului dac
a
graful part
ial


{T [1], . . . , T [i 1]} {j}


nu are circuite s
a
G
observ
am c
a din construct
ie,


{T [1], . . . , T [i 1]}

nu are circuite , deci componentele sale conexe


snt arbori.
Vom considera un vector global rad[1..n] cu
componente din V cu semnicat
ia
rad[v] = r
ad
acina arborelui la care apart
ine
vrful v (unul din vrfurile acestui arbore).
Inaintea apelului generare-arbori-part
iali(1) se
init
ializeaz
a rad[v] v(v V ), ceea ce corespunde 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}


nu are cirG
cuite dac
a
si numai dac
a
muchia vw nu are extremit
a
tile n aceea
si component
a a lui


{T [1], . . . , T [i 1]}

adic
a dac
a
si numai dac
a rad[v] = rad[w].
Vectorul rad trebuie ntret
inut pentru a avea
semnicat
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 vrfurile 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 TG, problem
a interesant
a chiar
si numai pentru analiza algoritmului precedent, se poate determina ecient.
Prezent
am n continuare una din solut
iile posibile.
Fie G = (V, E) un multigraf cu V = {1, 2, . . . , n}.
Cosider
am A = (aij )nn matricea de adiacent

a
a lui G (aij = multiplicitatea muchiei ij dac
a
ij E, altfel 0). Fie
D = diag(dG(1), dG(2), ..., dG(n)).
162

Matricea L[G] = D A se nume


ste matricea
de admitant

a a multigrafului G sau matricea Laplace a lui G.


S
a observ
am c
a n L[G] suma elemetelor de pe
ecare linie
si ecare coloan
a este 0.
Teorem
a. 2. (Kircho-Trent) (Matrix Tree
Theorem) Dac
a G este un multigraf cu mult
imea
de vrfuri {1, . . . , n}
si L[G] matricea Laplace,
atunci
|TG| = 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 determinat dup
a o linie, dup
a descompunerea lui TG n
arborii care cont
in o muchie xat
a
si cei care
nu cont
in aceea
si muchie.
163

Corolar.





TKn = nn2 (Cayley).

In adev
ar,

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

L[Kn ] = .
.

. . . 1
..
...

. . . 1

1 n 1

si (dup
a un simplu calcul):

n 1 1 . . .
1

 1
..
... ...

det(L[Kn ]11) =  .
. . . . . . 1
 .

 1
. . . 1 n 1






 = nn2.




(Dac
a n = 4, caz ilustrat n gura precedent
a, se obt
ine


TK4 = 42 = 16, adic
a au fost generat
i tot
i arborii !)

Observat
ie. Teorema ofer
a un algoritm polinomial de determinare a lui |TG|.
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 TG astfel nct
c(T ) = min{c(T ) | T TG},

unde c(T ) = eE(T ) c(e).
Algoritmii cunoscut
i pentru rezolvarea problemei (P1) au la baz
a urm
atoarea ideie:
Se consider
a init
ial, familia T 0 = (T10 , T20, . . . , Tn0)
de arbori disjunct
i Ti0 = ({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
k )
se dispune de familia T k = (T1k , T2k , . . . , Tnk
de nk arbori disjunct
i astfel nct V (Tik )i=1,nk
constituie o partit
ie a lui V
si se construie
ste
T k+1 astfel:
165

- se alege Tsk unul din arborii familiei T k .


- dintre toate muchiile lui G cu o extremitate n
si cealalt
a n V V (Tsk ) se alege una de cost
Tsk
minim, e = vsvj unde vj V (Tjk ) j = s.
- T k+1 = (T k \ {Tsk , Tjk }) T unde T este arsi Tjk la care ad
aug
am
borele obt
inut din Tsk
muchia e.

vs
Tsk

v
j*
Tk
j*

Se veric
a imediat c
a noua familie este format
a
din arbori disjunct
i care partit
ioneaz
a mult
imea
de vrfuri ale grafului G. Dac
a alegerea muchiei
a, atunci rezult
a c
a G nu este
e nu este posibil
conex
si deci problema (P 1) nu are solut
ie.
166

Evident, familia T n1 construit


a n pasul n 2
este format
a dintr-un singur arbore T1n1.
Teorem
a. 3. Dac
a G = (V, E) este un graf
conex cu V = {1, 2, . . . , n} atunci T1n1 construit de algoritmul descris mai sus este arbore
part
ial de cost minim.
Demonstrat
ie. Vom ar
ata c
a k {0, 1, .., n
ial de cost minim al lui G,
1} T arbore part
nk
E(Tik ) E(T ).
astfel nct E(T k ) = i=1
In particular, pentru k = n 1, E(T n1) =
E(T1n1) E(T ) va implica T1n1 = T (cei
doi arbori avnd acela
si num
ar de muchii, rezult
a
c
a incluziunea are loc cu egalitate)
si teorema
e demonstrat
a.
Pentru k = 0, armat
ia este trivial adev
arat
a:
si din conexiunea grafului G, TG
E(T 0) =
este nevid
a deci exist
a T solut
ie a problemei
P 1.
167

Dac
a armat
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 armat
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
/ V (Tsk ) rezult
a
muchia e = vsvj . Cum vj
c
a C va cont
ine o muchie e1 = e cu o exsi cealalt
a n V \ V (Tsk ).
tremitate n V (Tsk )
Din alegerea muchiei e, avem c(e ) c(e1)
si
e1 E(T ) \ E(T k ).

C
vs
v
j*

Tsk
T*

168

Fie T 1 = (T + {e}) {e1}.


T 1 TG (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(e1) c(T )
deci c(T 1) = c(T ), adic
a T 1 este de cost minim

si teorema e demonstrat
a.
Observat
ii:
10 Demonstrat
ia anterioar
a r
amne valabil
a pentru funct
ii de cost c : TG R astfel nct:
T TG, e E(T ), e
/ E(T )
c(e ) c(e) c((T + e ) e) c(T ).
20 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 Tsk va ntotdeauna arborele cu
cele mai multe vrfuri dintre arborii familiei
curente.
Rezult
a deci, c
a la ecare pas k > 0, vom avea
un arbore cu k + 1 vrfuri, ceilalt
i n k 1
avnd cte un singur vrf. Not
am Ts = (Vs, Es)
arborele curent. Consider
am vectorii [1..n] cu
componente din V
si [1..n] cu componente
reale, cu urm
atoarea semnicat
ie:
(S)
j V Vs,

 
j = c([j]j) = min{c(ij) | i Vs, ij E}.

beta(v)

v
x

alfa(v)

beta(x)=+infinit
w

alfa(u)
beta(w)
beta(u)
Ts

alfa(w)
u

Descrierea algoritmului:
170

1. Vs : {s}; (s V , oarecare )
Es ;
for v V \ {s} do { [v] := s; [v] := c(sv)};
// dac
a ij
/ E atunci c(ij) = ).

2. while Vs = V do
{ determin
a j V \ Vs a..
[j ] = min{[j] | j V Vs} ;
Vs Vs {j };
Es := Es {[j ]j };
for j V Vs 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 Vs
(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(n1)+O(n


a de operat
iile din
2) + . . . + O(1) = O(n2) dat
pasul 2 necesare determin
arii minimului
si actualiz
arii tabloului . Se poate introduce testul
de conexiune a grafului, dup
a determinarea lui
[j ]. Algoritmul este recomandat n cazul grafurilor cu multe muchii, m = O(n2).

Algoritmul lui Kruskal (1956)


In metoda general
a prezentat
a, se va alege la
ecare pas drept arbore Tsk unul din cei doi arbori cu proprietatea c
a snt unit
i printr-o
muchie de cost minim printre toate muchiile cu extremit
a
tile pe arbori diferit
i.
Aceast
a alegere, complicat
a la prima vedere, se
realizeaz
a simplu prin sortarea muchiilor grafului 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 descris, astfel:
172

1. Sorteaz
a E = (e1, e2, . . . , em) astfel nct:
c(e1) c(e2 ) . . . c(em ).
1.2 T ; i 1;
2. while i m do
{ if T {ei }G nu are circuite then
T T {ei } ;
i++
}

Evident, pasul 1 necesit


a O(m log n) operat
ii.
Pentru realizarea ecient
a a testului din pasul
2 va necesar s
a reprezent
am la ecare pas k
(din metoda general
a ) V (T1k ), V (T2k ), . . . , V (Tnk )
a are ambele

si s
a test
am dac
a muchia ei curent
extremit
a
ti n aceea
si mut
ime. Se vor folosi
pentru reprezentarea acestor mult
imi, arbori
(care nu snt n general subarbori ai lui G).
Fiecare astfel de arbore va avea un vrf, numit
r
ad
acin
a, care va desemna mult
imea de vrfuri
ale lui G pe care o memoreaz
a.
173

Vom folosi o funct


ie f ind(v) care determin
a n
ce mult
ime este vrful v, adic
a ntoarce r
ad
acina
arborelui care memoreaz
a mult
imea de vrfuri
la care apart
ine v.
Pentru realizarea reuniunilor (disjuncte) de
mult
imi de vrfuri care apar n transformarea
a) vom folosi
familiilor T k (din metoda general
o procedur
a union(v, w) cu semnicat
ia:
mult
imile de vrfuri (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
{ e ei = vw;
if f ind(v) = f ind(w) then
{ union(v, w);
T T {ei }
}
i++
}
174

Complexitatea algoritmului va depinde de modul


de implementare a funct
iei f ind
si procedurii
union.
Solut
ia I a. Consider
am tabloul rad[1..n] cu
componente din V cu semnicat
ia
rad[v] =r
ad
acina arborelui ce memoreaz
a
mult
imea la care apart
ine vrful v.
Ad
aug
am pasului 1, init
ializarea
1.3 for v V do rad[v] v;

care corespunde familiei T 0. Funct


ia f ind are
n acest caz complexitatea O(1)
si este:
function f ind(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 f ind (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
f ind 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(n2) operat
ii.
Deci, complexitatea algoritmului este
O(max(m log n, n2)).
Dac
a graful este plin, m = O(n2), se observ
a
c
a acest algoritm este mai put
in ecient dect
cel al lui Prim.
176

Solut
ia a II a. Consider
am pred[1..n] un tablou
ntreg cu interpretarea :
pred[v]= v
rful dinaintea lui v de pe drumul 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;
Modic
am
si pasul 2 al algoritmului astfel:
2. while i m do
{ e ei = vw;
x : f ind(v); y f ind(w);
if x = y then union(x, y);
{ union(x, y);
T T {ei }
}
i++
}
177

Deci, procedura union va apelat


a numai pentru argumente reprezentnd r
ad
acini de arbori
diferit
i:
procedure union(v, w : V );
pred[v] w

Evident, complexitatea procedurii union este


O(1). Funct
ia, f ind este n acest caz mai complicat
a:
function f ind(v : V );
variabil
a local
a i:V;
i v;
while pred[i] > 0 do i pred[i];
return i

Complexitatea lui f ind(v) este O(h(v)) unde


h(v) este lungimea drumului (din arbore) de la
vrful v la r
ad
acina arborelui care-l cont
ine pe
v.
178

Dac
a graful G este K1,n1 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
f ind(F ):
F (1), F (2), U (1, 2), F (1), F (3), U (2, 3), . . . , F (1), F (n),
U (n 1, n).
F(1) F(2) U(1,2)
2
3

F(1) F(3) U(2,3)


F(1) F(4) U(3,4)

F(1) F(n) U(n-1,n)

n-1

Apelurile F (i)(i > 1)


si U (i, i + 1) i 1 necesit
a n total O(n) operat
ii. S
irul de F (1) necesit
a ns
a O(1) + O(2) + + O(n 1) = O(n2)
operat
ii.
Este deci posibil ca pasul 2 al algoritmului n
aceast
a implementare s
a e de complexitate
(n2) chiar dac
a graful este rar.
179

Decient
a acestei implement
ari este datorat
a
posibilit
a
tii 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 vrfuri, ceea ce are ca efect
posibilitatea ca h(v) s
a devin
a mare (O(n)) pe
parcursul algoritmului.
Acest defect poate evitat dac
a, la execut
ia
lui union
tinem 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 modic
am procedura union astfel nct s
a
asigur
am ndeplinirea condit
iei
pred[v] < 0 v este r
ad
acin
a a unui arbore
imii memo
si pred[v] este cardinalul mult
rate n el.
180

Procedura union are, n acest caz, tot complexitatea O(1), dar selecteaz
a drept nou
a r
ad
acin
a
pe cea care corespunde arborelui cu mai multe
vrfuri:
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 f ind
si procedurii union, pe tot parcursul algoritmului are
loc:
()

v V

pred[f ind(v)] 2h(v)

(reamintim c
a h(v) noteaz
a lungimea drumului de la v la r
ad
acina f ind(v) a arborelui ce
memoreaz
a v ).
181

Dup
a init
ializarea 1.3, v V h(v) = 0
si
f ind(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 modic
a tabloul pred
si deci (*)
r
amne 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 vrfuri v c
arora li se modic
a h(v)
dup
a execut
ia iterat
iei curente snt cele care
naintea iterat
iei satisf
aceau f ind(v) = y, pentru care aveam pred[y] 2h(v).
Dupa execut
ia iterat
iei avem h (v) = h(v) +
1 iar f ind (v) = x,
si deci trebuie s
a veri
cam c
a pred [x] 2h (v). Avem pred [x] =
pred[x] pred[y] 2 (pred[y]) 2 2h(v) =

2h(v)+1 = 2h (v).
182

Rezulta c
a (*) are loc pe tot parcursul algoritmului, deci, prin logaritmare obt
inem
v V h(v) log(pred[f ind[v]]) log n.
Complexitatea pasului 2 va deci O(n 1 +
2m log n) = O(m log n)
si deci tot algoritmul
are complexitatea O(m log n) ceea ce-l face superior 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 f ind.
Tarjan (1976) a propus ca ecare apel al lui
f ind care necesit
a parcurgerea unui drum de
lungime mai mare dect 1, s
a distrug
a acest
drum, aducndu-i vrfurile drept descendent
i imedi
at
i ai r
ad
acinii, cu scopul ca apelurile viitoare
ale lui f ind pentru aceste v
arfuri s
a nu mai
consume timp. Mai precis, avem
183

function f ind(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, considernd m n > 0


(m, n) = min{z | A z, 4m/n log n, z 1}
avem:
Complexitatea pasului 2, utiliz
nd union din solut
ia
a II-a
si f ind 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 AE
si
v V , vom nota cu
dA(v) = |{e | e A, e incident
a cu v}|,
adic
a gradul vrfului 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
dM (v) 1, v V .
Vom nota cu MG familia cuplajelor grafului G:
MG = {M | M E, M cuplaj n G}.
Se observ
a c
a MG satisface propriet
a
tile:
i) MG.
ii) M MG, M M M MG.
Dac
a M MG atunci un vrf v V cu dM (v) =
1 se nume
ste saturat de cuplajul M . Mult
imea
S(M) a vrfurilor saturate de cuplajul M n
graful G, satisface |S(M )| = 2|M |.
185

Dac
a dM (v) = 0, atunci v se nume
ste expus fat

a de cuplajul M . Mult
imea E(M) a
vrfurilor expuse fat

a de cuplajul M satisface
E(M ) = V S(M )
si |E(M )| = |V | 2|M |.
Problema cuplajului maxim:
P1 Dat G = (V, E) un graf, s
a se determine
M MG astfel nct
|M | = max{|M | | M MG}.
(Vom nota cu (G) = max{|M | | M MG}).
Problema cuplajului maxim este strns legat
a
de problema acoperirii minime.
Definit
ie. Se nume
ste acoperire (a vrfurilor
cu muchii) n graful G orice mult
ime F E de
muchii cu proprietatea c
a dF (v) 1 v V .
FG = {F | F E, F acoperire n G} noteaz
a
familia acoperirilor grafului G.
FG = G nu are vrfuri 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 FG astfel nct
|F | = min{|F | | F FG}.
Teorem
a. 1. (Norman-Rabin 1959) Fie
G = (V, E) un graf f
ar
a vrfuri 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 S(M ) astfel nct vv E;
F F {vv }
}
187

S
a observ
am c
a pentru v E(M ), cum G nu
are vrfuri izolate, exist
a o muchie incident
a cu
v,
si cum M este maximal n raport cu incluziunea, aceast
a muchie are cealalt
a extremimea de muchii F astitate din S(M ). Mult
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. Consider
am urm
atorul algoritm:
M F
while v V : dM (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 ,
188

atunci dM (v ) = 1
si deci n pasul urm
ator
dM (v ) va zero, adic
a la orice ndep
artare a
unei muchii din mult
imea M curent
a de muchii
se obt
ine un vrf expus fat

a de cuplajul nal M
a o muchie,
(dac
a vrful v ar incident cu nc
atura
atunci din acoperirea init
ial
a F se poate nl
muchia e
si s
a obt
inem tot o acoperire, contrazicnd alegerea lui F ).
Deci dac
a M este cuplajul construit de algoritm
a
avem: |F | |M | = |E(M )| = n 2|M |, adic
|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) snt polinomial echivalente, cuplajul M
si acoperirea F construite ind
si ele solut
ii optime respectiv pentru cele
dou
a probleme.
189

Dac
a vom considera matricea de incident

a
(vrf - muchie) a grafului G cu n vrfuri
si m
muchii B = (bij )nm cu bij = 1 dac
a vrful i

si muchia j snt incidente


si bij = 0 altminteri
(ntr-o ordonare xat
a a vrfurilor
si muchiilor),

si dac
a not
am cu ep vectorul p-dimensional cu
toate componentele 1, atunci cele dou
a probleme se scriu analitic astfel
P1

max{eT
m x|Bx en , x 0, xi {0, 1} i = 1, m}

P2

min{eT
m x|Bx en , x 0, xi {0, 1} i = 1, m}

si teorema 1 ofer
a o egalitate min-max interesant
a.
In cele ce urmeaz
a ne vom ocupa numai de
problema (P1); n plus vom presupune c
a G
nu are vrfuri izolate.
190

Dac
a s-ar ncerca rezolvarea problemei (P1)
apelnd la problema de programare liniar
a asociat
a
(LP 1 )

max{e mx | Bx en, x 0}

se constat
a c
a solut
iile optime pot s
a nu e
cu componente ntregi
si, chiar mai mult, valoarea maxim
a determinat
a de (LP1) s
a e superioar
a lui (G).
Cel mai simplu exemplu n acest sens este G =
C2n+1. Evident, (C2n+1 ) = n
si totu
si xi =
1 i = 1, 2n + 1 este o solut
ie optim
a a lui
2
(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 dicult
a
ti n rezolvarea problemei (P1). Mai precis, avem urm
atoarea teorem
a:
Teorem
a. 2. (Balinski 1971) Vrfurile politopului Bx en , x 0, x Rm, au coordo1 apar dac
natele 0, 1
si 1
.
Coordonatele
a
si
2
2
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 (reprezentnd vectorul caracteristic
al unui cuplaj). Adaptarea combinatorie a algoritmului simplex din programarea liniar
a, direct pe graful bipartit considerat (n scopul unei economii de memorie,
tablourile simplex snt 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, prefernd descrierea unuia mai performant datorat 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 teoreme 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 satureaz
a vrfurile lui R dac
a
si numai dac
a
|NG(A)| |A|

A R.

Teorem
a. 4. (Konig,1930) Fie G = (R, S; E)
un graf bipartit. Cardinalul maxim al unui cuplaj este egal cu num
arul minim de vrfuri prin
ndep
artarea c
arora se obt
ine graful nul:
(G) = n (G)

193

Revenind la problema (P1) cu G un graf oarea


care
si observnd c
a (G) 1
2 |V (G)|, rezult
c
a este interesant de caracterizat grafurile cu
proprietatea c
a admit un cuplaj M astfel nct
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 vrfuri. Mai
mult, dac
a S V (G) atunci, n ipoteza c
a G are un
cuplaj perfect, va trebui ca pentru ecare component
a
conex
a cu un num
ar impar de vrfuri 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 GS
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(GS) |S| S V (G).
S
a observ
am c
a atunci cnd S = condit
ia
anterioar
a cere ca orice component
a conex
a a
lui G s
a aib
a un num
ar par de vrfuri. Condit
ia
este
si sucient
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
an=
|V |, c
a, dac
a G = (V, E) satisface (T), atunci
G are un cuplaj perfect.
195

Cum teorema se veric


a imediat pentru n =
1, 2, vom presupune n pasul inductiv c
a orice
graf G cu |G | < n
si care satisface (T) are un
cuplaj perfect.
Fie G = (V, E) cu |V | = n
si care satisface (T).
Alegem S0 V (G) astfel nct n (T) avem
egalitate: q(G S0) = |S0|
si oricare ar S
astfel nct S0 S, S0 = S avem q(G S) < |S|.
Cum G satisface T , rezult
a c
a G are numai
componente conexe de cardinal par. Intr-o astfel de component
a conex
a, exist
a ntotdeauna
un vrf v0 care nu este vrf de articulat
ie (orice
vrf pendant al unui arbore part
ial )
si se veric
a
imediat c
a q(G {v0}) = 1 = |{v0}| .
Prin urmare familia {S | S V, q(G S) = |S|}
este nevid
a
si orice element maximal al ei poate
considerat S0.
196

Fie m = |S0| > 0


si C1, . . . , Cm componentele conexe de cardinal impar ale lui G S0,
iar D1, . . . , Dk componentele conexe de cardinal par (k 0) ale lui G S0.
C1
C2
D1

C3
s2
s3

D2
s1
sm
Dk

Cm

Vom construi un cuplaj perfect al grafului G


compus din : a) - cte un cuplaj perfect n
ecare component
a conex
a par
a Di;
b) - un cuplaj format din m muchii, muchia
ei (i = 1, m) avnd o extremitate si S0
si
cealalt
a vi Ci;
c) - cte un cuplaj perfect n ecare subgraf
[Ci vi]G.
197

a) Pentru orice i = 1, k graful [Di]G are un cuplaj perfect.


In adev
si
ar, cum m > 0, rezult
a c
a |Di| < n
deci pentru a dovedi existent
a cuplajului perfect n [Di]G este sucient s
a dovedim ( din
ipoteza inductiv
a) c
a G = [Di]G satisface (T).
a q(G S) > |S| atunci q(G
Fie S Di. Dac
S0 S) = q(G S0) + q(G S) = |S0| + q(G
S) > |S0| + |S| = |S0 S|, contrazicnd faptul
c
a G satisface (T).
Avem q(G S) |S|
si deci G satisface T.
b) Fie H = (S0, {C1, . . . , Cm}; E ) graful bipartit
avnd o clas
a a bipartit
iei S0, cealalt
a clas
a,
mult
imea componentelor conexe impare ale lui
G S0, iar mult
imea muchiilor E format
a din
perechile sCi (s S; i = 1, m) cu proprietatea
c
a exist
a v Ci cu sv E(G).
198

s1

C1

s2

C2

s3
C3

sm

Cm

Acest graf are un cuplaj perfect. In adev


ar,
este sucient s
a ar
at
am c
a H satisface condit
ia
lui Hall de existant

a a unui cuplaj M0 ce satureaz


a vrfurile lui {C1, . . . , Cm} :
A {C1, . . . , Cm}, |NH (A)| |A|

si cum |S0| = m va rezulta c


a M0 este cuplaj
perfect n H.
Fie A {C1, . . . , Cm}.
si din denit
ia
Observ
am c
a B = NH (A) S0
lui H, n graful G nu avem muchii de la un
vrf v S0 B la un vrf v Ci cu Ci A.
Deci componentele conexe impare Ci din A ale
grafului G S0 vor r
amne 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
|NH (A)| |A|.
Cum A a fost aleas
a arbitrar, rezult
a c
a H are
un cuplaj perfect M0 = {s1v1, s2v2, . . . , smvm}
si vi Ci i = 1, m.
cu S0 = {s1, . . . , sm}
c) Pentru orice i {1, . . . , m} graful G = [Ci
vi]G are un cuplaj perfect.
Folosind ipoteza inductiv
a, armat
ia va rezulta
dac
a dovedim c
a G satisface (T).
Fie S Ci vi. Dac
a q(G S) > |S| atunci
a c
a
cum q(G S) + |S| 0 (mod 2), rezult
q(G S) |S| + 2
si atunci considernd S =
S0 {vi} S, avem |S | q(G S ) = q(G
S0) 1 + q(G S) = |S0| 1 + q(G S)
|S0| 1 + |S| + 2 = |S |, adic
a q(G S ) = |S |
ceea ce contrazice alegerea lui S0 c
aci S0 S .
Rezult
a c
a S Ci vi q(G S) |S| deci G
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
1
(G) = (|V (G)| maxSV (G)[q(G S) |S|] ).
2
Totu
si, algoritmii care rezolv
a problema (P1)
se bazeaz
a pe o caracterizare mai simpl
a a cuplajelor de cardinal maxim.
Fie G = (V, E) un graf
si M MG un cuplaj al
s
au.
Definit
ie: Se nume
ste drum alternat al lui G
relativ la cuplajul M orice drum
P : v0, v0v1, v1, . . . , vk1, vk1vk , vk
a. . i = 1, k 1 {vi1vi, vivi+1} M = .
201

S
a observ
am c
a, ntruct
denit
ia dat
a rezult
a c
a
muchii consecutive ale
una apart
ine cuplajului
(muchiile lui P apart
in
E M ).

M este cuplaj, din


dintre orice dou
a
drumului P exact
alternativ la M
si

Vom desemna, n cele ce urmeaz


a, prin P
mult
imea muchiilor drumului P (pentru simplicarea notat
iilor).
Definit
ie: Se nume
ste drum de cre
stere al lui
G relativ la cuplajul M un drum alternat cu
extremit
a
tile vrfuri distincte, expuse relativ la
cuplajul M .
a

e
f

d
c

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 denit
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 numai dac
a nu exist
a n G drumuri de cre
stere
relativ la M .
Demonstrat
ie: Dac
a M este un cuplaj de cardinal maxim
si P ar un drum de cre
stere
n G relativ la M atunci M = 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 | = |P M | + 1 + |M P | = |M | + 1, contrazicnd alegerea lui M .
a

e
f

d
c

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.
ial al lui G, G = (V, M M ).
Fie G graful part
Evident, dG (v) 2 v V
si deci componentele conexe ale lui G snt drumuri (eventual de
lungime 0), sau circuite
si avem urm
atoarele
posibilit
a
ti (muchiile ngro
sate snt din M
si
cele subt
iri, din M ):
a
b
c
d
e

Situatia b) nu poate avea loc, pentru c


a reprezint
a un
drum de cre
stere relativ la M care-i cuplaj de cardinal
maxim. Situatia c) nu are loc, ntruct M nu admite
drumuri de cre
stere.
204

Deci, dac
a not
am cu mM (C) num
arul muchisi
ilor din M ale componentei conexe C a lui G
cu mM (C) num
arul corespunz
ator, de muchii
din M avem mM (C) = mM (C). Rezult
a c
a

|M M | =

mC (M ) =

mC (M ) = |M M |

(suma se face dup


a toate componentele conexe
C ale grafului G )
si deci, |M | = |M |.
Aceast
a teorem
a justic
a urm
toarea strategie
de construire a unui cuplaj de cardinal maxim:
a) e M un cuplaj oarecare a lui G (eventual M = );
b) while P drum de crestere relativ la M do
M M P

La ecare 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 testul de oprire a ciclului - inexistent
a drumului de cre
stere - poate conduce la un num
ar
exponent
ial de operat
ii.
Primul care a demonstrat posibilitatea implement
arii acestui algoritm astfel nct num
arul
total de operat
ii s
a e polinomial n raport cu
num
arul de vrfuri ale grafului G, a fost Edmonds (1965), obt
innd astfel unul din primele
rezultate ale teoriei complexit
a
tii (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 ecare 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 ecient algoritm, cunoscut, pentru rezolvarea problemei.
206

Lem
a. 1. Fie M, N MG, |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 vrfuri.
Demonstrat
ie: Fie G = (V, M N ) graful part
ial
sect
ionat n G de M N .
Fie Ci i = 1, p componentele conexe ale lui G .
Denim pentru ecare i {1, . . . , p}
(Ci ) = |E(Ci) N | |E(Ci) M |.
Observ
am c
a:
(Ci) {1, 0, 1} (M, N cuplaje, Ci snt drumuri sau circuite);
a
si numai dac
a Ci este un drum
(Ci) = 1 dac
de cre
stere relativ la M .
In plus,

(Ci ) = |N M | |M N | = s r.

i=1,p

Rezult
a c
a exist
a m
acar s r Ci cu (Ci ) = 1,
adic
a exist
a m
acar sr drumuri de cre
stere disjuncte ca vrfuri (deci
si ca muchii) cont
inute
n M N .
207

Lem
a. 2. Dac
a (G) = s
si M MG |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 MG 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 MG, 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 MG, P drum minim de
cre
stere relativ la M ,
si P drum de cre
stere al
lui M P . Atunci, |P | |P | + 2|P P |.
208

Demonstrat
ie: Fie N = (M P )P .
si |N | = |M | + 2.
Avem M N = P P
Folosind lema 1 obt
inem c
a exist
a P1, P2 drumuri 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 | |P1|+|P2|
2|P | deci |P | + |P | 2|P P | 2|P |.
Consider
am urm
atorul algoritm
M0 ;
Mi+1 MiPi
( Pi dr. minim de cre
st. rel. la

():

Mi; i 0.)

Se obt
ine
sirul de drumuri minime de cre
stere
P0, P1, . . . , P(G)1.
Lem
a. 4.
a) i = 1, (G) 2
|Pi| |Pi+1|;
si Pi+1 snt disjuncte ca
|Pi| = |Pi+1| Pi
vrfuri.
a Pi
si
b) i < j < (G) 1
|Pi| = |Pj |, implic
Pj snt disjuncte ca vrfuri.
209

Demonstrt
ie: a) Considernd P = Pi
si P =
ine |Pi+1| |Pi| + 2|Pi
Pi+1 n lema 3 se obt
Pi+1| |Pi |. Egalitatea are loc dac
a
si numai dac
a Pi
si Pi+1 snt disjuncte ca muchii,
condit
ie care, avnd n vedere alternant
a drumurilor, implic
a faptul c
a nu au vrfuri comune.
b) rezult
a aplicnd succesiv a).
Teorem
a. 7. (Hopcroft, Karp 1973) Fie
G un graf
si (G) = s. Num
arul ntregilor
distinct
i din
sirul |P0|, |P1|, . . . , |Ps1|, construit

n algoritmul de mai sus este cel mult 2 s  +


2.

Demonstr
atie: Fie r = s s!. Atunci |Mr | =

r
si |Pr | 2 r/(s r)! + 1 = 2 s s!/(s

s s!)! + 1 < 2 s  + 1.
Rezult
a c
a oricare ar i < r, |Pi | este unul din

cei  s  + 1 ntregi impari 2 s  + 1. In


sub
sirul |Pr |, . . . , |Ps1| mai snt 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 nct la ecare etap
a se determin
a o
mult
ime maximal
a de drumuri minime de cre
stere
disjuncte ca vrfuri, din lema 4, rezult
a c
a, n
etapa urm
atoare, lungimea drumurilor minime
de cre
stere utilizate va cre
ste strict (altfel sar contrzice maximalitatea mult
imii de drumuri
alese).
Utiliznd teorema
a c
a num
arul fazelor
 7, rezult
nu va dep
a
si 2 (G) + 2.
Rezult
a c
a urm
atorul algoritm pentru aarea
unui cuplaj maxim, ntr-un graf cu m
acar o
muchie:
0.
1.

M ;
repeat
Determin
a P o familie maximal
a ()
de drumuri minime de cre
stere;

for P P do M M P
until P = .
211


are complexitatea O( nA) unde A este complexitatea determin
arii familiei P.
Hopcroft
si Karp au ar
atat cum se poate implementa pasul 1 pentru un graf bipartit, astfel
nct A = O(m + n), deci s-a obt
inut un algoritm de complexitate O(mn1/2) pentru aarea
unui cuplaj de cardinal maxim ntr-un graf bipartit.
Pentru un graf oarecare, structurile de date
necesare obt
inerii aceleea
si complexit
a
ti snt
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 MG.
Pornind din una din clase, R de exemplu, se
consider
a mult
imea extremit
a
tilor drumurilor
de cre
stere posibile, R E(M ),
si din ecare
astfel de vrf, 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 P. Complexitatea 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 uxului maxim.

RETEA
Iesire

Intrare
V

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)
>
0;
d
- s, t V ; s = t; d+
G
G(t) > 0,
- c : E R+; c(e) este capacitatea arcului e.
Vom presupune c
a
si c
a |E| = m.
V = {1, 2, . . . , n} (n N)
Extindem funct
ia c la c : V V R+ prin
c((i, j)) =

c(ij)
0

dac
a ij E
dac
a ij
/E

si vom nota c((i, j)) = cij .


214

Denit
ie: Numim ux n ret
eaua R = (G, s, t, c)
o funct
ie x : V V R, care satisface
0 xij cij

(i)
(ii)


jV

xji

ij V V

xij = 0

i V {s, t}.

jV

Observat
ii
10 Dac
a ij E atunci xij se nume
ste uxul
(transportat)pe arcul ij.
Evident, condit
ia (i) cere ca uxul pe orice
arc s
a e nenegativ
si subcapacitar, iar condit
ia
(ii) (legea de conservare a fluxului) cere ca
suma uxurilor pe arcele care intr
a n vrful
i s
a e egal
a cu suma uxurilor pe arcele
care ies din vrful i.
Se putea cere ca uxul s
a e denit 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
snt arce n ret
ea condit
ia (i) impune ca uxul s
a e 0,

si evident cele dou


a denit
ii snt echivalente.
O prefer
am pe cea dat
a, pentru simplitatea notatiilor,
de
si n implement
ari, structurile de date folosite vor ignora perechile (i, j) care nu snt arce n ret
ea.
215

20 Dac
a se sumeaz
a relat
iile (ii) (pentru i
V {s, t}) se obt
ine:




0 = i =s,t jV xji jV xij =






i =s,t j =s,t xji i =s,t j =s,t xij +

i =s,t xsi +



i xis


jV

i =s,t xti

i xsi

xjt



i xit

xtj =

jV

i =s,t xis


i =s,t xit =

a
i xti , adic

xjs

jV

xsj .

jV

Definit
ie: Dac
a x este un ux n ret
eaua R =
(G, s, t, c) se nume
ste valoarea uxului x num
arul
v(x) =

jV

xjt

xtj .

jV

v(x) se poate interpreta ca ind uxul net care


ajunge n ie
sirea ret
elei sau (conform egalit
a
tii
obt
inute mai sus) uxul net care iese din intrarea ret
elei.
216

In orice ret
ea R = (G, s, t, c) exist
a un ux,
uxul nul xij = 0 ij, de valoare 0.

Problema uxului maxim:


Dat
a R = (G, s, t, c) o ret
ea, s
a se determine
un flux de valoare maxim
a.
Observat
ii: 10. Problema se poate formula,
evident, ca o problem
a de programare liniar
a:
max v



x

x = 0, i = s, t
j ji
j ij
x
x = v
j js  j sj
j xjt

j xtj = v

0 xij cij ij

Particularit
a
tile combinatorii ale problemei, num
arul mare
de restrict
ii
si mai ales dicult
a
tile legate de restrict
iile
de integritate ce s-ar putea impune variabilelor, care uneori n practic
a snt esent
iale, au condus la dezvoltarea
de metode specice de rezolvare.
217

Definit
ie. Dac
a P este un drum n G, multigraful suport al digrafului G,
si e = vivj este o
muchie a lui P atunci:
dac
a e corespunde arcului vivj al lui G, e se
nume
ste arc direct al drumului P ;
dac
a e corespunde arcului vj vi al lui G, atunci
e se nume
ste arc invers.

P
-G

arc direct

arc invers

Definit
ie. Fie R = (G, s, t, c)
si x ux n R.
Se nume
ste C-drum (n R relativ la uxul x)
un drum D n G cu proprietatea c
a ij E(D) :
xij < cij dac
a ij este arc direct,
xji > 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 Cdrumul D) num
arul

c x
ij
ij
r(ij) =
x
ji

dac
a ij arc direct n D
dac
a ij arc invers n D .

Capacitatea rezidual
a a drumului D este
r(D) = min r(e).
eE(D)

Exemplu: Fie reteaua de mai jos, n care pe arce este


precizat
a mai nti capacitatea
si apoi uxul:
2,1
2

4
3,2

3,1

1,0

1,0

1,1
2,1

2,2
3

2,2

Atunci D : 1, 12, 2, 24, 4, 45, 5, 56, 6 este un C-drum de la


s la t cu arcele directe 12(x12 = 1 < c12 = 3); 24(x24 =
1 < c24 = 2); 56(x56 = 1 < c56 = 2)
si arcul invers
a a lui D este
45(x54 = 1 > 0). Capacitatea rezidual
r(D) = min(min(2, 1, 1), 1) = 1.
219

Definit
ie. Se nume
ste drum de cre
stere a
uxului 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

x1 = x r(D) definit prin

xij
x1
ij = xij + r(D)

xij r(D)

dac
a ij
/ E(D)
dac
a ij E(D), ij arc direct n D
dac
a ji E(D), ji arc invers n D

este flux n R
si v(x1) = v(x) + r(D).
Demonstrat
ie. Denit
ia lui r(D) implic
a
ndeplinirea de c
atre x1, a condit
iilor (i).
Condit
iile (ii) vericate de x, nu snt afectate
pentru niciun vrf i
/ V (D).
Dac
a i = s, t este un vrf al drumului D, i este
incident cu exact dou
a arce ale lui D,e ele li

si ik.
Avem urm
atoarele cazuri posibile:
220

a) li
si ik arce directe:
 1  1


x

x
=
x

xij + x1
x1
ji
j
j
j
=
l
j
=
k
ji
ij
li
ik =


x
x + xli + r(D) xik r(D) =
j =l ji  j =k ij
j xji j xij = 0.
b) li direct ik invers:

 1
 1


xji j xij = j =l,k xji j xij + x1
+ x1
j
li
ki =


x j xij + xli + r(D) + xki r(D) =
j =l,k ji

j xji j xij = 0.

c) li invers, ik direct: similar cu b).


d) li invers, ik invers: similar cu a).
Valoarea uxului x1 se obt
ine considernd lt
unicul arc al lui D incident cu t:
Dac
a lt direct atunci
 1  1


1
v(x ) = j xjt j xtj = j =l xjt j xtj +x1
lt =


j =l xjt j xtj + xlt + r(D) = v(x) + r(D).
Daca lt invers atunci

 1


1 =
v(x1) = j x1

x
=
x

x
x
jt
tj
j
j
j
=
l
tj
tl

 jt
j xjt j =l xtj (xtl r(D)) = v(x) + r(D).
Deci lema are loc.
221

Pentru exemplul anterior, uxul x1 = x


de valoare 4 este precizat pe arce:

r(D)

2,2
2

4
3,2

3,2

1,0

1,0

1,0
2,2

2,2
3

2,2

Observat
ii: 10 Aceast
a lem
a justic
a denumirea de drum de cre
stere, precum
si cea de
capacitate rezidual
a.
20 Din denit
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 ux 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 ) =

cij

iS jT

(suma capacit
a
tilor 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) =

(xij xji).

iS jT

(valoarea fluxului este egal


a cu fluxul net ce
trece prin orice sect
iune.)
s
S

t
+
T

223

Demonstrat
ie:


v(x) = ( j xjt j xtj ) 0


= ( j xjs j xsj ) iS,i =s( j xji j xij )


=
=
=

iS (


iS


iS


j xij j xji)

jS (xij xji) +



iS jT (xij xji)

jT (xij xji).

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) = iS jT (xij xji)
(lema 2)



iS jT (cij xji)



iS jT cij

(xij cij )

(xji 0).
224

Observat
ii:
si (S, T )
1) Dac
a x este un ux n R = (G, s, t, c)
o sect
iune astfel nct v(x) = c(S, T ), atunci x
ux n R v(x) c(S, T ) = v(x), deci x este ux
de valoare maxim
a.
2) In exemplul dat, x1 este ux de valoare
maxim
a ntruct v(x1) = 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, e x un ux 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 xij = cij
si
dac
a ji E atunci xji = 0
(altminteri C-drumul de la s la i se poate extinde la un C-drum de la s la j).


Deci, conform lemei 2, v(x) = iS jT (xij




si prin urxji) = iS jT (cij 0) = c(S, T )
mare x este ux de valoare maxim
a.
Teorem
a. 2. (Teorema fluxului intreg)
Dac
a toate capacit
a
tile snt ntregi, atunci exist
a un flux de valoare maxim
a cu toate componentele ntregi (flux ntreg de valoare maxim
a).
Demonstrat
ie: Fie algoritmul
1: x0 0; i 0;
2: while (Pi drum de crestere relativ la xi) do

i+1
i
x
r(Pi);
{ x
i++
}
226

Se observ
a c
a xi are componente ntregi
este un invariant al algoritmului (din denit
ia
a toate capacit
a
tile snt ntregi,
lui r(Pi ), dac
rezult
a c
a r(Pi ) este ntreg n ipoteza c
a xi e
ntreg)
si c
a la ecare iterat
ie a pasului 2 valoarea uxului curent cre
ste cu m
acar o unitate,
deci pasul 2 se repet
a de cel mult c({s}, V
inut este, con{s}) Z+ ori. Fluxul nal obt
form teoremei 1, de valoare maxim
a.
Observat
ie. Algoritmul, descris mai sus, este
nit
si n cazul capacit
a
tilor 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 ux init
ial x0 (x0 exist
a
ste
ntotdeauna, de exemplu x0 = 0), construie
ntr-un num
ar nit de pa
si un ux 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


a
tilor rat
ionale algoritmul
descris n demonstrat
ia teoremei 2, satisface
aceast
a condit
ie.
Pentru cazul capacit
a
tilor reale vom prezenta,
mai trziu, un astfel de algoritm, datorat lui
Edmonds
si Karp (1972).
Observat
ii: i) I n demonstrat
ia teoremei 3 avem
nevoie de fapt, doar s
a ar
at
am c
a exist
a un
ux x de valoare maxim
a
si apoi s
a-i aplic
am
construct
ia din demonstrat
ia teoremei 1;
existent
a uxului x maxim rezult
a imediat, considernd transcrierea problemei uxului maxim
ca o problem
a de programare liniar
a; am preferat
demonstrat
ia de mai sus care (de
si va completat
a abia dup
a analiza algoritmului lui EdmondsKarp) este constructiv
a.
ii) Important
a algoritmic
a a teoremei 3 este evident
a: mult
imea sect
iunilor ret
elei este nit
a,
pe cnd mult
imea uxurilor din ret
ea este innit
a.
228

Algoritmul lui Ford


si Fulkerson pentru aarea
unui ux de valoare maxim
a
Se va folosi un procedeu de etichetare a vrfurilor
ret
elei, n vederea depist
arii drumurilor de cre
stere
a uxului curent x. Dac
a nu exist
a drumuri de
cre
stere, uxul va de valoare maxim
a.
Eticheta atribuit
a unui vrf j V are trei componente (e1, e2, e3) unde e1 V {0} ; e2
{direct, invers} ; e3 R+
si au urmatoarea
semnicat
ie:
- dac
a e2 = direct
si e1 = i atunci un C-drum
P de la s la j cu ultimul arc ij, arc direct
si
r(P ) = e3;
- dac
a e2 = invers
si e1 = i atunci un C-drum
P de la s la j cu ultimul arc ij, arc invers
si
r(P ) = e3.
Init
ial, se eticheteaz
a sursa s cu eticheta (0, ., ).
Celelalte vrfuri primesc etichet
a prin
cercetarea vrfurilor deja etichetate:
229

Dac
a i este un vrf etichetat, atunci j V
Dac
a j neetichetat, ij E
si xij < cij atunci
j se etichet. e = (i, direct, min(e3[i], cij xij ));
Dac
a j neetichetat, ji E
si xji > 0 atunci
j se etichet. e = (i, invers, min(e3[i], xji)).

Evident, n acest fel se respect


a semnicat
ia
celor trei componente ale etichetelor.
Numim aceast
a procedur
a etichetare(i).
Atunci cnd n procedura de etichetare s-a atribuit
etichet
a vrfului t, s-a obt
inut un drum de cre
stere
P a uxului curent, de capacitate rezidual
a
r(P ) = e3[t]
si ale c
arui vrfuri se depisteaz
a n
O(n) explornd prima component
a a etichetelor.

Modicarea uxului x r(P ) se execut
a n acest
mers napoi, tot n O(n).
Pentru noul ux se reia procedura de etichetare.
230

Dac
a toate vrfurile etichetate au fost cercetate
si nu sa reu
sit etichetarea vrfului t, rezult
a c
a uxul curent
nu admite drumuri de cre
stere, este deci de valoare
maxim
a, iar dac
a S = mult
imea vrfurilor etichetate
atunci (S, V S) este o sect
iune de capacitate minim
a.

Descrierea algoritmului
ial (de ex. uxul nul);
1: Se alege x = (xij ) ux init
Se eticheteaz
a s cu (0, ., )
2: while ( vrfuri etichetate necercetate) do
{ alege un vrf etichetat
si necercetat i;
etichetare(i);
if (t a primit etichet
a) then
{ modic
a uxul 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 ux de valoare maxim
a
(S, T ) este sect
iune de capacitate minim
a.
231

Complexitatea algoritmului:
Pentru ecare cre
stere a uxului, snt necesare
cel mult 2m(m = |E|) inspect
ii de arce n vederea etichet
arii.
Dac
a toate capacit
a
tile snt ntregi atunci vor
necesare cel mult v (v = valoarea uxului
maxim) cre
steri succesive. Rezult
a c
a algoritmul are complexitatea O(mv).
Dac
a U este o margine superioar
a a capacit
a
tilor
arcelor atunci v (n 1)U ((n 1)U este o
margine superioar
a a capacit
a
tii sect
iunii ({s}, V
{s})), deci algoritmul are complexitatea O(nmU ).
Observat
ii. 10. Dezavantajele algoritmului snt
legate de neconvergent
a n cazul capacit
a
tilor
irat
ionale (de
si practic, n implement
ari nu este
cazul),
si de faptul ca m
arimile capacit
a
tilor
inuent
eaz
a comportarea sa, acestea neconstituind o m
asur
a a volumului datelor de intrare.
Exemplu:
232

2
M,0
s 1

1,0

M,0

M,0
4 t

P1

P
2

M,0
3

Dac
a alegerea, din pasul 2 al algoritmului,
face ca drumurile de cre
stere succesive (pornind
de la uxul nul) s
a e P1, P2, P1, P2, . . . unde
P1 = 1, 2, 3, 4, P2 = 1, 3, 2, 4 atunci, ecare
cre
stere a uxului m
are
ste cu 1 valoarea uxului curent
si, deci, vor necesare 2M cre
steri,
ceea ce este inadmisibil pentru M Z+ foarte
mari.
20. Aceste dezavantaje pot evitate dac
a
alegerile vrfurilor etichetate supuse cercet
arii
se fac judicios. Primii care au observat acest
fenomen, au fost Dinic(1970)
si independent,
Edmonds
si Karp (1972).
233

Modicarea lui Edmonds


si Karp a algoritmului lui Ford & Fulkerson
Numim drum minim de cre
stere a uxului x
n ret
eaua R, un drum de cre
stere de lungime
minim
a printre toate drumurile de cre
stere.
Fie x un ux oarecare n ret
eaua R. Denim

sirul de uxuri xk n R astfel:


x0 x;

xk xk1 r(Pk1), Pk este drum minim de crestere
relativ la xk1; k = 1, 2, . . .

Vom dovedi c
a
sirul de uxuri astfel construit
este nit.
Not
am, pentru i V
si k = 0, 1, 2, . . .
ik = lungimea minim
a a unui C-drum de la s la i n R
relativ la uxul xk .
ik = lungimea minim
a a unui C-drum de la i la t n R
relativ la uxul xk .

234

Lem
a. 4. Pentru i V
si k = 0, 1, 2, . . .
avem
ik+1 ik
si ik+1 ik .

Teorem
a. 4. (Edmonds, Karp)
Dac
a x = x0 este un flux oarecare n ret
eaua
R, atunci
sirul de fluxuri x1, x2, . . . obt
inut din
x0 prin cre
steri succesive pe drumuri minime
de cre
stere, are cel mult mn
n cel
2 elemente (
mult mn
steri succesive, se obt
ine un flux
2 cre
care nu admite drumuri de cre
stere).
Demonstrat
ie: Dac
a P este un drum de cre
stere
relativ la un ux 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 ), uxul 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
Pk relativ la xk . Lungimea lui Pk este:
ik + ik = jk + jk .
Cum ij este critic n Pk , n xk+1 nu va putea
folosit n aceea
si direct
ie ca n Pk . Prima
oar
a cnd uxul pe arcul ij se va modica, el
va apare ntr-un drum de cre
stere Pl cu l > k
relativ la xl
si va folosit n direct
ie opus
a.
Avem, deci, dou
a cazuri:
i) ij direct n Pk. Atunci jk = ik + 1. In Pl ij
va arc invers, deci il = jl + 1.
P
k

P
l

Rezult
a, il + il = jl + 1 + il jk + 1 + ik =
ik + ik + 2 (s-a folosit lema 1 ). Am obt
inut
c
a lg(Pl ) lg(Pk ) + 2.
236

ii) ij arc invers n Pk. Atunci ik = jk + 1. In


Pl ij va arc direct, deci jl = il + 1.
P
k

P
l

Rezult
a jl + jl = il + 1 + jl ik + 1 + jk =
jk + jk + 2 Deci, lg(Pl ) lg(Pk ) + 2.
Deci orice drum minim de cre
stere n care
arcul ij este critic este cu m
acar dou
a arce
mai lung dect precedentul n care ij a fost
critic.
Cum, un drum n G are cel mult n 1 arce,
rezult
a c
a un arc xat nu poate critic n procesul 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
stere, n
sirul
de mn
2 drumuri minime de cre
construit. Deci, dup
a cel mult mn/2 cre
steri,
se obt
ine un ux 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: 10 Rezult
a de aici, c
a demonstrat
ia
teoremei 3 este complet
a.
20 S-ar putea pune ntrebarea dac
a nu cumva,
alegerea drumurilor minime de cre
stere, m
are
ste
complexitatea algoritmului de ux maxim ?
R
aspunsul este ns
a banal:
Lem
a. 5. Dac
a, n pasul 2 al algoritmului lui
Ford
si Fulkerson, alegerea vrfurilor etichetate
n vederea cercet
arii se face dup
a regula primul
etichetat - primul cercetat, atunci drumurile
de cre
stere care se depisteaz
a snt cu num
ar
minim de arce.
Demonstrat
ie: Fie P un drum de cre
stere depistat
si e P un drum minim de cre
stere. Presupunem c
a lg(P ) > lg(P ).
238

Fie
P : si1, i1 i2, . . . , ik1ik , ik ik+1, ik+1ik+2, . . . , ik+l1t
si
P : si1, i1i2 , . . . , ik1ik , ik jk+1, jk+1jk+2, . . . , jk+l 1 t.

Deci, lg(P ) = k + l, lg(P ) = k + l , au primele


k arce comune
si l < l.
Conform regulii de etichetare, ik+1 va primi
etichet
a naintea lui jk+1, dar jk+1 va primi
etichet
a naintea lui ik+2; jk+2 va primi etichet
a
naintea lui ik+3
si a
sa mai departe; obt
inem inductiv c
a t prime
ste etichet
a naintea lui ik+l +1,
deci t prime
ste etichet
a pe drumul P , nainte
de a primi etichet
a pe drumul P , absurd.
Observat
ie: Regula primul etichetat - primul
cercetat corespunde unei explor
ari bf s a vr
furilor etichetate, ceea ce se poate realiza, utiliznd o coad
a pentru memorarea lor. Aceasta
nu afecteaz
a complexitatea algoritmului, care
va necesita tot O(m) operat
ii pentru ecare
cre
stere a uxului , si din teorema 4 obt
inem
239

Teorem
a. 5. (Edmonds- Karp 1972)
Dac
a se modific
a algoritmul lui Ford
si Fulkerson cu precizarea alegerii bf s a vrfurilor etichetate
n vederea cercet
arii, atunci, fluxul maxim se
obt
ine n timpul O(m2n) .

Exercit
iu. Aplicat
i algoritmul lui Ford & Fulkerson modicat pentru obt
inerea unui ux de
valoare maxim
a n ret
eaua de mai jos (n care
este precizat un ux init
ial de valoare 55 ).

240

Algoritmi de tip preux.


Fie R = (G, s, t, c) o ret
ea.

Definit
ie. Se nume
ste preux n ret
eaua R, o
funct
ie x : E R astfel nct
0 xij cij

(i)
(ii)

i = s ei =


j:jiE

Num
arul ei
din vrful i.

ij E
xji

xij 0.

j:ijE

i V {s, t} se nume
ste excesul

Dac
a i V {s, t}
si ei > 0 atunci i se nume
ste
nod activ.
Dac
a ij E xij va numit uxul pe arcul ij.
241

Observat
ii: 10. Dac
a n ret
eaua R nu exist
a
noduri active, atunci preuxul x este ux de
la s la t n R de valoare et .
20. Ideea algoritmulor de tip preflux este: se
porne
ste cu un preux n R
si se transform
a
prin modic
ari ale uxului pe arce ntr-un ux
care nu admite drumuri de cre
stere.
30. In denit
ia unui preux, nu am mai utilizat
convent
ia c
a vom introduce toate perechile de
arce din digraful complet simetric de ordin n,
ntruct n analiza algoritmilor pe care i vom
prezenta va esent
ial
a reprezentarea digrafului 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 capacitate 0).

242

Definit
ie: Dac
a x este un preux n R
si ij E,
atunci capacitatea rezidual
a a arcului ij este
rij = cij xij + xji
(reprezentnd uxul adit
ional ce poate trimis
de la nodul i la nodul j utiliznd arcele ij
si ji).
cij , xij+dir

cij, xij
trimite
i

a=dir+inv

pe arcul ij
cji, xji - inv

cji , xji

ej

e -a
i

e +a
j

Observat
ie. Peste tot, n cele ce urmeaz
a, a
trimite ux de la i la j nseamn
a s
a cre
stem
uxul pe arcul ij sau s
a mic
sor
am uxul pe
arcul ji.
Definit
ie: Se nume
ste C-drum n R relativ la
preuxul 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 preuxul x, o funct
ie d : V Z+ care
satisface
(D1)

d(t) = 0
ij E, rij > 0 d(i) d(j) + 1

(D2)

d( j )
d(s)

d( j ) + 1

d( j ) - 1

j
i
i

Observat
ii: 10. Dac
a P este un C-drum relativ
la preuxul 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

20. Vom nota cu A(i), pentru orice vrf i, lista


sa de adiacent

a, care cont
ine arcele ij E.
Definit
ie. Fie x un preux n R
si d o funct
ie de
distant

a relativ la x. Un arc ij E se nume


ste
admisibil dac
a
rij > 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 preux x
si o funct
ie de distant

a d corespunz
atoare acestuia, astfel:
procedure init
ializare;
{
for ij E do
if i = s then xsj csj else xij 0;
d[s] n; d[t] 0;
for i V {s, t} do d[i] 1
}
245

Observat
ii: 10.

Dup
a execut
ia acestei proceduri,
sj A(s) avem rsj = 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 vericat
a.

rsj =0
d(s) = n

d( j )=1

d( t )=0

j
s

t
j
r js >0

rjt >0
1=d(j)=0+1=d(t)+1

1=d(j)<n+1=d(s)+1

20. Alegerea lui d(s) = n are urm


atoarea interpretare: nu exist
a C-drum de la s la t n
R relativ la x (ntruct, altminteri, ar trebui
ca lungimea acestuia s
a e n).
Dac
a, n algoritmii de tip preux vom p
astra
acest invariant, atunci cnd x va deveni ux,
va rezulta c
a nu admite drumuri de cre
stere
si
deci x va 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(ei, rij ) unit
a
ti de ux de la i la j

a, altDac
a = rij avem o pompare saturat
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) rij > 0}
}

247

Schema general
a a unui algoritm de tip preux
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 preuxul 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 preuxul init


ial.
248

Dac
a naintea execut
iei unei iterat
ii a lui while,
d e funct
ie de distant

a relativ la preuxul 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 rji > 0
(f
ar
a ca nainte s
a fost), dar condit
ia d(j)
d(i) + 1 este, evident, satisf
acut
a;
b) dac
a se execut
a reetichetare(i), modicarea
lui d(i) se face astfel nct D2 s
a r
amn
a valabil
a pentru orice arc ij cu rij > 0. Cum apelul
lui reetichetare implic
a d(i) < d(j) + 1 ij cu
rij > 0, rezult
a c
a dup
a apel d(i) cre
ste m
acar
cu o unitate.
Pentru nitudinea 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 rij > 0. Aceasta rezult
a din
Lem
a. 7. Dac
a pe parcursul algoritmului, i0
este un nod activ, atunci exist
a un C-drum de
la i0 la s, n R, relativ la prefluxul curent x.
249

Demonstrat
ie: Dac
a x este un preux n R,
atunci x se poate scrie ca o sum
a nit
a x =
x1 + x2 + . . . + xp, unde ecare xk satisface:
mult
imea Ak = {ij | ij E, xkij = 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), xk este ux.
(demonstrat
ia rezult
a algoritmic, construind mai nti
mult
imile a), apoi a celor de tip c)
si b); la ecare etap
a
se caut
a inversul unui drum de tipul a),b), sau c); preuxul costruit se scade din cel curent; excesele nenegative, permit efectuarea construct
iei; ea este nit
a, c
aci
dup
a ecare etap
a nr. arcelor cu ux curent nul cre
ste.)

Cum i0 este un nod activ n R relativ la x,


rezult
a c
a situat
ia b) va apare pentru nodul i0
(ntruct situat
iile b)
si c) nu afecteaz
a excesul din nodul
i0). Arcele inverse ale acestui drum au capac-

itatea rezidual
a strict pozitiv
a
si ele formeaz
a
C-drumul din enunt
ul lemei.
x>0

x>0

x>0

i0

x>0
r>0
r>0

s
r>0

r>0

e >0
i0

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 Cdrum de la i la s de lungime cel mult n 1.
Din modul de modicare a lui d(i)
si din D2
rezult
a c
a dup
a reetichetare d(i) d(s) + n
1 = 2n 1, ntruct d(s) = n nu se schimb
a pe
parcursul algoritmului.
Corolar. 2. Num
arul total de apeluri ale procedurii reetichetare este mai mic dect 2n2.
Demonstrat
ie: Fiecare din cele n 2 vrfuri ce
pot supuse etichet
arii poate etichetat de
cel mult 2n 1 ori, avnd n vedere corolarul 1,
lema 6
si etichetarea init
ial
a.
251

Corolar. 3. Num
arul total de pomp
ari saturate este nm.
Demonstrat
ie: Dup
a ce un arc ij devine saturat (situat
ie n care d(i) = d(j) + 1), pe acest
arc nu se va mai putea trimite ux pn
a cnd
nu se va trimite ux pe arcul ji situat
ie n care
vom avea d (j) = d (i)+1 d(i)+1 = d(j)+2;
aceast
a schimbare de ux nu va avea loc pn
a
ce d(j) nu cre
ste cu dou
a unit
a
ti. 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 2n2m.
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
2n2m iterat
ii
si cum d(s) = n nu se modic
a
pe parcurs, rezult
a c
a uxul obt
inut este f
ar
a
drumuri de cre
stere.
252

Vom prezenta n continuare, algoritmul lui Ahuja

si Orlin (1988) care, utiliznd o metod


a de
scalare, va m
argini num
arul pomp
arilor nesaturate de la O(n2m) la O(n2 log U ).
Vom presupune c
a toate capacit
a
tile snt ntregi
am  log2U  =

si c
a maxijE (1 + cij ) = U . Not
K. Ideia algoritmului:
Se vor executa K + 1 etape. Pentru ecare
etap
a p, cu p lund succesiv valorile K, K
1, . . . , 1, 0 vor ndeplinite urm
atoarele condit
ii:
(a) - la nceputul etapei p, i satisface ei 2p
(b) - n timpul etapei p se utilizeaz
a procedurile pompare-etichetare n vederea elimin
arii
nodurilor active cu ei (2p1, 2p].
Din alegerea lui K, n etapa init
ial
a (p = K)
condit
ia (a) este satisf
acut
a
si deci, dac
a (b)
va invariant al algoritmului, dup
a K+1 etape,
excesele nodurilor vor 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
ux de valoare maxim
a (datorit
a propriet
a
tilor
funct
iei distant

a d(i)).
Realizarea lui (b) se poate face astfel:
- se ncepe etapa p, construind lista L(p) a
tuturor nodurilor i1, i2, . . . , il(p) cu excesele
eij > 2p1, ordonate cresc
ator dup
a d (avnd 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 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 ei > 2p1
si
a, n plus, se va limita , uxul
ej 2p1. Dac
trimis de la i la j, n procedura de pompare
la = min(ei , rij , 2p ej ),
254

atunci, cum 2p ej 2p1 va rezulta c


a orice
pompare nesaturat
a trimite cel put
in 2p1
unit
a
ti de ux. Dup
a pompare, excesul din
nodul j (singurul nod al c
arui exces poate cre
ste)
va ej + min(ei , rij , 2p ej ) ej + 2p ej 2p
(deci b) r
amne ndeplinit
a).
- etapa (p) se termin
a atunci cnd L(p) devine
vid
a.
Pentru realizarea ecient
a a operat
iilor de depistare a unui arc pe care se face pomparea,
sau a examin
arii arcelor care ies dintr-un vrf i
pentru reetichetare, vom considera listele A(i)
organizate astfel:
- ecare nod al listei cont
ine: vrful j; xij ; rij ;
pointer c
atre arcul ji (din lista de adiacent

a a
vrfului 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 log2 (U ) ; 2K+1 ;
for p = K, K 1, . . . , 0 do
{ construie
ste L(p);
2
while L(p) = do
{ e i primul element din L(p);
parcurge lista A(i) din locul curent pn
a
se determin
a un arc admisibil sau se
depisteaz
a sfr
situl ei;
if ij este arcul admisibil g
asit then
{ min(ei, rij , ej );
ei ei ; ej ej + ;
trimite unit
a
ti de ux de la i la j;
if ei
then
sterge i din L(p);
2
then adaug
a j ca prim nod n L(p)
if ej >
2
}
else // s-a depistat sfr
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) rij > 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, snt pomp
arile nesaturate. Toate celelalte operat
ii snt dominate
de O(nm).
Lem
a. 8. Num
arul pomp
arilor nesaturate
este cel mult 8n2 n fiecare etap
a a scal
arii,
deci O(n2 log U ) n total.
Demonstrat
ie: Fie

ei d(i)
F (p) =
.
p
2
iV i =s,t

2p(2n)
2.
La nceputul etapei p, F (p) < iV
=
2n
p
2
Dac
a n etapa p, atunci cnd 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
a
ti,
ceea ce conduce la o cre
stere a lui F cu cel mult unit
a
ti.
Cum pentru ecare i, cre
sterea lui d(i) pe parcursul
ntregului algoritm este < 2n rezult
a c
a F va cre
ste pn
a
situl etapei p.
la cel mult valoarea 4n2, la sfr
257

Dac
a, pentru un nod i se execut
a pompare,
atunci aceasta se execut
a pe arcul ij cu rij > 0

si d(i) = d(j) + 1.
Cum num
arul unit
a
tilor de ux pompat este
2p1, dup
a pompare F (p) va avea valoarea
F (p), unde
d(j)

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

p
p
2
2
2p
p1
F (p) 22p = F (p) 1
2.

Rezult
a c
a aceast
a situat
ie nu poate ap
area
mai mult de 8n2 (ntruct F (p) poate cre
ste
cel mult la 4n2).
Cu att mai mult, pomp
arile nesaturate nu vor
dep
a
si 8n2.
Sumariznd toate rezultatele anterioare obt
inem
Teorem
a. 6. (Ahuja-Orlin 1988) Algoritmul
de tip preflux cu scalarea exceselor are complexitatea O(nm + n2 log U ).
258

2. Aplicat
ii (combinatorii) ale problemei
uxului maxim.
A. Determinarea cuplajului maxim
si a stabilei maxime ntr-un graf bipartit.
Fie G = (V1, V2; E) un graf bipartit cu n vrfuri

si m muchii.
Consider
am ret
eaua R = (G1, s, t, c), unde
- V (G1) = {s, t} V1 V2 ;
- E(G1) = E1 E2 E3
.
E1 = {sv1 | v1 V1},
.
E2 = {v2t | v2 V2},
.
E3 = {v1v2 | v1 V1, v2 V2, v1v2 E};
- c : E(G1) Z+ denit
a prin
c(e) =

dac
a e E1 E2
dac
a e E3

(vezi gura urm


atoare).
259

V
2

V
1
++

1
1

++
1

++

1
1

++

1
t

1
1
1

1
++

Dac
a x = (xij ) este un ux cu componente
ntregi n R atunci se observ
a c
a mult
imea de
arce {ij | i V1, j V2
xij = 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 G1; dac
a pe ecare asta uxul
fel de arc ij (i V1, j V2) se consider
xij egal cu 1
si de asemenea xsi = xjt = 1,
si
lund uxul x = 0 pe orice alt arc, atunci uxul
construit are valoarea |M |.
Rezult
a c
a rezolvnd problema uxului maxim
pe ret
eaua R se determin
a (pornind de la uxul
nul) n O(nm + n2 log n) un cuplaj de cardinal
maxim n graful bipartit G.
260

Fie (S, T ) sect


iunea de capacitate minim
a ce
se poate construi, din uxul maxim obt
inut, n
O(m) operat
ii.
Vom avea, c(S, T ) = (G), din teorema uxului
maxim-sect
iunii minime.
V
2

V
1

++
1
1

++
1

++

1
1

++

1
t

1
1
1

1
++
S

Cum (G) < , rezult


a c
a punnd Si = S Vi
si
Ti = T Vi (i = 1, 2), avem: |T1| + |S2| = (G),
ime stabil
a n graful
iar X = S1 T2 este mult
G (pentru a avea c(S, T ) < ).
In plus, |X| = |V1 T1| + |V2 S2| = n (G).
Rezult
a c
a X este stabil
a de cardinal maxim,
ntruct n (G) = (G) (teorema lui K
onig).
261

B. Recunoa
sterea secvent
elor digrace.

Date (d+
)

s
i
(d
a un digraf
i=1,n
i
i )i=1,n , exist
G cu n vrfuri astfel nct G = ({1, . . . , n}, E)
+

si d+
(i)
=
d

s
i
d
(i)
=
d
i
i i = 1, n ?
G
G
(Problema poate apare n proiectarea circuitelor
integrate).

Evident, va trebui ca 0 d+

n1

s
i
0

i
i



n 1 i = 1, n
si i=1,n d+
=
d
i=1,n
i
i = m

(unde, m = |E|, iar d+


i , di Z).

In aceste ipoteze, construim ret


eaua bipartit
a
R = (G1, s, t, E) unde G1 se obt
ine din Kn,n
{11 , 22 , . . . , nn } prin orientarea muchiilor ij
i = j {1, . . . , n},
si introducerea arcelor si,
i {1, . . . , n}
si j t, j {1, . . . , n}.
Funct
ia de capacitate va c(si) = d+
i i =
1, n, c(j t) = d
si c(ij ) = 1.
j j = 1, n
262

Dac
a n aceast
a ret
ea, exist
a un ux ntreg de valoare
maxim
a m, atunci din orice vrf i {1, . . . , n} vor pleca
si
exact d+
n
i arce pe care uxul este 1, de forma ij
ecare vrf j vor intra exact d
j arce pe care uxul este
1, de forma ij .
1

1
+
d1

d1

d2

+
d2

1
dn+

dn

1
n

Considernd mult
imea de vrfuri {1, . . . , n}
si introducnd
toate arcele ij astfel nct xij = 1, se obt
ine un digraf G cu secvent
ele gradelor interioare
si exterioare
si (d
a acest digraf exist
a,
(d+
i )i=1,n . Reciproc, dac
i )i=1,n
atunci procednd invers ca n construct
ia anterioar
a, se
obt
ine un ux ntreg n ret
eaua R de valoare m (deci
maxim). Rezult
a c
a recunoa
sterea secvent
elor digrace
(
si construct
ia digrafului n cazul r
aspunsului armativ)
se poate face n O(nm + n2 log n) = O(n3).
263

C. Determinarea nr. de muchie-conexiune


al unui graf
Fie G = (V, E) un graf. Pentru s, t V, s = t,
denim:
-pe(s, t) = num
arul maxim de drumuri cu muchii
disjuncte ce unesc s
si t n G.
-ce(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. pe(s, t) = ce(s, t).

Demonstrat
ie: Construim din G digraful G1,
nlocuind ecare muchie a lui G cu o pereche
de arce simetrice. Consider
am
c : E(G1) Z+ prin c(e) = 1, e E(G1).
Fie x0 un ux ntreg de valoare maxim
a n
R = (G1, s, t, c). Fluxul x0 se poate scrie ca
o sum
a de v(x0) uxuri xk ntregi de valoare 1,
nlocuind, eventual, uxul pe unele circuite cu
0.
264

t
t

s
s
Fluxul pe arcele groase
este 1, pe cele subtiri 0.

Fiecare astfel de ux xk induce un drum de la


s la t n G1 (considernd arcele pe care uxul
este nenul),
si deci,
si n G.
Rezult
a c
a v(x0) = pe(s, t), ntruct orice mult
ime
de drumuri disjuncte pe muchii, genereaz
a un
ux 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(x0), din teorema uxului maximsect
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(G1). 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(x0) = pe (s, t)
muchii n G care deconecteaz
a, prin ndep
artare,
s
si t. Deci ce(s, t) pe(s, t).
Cum, inegalitatea ce (s, t) pe(s, t) este evident
a, rezult
a c
a teorema este demonstrat
a.
Corolar. Dac
a G este un graf conex (G) (valoarea maxim
a a lui p Z+ astfel nct G este
pmuchie-conex) este
min
s,tV (G)
s =t

ce(s, t).

()

266

Rezult
a c
a, pentru a aa (G), rezolv
am cele
n(n1)
probleme de ux, descrise n demonstrat
ia
2
teoremei.
Totu
si, s
a observ
am c
a pentru o pereche xat
a
s
si t avem: dac
a (S, T ) este sect
iunea de capacitate minim
a, atunci
v S
si w T ce(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 x
am un vrf s0
si rezolv
am
n 1 probleme de ux cu t V s0 se va
obt
ine n mod necesar o pereche s0, t0 pentru
care c(s0, t0) = (G) (ne asigur
am, astfel, depistarea unui vrf t0, care s
a nu e n aceea
si
clas
a cu s0 n partit
ia (S, T )).
Rezult
a c
a n O(n (nm + n2c)) = O(n2m) se
pot determina (G)
si o mult
ime separatoare 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, notnd
-p(s, t) = num
arul maxim de stdrumuri cu
mult
imile de vrfuri disjuncte (cu except
ia extremit
a
tilor),
-c(s, t) = cardinalul minim al unei mult
imi de
vrfuri st separatoare,
avem, din teorema lui Menger,
p(s, t) = c(s, t)

()

In plus, num
arul de conexiune k(G) al grafului
G (valoarea maxim
a a lui p Z+ pentru care
G este pconex) este

n 1

k(G) =

min c(s, t)

s,tV
stE
/

dac
a G = Kn
dac
a G=
Kn

()

268

Vom ar
ata c
a egalitatea (*) rezult
a
si din teorema uxului maxim-sect
iunii minime pe o ret
ea
convenabil aleas
a.
Fie G1 = (V (G1), E(G1)) digraful construit din
G astfel:
am av , bv V (G1)
si av bv E(G1 );
-v V consider
- vw E consider
am bv aw , bw av E(G1).
Exemplu:
b1
1
s

at

a1

bt

2
S
a
s

a2
bs

b2

Arcele groase au capacitate


infinit, cele subtiri 1.

Denim c : E(G1) Z+ prin


c(e) =

dac
a e = av bv
altfel.
269

Consider
am ret
eaua R = (G1, bs, at , c).
Fie x0 un ux ntreg de la bs la at n R de
valoare maxim
a.
In vrfurile bv (v V ) intr
a exact un arc de caa exact
pacitate 1
si din vrfurile av (v V ) pleac
un arc de capacitate 1. Rezult
a c
a, pentru ca
s
a e satisf
acut
a legea de conservare a uxului,
x0
ij E(G1).
ij {0, 1}
Aceasta nseamn
a c
a x0 se poate descompune
si astfel
n v(x0) uxuri xk , ecare de valoare 1,
nct arcele pe care xk snt nenule corespund la
v(x0) drumuri disjuncte de la bs la at n G1,
care induc o mult
ime de v(x0) 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 bs
la at n G1 pe care se poate transporta cte o
unitate de ux, rezult
a c
a avem
:
v(x0) = p(s, t).
270

Fie (S, T ) o sect


iune n R astfel nct v(x0) =
c(S, T ).
Cum v(x0) este nit, rezult
a c
a i S, j T
cu ij E(G1),avem c(ij) < , deci c(ij) = 1,
si j = bu.
adic
a u V astfel nct i = au
Deci sect
iunii (S, T ) i corespunde o mult
ime
de vrfuri A0 V astfel nct, c(S, T ) = |A0|
si
evident A0 este st separatoare.
Cum, pe de alt
a parte, A stseparatoare, |A|
p(s, t) = v(x0) rezult
a c
a
c(s, t) = |A0| = c(S, T ) = v(x0) = p(s, t).

Demonstrat
ia de mai sus, arat
a c
a pentru a
determina k(G) va sucient s
a determin
am
minimul din (**) prin rezolvarea a |E(G)| probleme de ux, unde G este graful complementar
al lui G.
Deci algoritmul va avea complexitatea
 n(n 1)

O (

m)(nm + n log n)) .


271

O simpl
a observat
ie ne conduce la un algoritm
mai ecient. Evident,
1 (n min
k(G) minvV dG(v) = n
vV dG (v))

1(
2m .
d
(v))
=
G
vV
n
n
ime de articulat
ie n G cu
Dac
a A0 este o mult
|A0| = k(G) atunci G A0 este neconex
si se
poate partit
iona V A0 = V V astfel nct,
v V , v V avem p(v , v) = k(G).
Rezult
a c
a, rezolvnd o problema de ux cu
s0 V
si t0 V va rezulta c
a p(s0, t0) =
valoarea uxului maxim = k(G).
Vom siguri c
a depist
am o astfel de pereche,
dac
a proced
am astfel:
consider
am l =  2m
rfuri oaren +1 , alegem l v
care din G,
si pentru ecare astfel de vrf 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 O(m(nm + n2 log n)).
272

3. Fluxuri de cost minim

Fie R = (G, s, t, c) o ret


ea
si x un ux de la s
la t n R.
ie de cost care
Consider
am a : E R o funct
asociaz
a ec
arui arc ij E a(ij) = aij costul
(transportului unei unit
a
ti de ux) pe arcul ij.
Costul uxului x se dene
ste ca ind
a(x) =

aij xij .

i,j

Problema uxului de cost minim


si a : E R funct
ie de
Dat
a R o ret
ea, v R+
cost, s
a se determine x0 flux n R astfel nct
a(x0) = min{a(x) | x ux n R, v(x) = v}.

Observ
am c
a, dac
a v nu dep
a
se
ste valoarea
uxului maxim n ret
eaua R, atunci problema
are ntotdeauna solut
ii, a(x) ind liniar
a, iar
mult
imea uxurilor de valoare dat
a v ind m
argi
nit
a
si nchis
a n Rm.
273

Exemple.
atori
si n lucr
ari. Cos10. Se dispune de n lucr
tul atribuirii lucr
atorului i la lucrarea j este
a se atribuie ecare
aij (i, j {1, . . . , n}). S
dintre cele n lucr
ari la cte un lucr
ator,
astfel nct costul total al atribuirii s
a e
minim. (Problema simpl
a a atribuirii).
Consider
am ret
eaua descris
a mai jos, unde pe
ecare arc este trecut
a mai nti capacitatea
si
apoi costul. Deci cij = 1, csi = 1, asi = 0, cjt =
1, ajt = 0 i, j {1, . . . , n}.
1,a 11
1

1,0

1,0
2
1,0
s

1,0

2
1,a ij

1,0

1,0

i
1,0

1,0
n

1,a n1

Evident, un ux 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.
20.O marf
a disponibil
a n depozitele D1, . . . , Dn
n cantit
a
tile d1, . . . , dn este solicitat
a n centrele de consum C1, C2, . . . , Cm n cantit
a
tile
c1, c2, . . . , cm.
Se cunoa
ste costul aij al transportului unei
unit
a
ti de marf
a de la depozitul Di la centrul
de consum Cj (i {1, . . . , n} j {1, . . . , m}).
Se cere s
a se stabileasc
a un plan de transport 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


d

i=1,n i
j=1,m cj .
275

In acest caz, un ux de cost minim


si de val
oare v = i=1,m ci n ret
eaua urm
atoare, rezolv
a problema.

oo ,a 11
C1

D1
d1, 0

C2

d 2 , 0 D2
s

o o ,a ij
d i, 0

Cj

c ,0
1
c ,0
2
c j, 0

Di

d n, 0
Dn

c ,0
m
o o ,a n1

Cm

276

Definit
ie. Fie x un ux 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 uxul
x, atunci costul drumului P se dene
ste
a(P ) =

ijP
ij
direct

aij

aji.

ijP
ij
invers

Dac
a C este un C-drum nchis, a(C) se calculeaz
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 denit
ia unui C-drum).
Observat
ii: 10 Din denit
ia dat
a, rezult
a c
a
dac
a P este drum de cre
stere relativ la uxul

x, atunci x1 = x r(P ) este un ux de valoare
v(x1) = v(x)+r(P )
si de cost a(x)+r(P ) a(P ).
a C este un C-drum nchis relativ la
20 Dac

x, atunci x1 = x r(C) este un ux de valoare v(x1) = v(x)
si de cost a(x1) = a(x) +
r(C) a(C).
Dac
a a(C) < 0 atunci x1 este un ux 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 Cdrumuri nchise de cost negativ.
Demonstrat
ie: Necesitatea este evident
a din
observat
ia anterioar
a.
Suficient
a. Fie x un ux de valoare v, care nu
admite C- drumuri nchise de cost negativ.
Fie x un ux de valoare v, de cost minim
(exist
a !) astfel nct
(x, x) = min{(x, x ) | x ux de val. v
si cost minim}

unde (x, x ) = |{ij | xij = x ij }|.


a x = x
si deci x este
Dac
a (x, x) = 0 rezult
de cost minim.
Dac
a (x, x) > 0, e ij astfel nct xij =
xij . Presupunem 0 xij < xij cij (altfel,
rat
ionamentul este similar). Din legea de conservare a uxurilor rezult
a c
a
jk E astfel nct 0 xjk < xjk cjk , sau
kj E astfel nct 0 xkj < xkj cjk .
278

x ij < x *
ij
j

*
x vj < x vj

jk

< x*
jk

x* < x
tk
tk

Repetnd acest rat


ionament, deoarece num
arul
vrfurilor este nit, se va obt
ine C, un C-drum
nchis relativ la x n R.
Considernd sensul invers de parcurgere pe C
se obt
ine un C-drum C , nchis relativ la x.
Deoarece a(C) 0 din ipotez
a, iar a(C ) =
a(C), rezult
a, din necesitatea teoremei (x
este de cost minim), c
a a(C) = 0.
Modicnd uxul x cu (C ) pe C , unde

(C ) = min

min
xjk xjk
kj
C
kj invers
n C
se obt
ine un ux x cu v(x ) = v(x) = v,
a(x ) = a(x) + (C ) a(C ) = a(x), deci de
min
direct n

xkj xkj ,

279

cost minim, dar, cu (x, x ) < (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 P0 este un drum de
cre
stere, astfel nct
a(P0) = min{a(P ) | P drum de cre
stere relativ la x},


atunci x1 = x r(P0) este un flux de valoare


v(x1) = v + r(P0)
si de cost minim.
Linia demonstrat
iei este urm
atoarea :
presupunnd prin reducere la absurd c
a x1 nu
este de cost minim, atunci x1 admite un Cdrum nchis C de cost negativ. Cum x era ux
de cost minim rezult
a c
a E(C) E(P0) = .
Dac
a ij E(C) E(P0), atunci va rezulta c
a
ine un drum de cre
stere relativ
P0 C ij cont
la x de cost mai mic dect P0.
280

Un drum de cre
stere de cost minim poate depistat cu ajutorul algoritmilor de drum minim.
Dac
a x este un ux n R
si a : E R este
funct
ia de cost atunci considernd aij =
dac
a ij
/ E (caz n care xij = 0), construim

aij

min{a , a }
ij
ji
aij =

aji

dac
a
dac
a
dac
a
dac
a

xij
xij
xij
xij

< cij
< cij
= cij
= cij

si xji = 0,

si xji > 0,

si xji > 0,

si xji = 0.

Un drum de pondere minim


a de la s la t n
raport cu ponderile aij corespunde unui drum
minim de cre
stere n R relativ la uxul x.
Un circuit de pondere negativ
a n raport cu
ponderile aij corespunde unui C-drum nchis n
R relativ la x, de cost negativ.
Rezult
a, urm
atorul algoritm pentru rezolvarea
problemei uxului de cost minim, obt
inut prin
combinarea mai multor algoritmi clasici
(Klein,Busacker,Gowan, etc.).
281

Algoritm generic de rezolvare a problemei uxului


de cost minim
{
0: Se consider
a x = (xij ) un ux cu valoarea v v;
{x poate uxul nul sau un ux y determinat
cu ajutorul algoritmului de ux maxim
si apoi
v
considernd x = ( v(y) y)}
1: while ( circuite de pondere < 0 relativ la aij ) do
{ determin
a un astfel de circuit;
modic
a uxul pe acest circuit
}
2: while v(x) < v do
{ aplic
a un algoritm de drum minim n raport cu
ponderile aij pentru depistarea unui
C-drum
 P de cost minim;
xx
min(r(P ), v v(x))
}
}

Complexitatea pasului 2 este O(n3v), dac


a se pleac
a de
la uxul nul. Complexitatea pentru pasul 2 este O(n3v),
dac
a se pleac
a de la uxul nul. Se poate dovedi c
a pasul
1 se poate implementa astfel ca num
arul iterat
iilor s
a
e O(nm2 logn).
282

VI. Reduceri polinomiale pentru


probleme de decizie pe grafuri.
Definit
ie. Spunem c
a problema de decizie
P1 : I1 {da, nu} se reduce polinomial la
si not
am
problema de decizie P2 : I2 {da, nu}
a exist
a o funct
ie
aceasta prin P1 P2, dac
: I1 I2 polinomial calculabil
a, astfel nct,
i I1 P1(i) = P2((i)).
Funct
ia se va da indic
and un algoritm care
construie
ste pentru orice instant

a i1 I1, n

a
timp polinomial n raport cu |i1|, o instant
a P1(i1) = da dac
a
si
i2 I2 cu proprietatea c
numai dac
a P2(i2) = da.
Se observ
a c
a relat
ia de reducere polinomial
a
este o relat
ie tranzitiv
a pe mult
imea problemelor 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 rezolvat
a ecient
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 = {u1 , . . . , un} o mult


ime nit
a de var. booleene.
C = C1 C2 . . . Cm o formul
a n form
a
conjunctiv
a peste U :
Ci = vi1 vi2 . . . viki
ij

i = 1, m, unde

{1, . . . , n} a. . vij = u sau vij = u.

Intrebare: Exist
a o atribuire t : U {A, F } a. . t(C) = A ?

3SAT este cazul particular al lui SAT n care


ecare clauz
a Ci are exact trei literali (ki = 3),
un literal vij ind, 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 N P 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 = {u1, u2, . . . , un},
(n N), C = C1 . . . Cm (m N) cu
Ci = vi1 vi2 vi3 i = 1, m, (unde vij
{1, . . . , n} astfel nct vij = u sau vij = u),
reprezentnd datele unei instant
e oarecare a
problemei 3SAT.
Vom construi n timp polinomial n raport cu
m + n, un graf G
si k N astfel nct exist
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 nct |S| k.
285

Graful G va construit astfel:


(1) Pentru orice i {1, . . . , n} consider
am grafurile disjuncte Ti = ({ui, ui}, {uiui}).
(2) Pentru orice j = 1, m consider
am grafurile
disjuncte
Zj = ({aj1, aj2, aj3}, {aj1aj2, aj2aj3, aj3aj1}) .
(3) Pentru orice j = 1, m consider
am mult
imea
de muchii
Ej = {aj1vj1, aj2vj2, aj3vj3} unde vj1 vj2 vj3
este factorul Cj .
m V (Z )
Consider
am V (G) = n
V
(T
)

i
j si
i=1
j=1
m
E(G) = n
i=1E(Ti ) j=1(E(Zj ) Ej ).

Evident, construct
ia este polinomial
a n raport
cu m + n (G are 2n + 3m vrfuri
si n + 6m
muchii).
Consider
am k = n + m.
286

Exemplu: U = {u1, u2, u3, u4};


C = (u1 u3 u4) (u1 u2 u4) (u2 u3 u4);
k = 4 + 3 = 7.
u1

u1

u2

u3

u
4

12

a 21

u4

a 33

a 23

a 13

a
11

a 22

31

a 32

S
a presupunem c
a r
aspunsul la problema
SM pentru instant
a G
si k astfel construite
este da. Deci S SG astfel nct |S| k.
Cum orice mult
ime stabil
a poate avea cel mult
un vrf din orice V (Ti)
si din orice V (Zj ) (i =
1, n , j = 1, m) rezult
a c
a avem |S| = k
si deci
|S V (Ti )| = 1, |S V (Zj )| = 1 i = 1, n
si
j = 1, m.
287

Consider
am t : U {A, F } prin
t(ui ) =

A
F

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

si deci
Atunci, j = 1, m avem t(Cj ) = A (
t(C) = A).
In adev
si
ar, j = 1, m dac
a Cj = vj1 vj2 vj3
S V (Zj ) = ajk (k {1, 2, 3}) atunci, deoarece
a c
a vjk
/ S.
ajk vjk E rezult
Dac
a vjk = u, atunci u
/ S deci u S
si din
a t(vjk ) = A
denit
ia lui t avem t(u) = A, adic
ceea ce implic
a t(Cj ) = A.
/ S implic
a u
Dac
a vjk = u , atunci u
a t(vjk ) = A, ceea ce
S, deci t(u) = A, adic
implic
a t(Cj ) = A.
Reciproc, dac
a r
aspunsul la problema 3SAT
este da, atunci exist
a o atribuire t : U {A, F }
astfel nct t(Cj ) = A j = 1, m.
288

Consider
am n graful G mult
imea stabil
a S 1,
S 1 = i=1,nVi , unde

{u }
i

Vi =
{u }
i

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

a
Atunci, j = 1, m, cum t(Cj ) = A, rezult
c
a exist
a kj {1, 2, 3}astfel nct t(vjkj ) = A.
Consider
am S 2 = j=1,m{ajkj }.
Evident, S 2 este stabil
a n G. Am construit
S 1 SG cu |S 1| = n, S 2 SG cu |S 2| = m.
Consider
am S = S 1 S 2. Evident, |S| = n +
si n plus S este mult
ime
m = k (deci |S| k)
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 nct vw E(G)
atunci o extremitate este din S 1
si cealalt
a din
S 2.
289

Presupunnd v S 1 avem dou


a cazuri de considerat
a) v = u, w = ajkj {1, . . . , n} , j
{1, . . . , m} , kj {1, 2, 3}
si vjkj = u. Cum
t(vjkj ) = A rezult
a t(u) = A deci u
/ S 1,
contradict
ie.
b) v = u, w = ajkj {1, . . . , n} , j
{1, . . . , m} , kj {1, 2, 3}
si vjkj = u. Cum
t(vj kj ) = 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 ind c
a grafurile Zi sunt grafuri complete cu ki 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 problemelor de colorare a vrfurilor unui graf.
Vom demonstra chiar mai mult: xnd 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
4

a) Dac
a c este o 3-colorare a lui H astfel nct
c(v1) = c(v2) = c(v3) = a {1, 2, 3} atunci n
mod necesar c(v4) = a.
b) Dac
a c : {v1, v2, v3} {1, 2, 3} satisface
c({v1, v2, v3}) = {a} atunci c poate fi extins
a
la o 3-colorare c a lui H cu c(v4) = a.
Demonstrat
ia lemei se poate face examinnd
lista 3-color
arilor lui H.
292

In cele ce urmeaz
a, vom desemna (pentru simplitate) graful H astfel:
v

v
2

Demonstrat
ia teoremei 2. Consider
am datele
unei instant
e ale problemei 3SAT:
U = {u1 , . . . , un } o mult
ime de variabile booleene (n N )
si C =
C1 C2 . . . Cm (m N ) o formul
a astfel nct i = 1, m Ci =
vi1 vi2 vi3 , unde j = 1, 3 astfel nct vij = u sau vij = u .

Vom construi un graf G, astfel nct, considernd


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 nct t(C) =
A. In plus, construct
ia lui G se va face n timp
polinomial, parcurgnd urm
atoarele etape:
293

1. i = 1, n consider
am grafurile disjuncte
si Ei = {uiui}.
(Vi , Ei) unde Vi = {ui, ui}
2. j = 1, m, pentru Cj = vj1 vj2 vj3 , consider
am grafurile:
v

j1

j2

hj

aj

j3

unde vjk (k = 1, 3) snt vrfurile de la pasul 1,


corespunz
atoare literalilor vjk , grafurile hj snt
disjuncte
si aj snt vrfuri distincte.
3. Consider
am a, un vrf diferit de toate cele
construite n pa
sii 1
si 2
si unim a cu vrfurile
aj j = 1, m.
4. Consider
am b un vrf nou, unit cu ui
si ui
i = 1, n
si de asemenea, cu vrful a.
294

Graful G astfel construit are un num


ar liniar de
vrfuri n raport cu n + m.
Exemplu: U = {u1, u2, u3, u4} ,
C = (u1 u2 u3) (u1 u3 u4) (u2 u3 u4)
Graful G va :
b

u1

u1

u2

h1

a1

h2

u3

u4

u4

h3

a3

a2

Presupunem ca r
aspunsul la 3SAT este da.
Deci t : U {A, F } astfel nct t(C) = A, deci
t(Cj ) = A j = 1, m.
Construim o 3-colorare C a grafului G.
295

Denim mai nti c(ui)


si c(ui) i = 1, n astfel:
c(ui) = 1
si c(ui) = 2, dac
a t(ui ) = A
si
si c(ui) = 1, dac
a t(ui ) = F .
c(ui) = 2
Se observ
a c
a dac
a v este un literal (u sau
u), atunci vrful v este colorat c(v) = 2 dac
a

si numai dac
a t(v) = F .
Deci j = 1, m nu avem c(vj1 ) = c(vj2 ) =
c(vj3 ) = 2.
Folosind lema 1,b) rezult
a c
a putem extinde n
ecare graf hj colorarea c astfel nct c(aj ) = 2,
deci c(aj ) {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 renumerotnd culorile) c
a c(b) = 3
si c(a) = 2.
Va rezulta c
a {c(ui), c(ui)} = {1, 2}
si c(aj )
{1, 3} i = 1, n, j = 1, m.
Din lema 1 a) rezult
a c
a nu vom avea c(vj1) =
c(vj2) = c(vj3) = 2 j = 1, 3.
Deci j = 1, m vjk astfel nct c(vjk ) = 1.
Denim t : U {A, F } prin
t(ui ) = A c(ui) = 1.
Conform observat
iei anterioare, vom avea c
a
a
t(Cj ) = A j = 1, m, deci t(C) = A, adic
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.
u

v
7

v
4

v
2

6
t

v
3

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(v1v7) = 2, c(v1v2) = 3.
a1).c(u) = 1. Avem urm
atorul
sir de implicat
ii:
c(v2v4) = 2,c(v2v5) = 1,c(v4v6) = 3,c(v3v6) =
2,c(v3v5) = 3, c(t) = 2,c(v6v7) = 1,c(z) = 3.
a2).c(u) = 2. Avem urm
atorul
sir de implicat
ii:
c(v2v4) = 1,c(v2v5) = 2,c(v4v6) = 3,c(v3v6) =
2,c(v3v5) = 3, c(t) = 1,c(v6v7) = 1,c(z) = 3.
a3).c(u) = 3. Muchia v2v4 poate avea culorile
1 sau 2.
a3.1.)c(v2 v4) = 1. Avem atunci, c(v2v5) =
si nu putem atribui
2,c(v4v6) = 2,c(v3v6) = 3,
c(v3v5).
a3.2.)c(v2 v4) = 2. Avem atunci, c(v2v5) =
1,c(v4v6) = 1, c(v6v7) = 3, c(z) = 1,c(v3v6) =
2,c(v3v5) = 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
a
ti. In construct
ia
pe care o vom face, aceste extremit
a
ti neprecizate vor identicate 2 cte 2; cu alte cuvinte, perechi de astfel de muchii vor identicate. Vom reprezenta simplicat graful H
astfel:
u
x

Dac
a graful H este subgraf ntr-un graf care
admite o 3- colorare a muchiilor, vom interpreta perechile de muchii (x, y)
si (z, t), ca
reprezentnd valorea adev
ar, dac
a snt la fel
colorate, respectiv, valoarea fals, dac
a snt
colorate diferit.
Lema 2
si aceast
a interpretare justic
a denumirea de
component
a inversoare pentru H (dac
a (x, y) este intrare n H atunci (z, t) este ie
sire
si H transform
a
adev
ar n fals
si fals n adev
ar).
300

Denim graful 2H, considernd dou


a componente inversoare H c
arora le identic
am o pereche
de muchii etichetate.
u u

Pentru orice n 2, n N, denim graful Hn


astfel: 1. H2 se obt
ine identicnd muchiile u

si u din 2H:
u u

2. n > 2 Hn se construie
ste astfel:
301

-consider
am n copii izomorfe disjuncte ale lui
2H, 2H i i = 1, n, avnd perechile de muchii
libere (xi , yi), (x i, yi ), (ui, u i).
-pentru i = 1, n1 identic
am perechile (ui, u i)

(x i+1, yi+1
).
-identic
am (un, u n) (x 1, y1 ).
x4

y
4

x1
y1

y3
x3
x2

y
2

Hn are n perechi de intrare (xi , yi) i = 1, n,


si
este construit din 2n componente H.
302

In orice 3-colorare c a lui Hn avem


a) c(x1) = c(y1) c(u1) = c(u 1) (din lema 2
si
construct
ia lui 2H), c(x 2) = c(y2 ) (din identicarea de la construct
ia lui Hn) c(x2) =
c(y2) (lema 2) c(u2) = c(u 2) . . . c(xn) =
c(yn) .
b) c(x1) = c(y1) c(x 1) = c(y1 ) (lema 2)
c(un) = c(u n)(din identicarea de la construct
ia
lui Hn ) c(xn) = c(yn)(din lema 2, prin re ) c(u
ducere la absurd) c(x n) = c(yn
n1) =
c(u n1) . . . c(x2) = c(y2).
Rezult
a de aici c
a n orice 3-colorare a muchiilor lui Hn(n 2) toate perechile de muchii
de intrare reprezint
a aceea
si valoare de adev
ar.
Pentru n = 1 se poate construi H1 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 construi n timp polinomial graful Hn avnd n perechi
de muchii de intrare, cu proprietatea c
a n
orice 3-colorare a muchiilor lui Hn, 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 intrare cele dou
a muchii snt la fel colorate).
Lem
a. 4. Fie F graful
a

d
3

1
c

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 reducere la absurd: dac
a exist
a o 3-colorare a
muchiilor lui F , astfel nct n cele 3 perechi
muchiile snt colorate diferit, atunci c(a) =
c(b), c(b) = c(c)
si c(c) = c(d) (s-a utilizat lema
2), deci c(a) = c(d) contrazicnd faptul 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 = {u1, . . . , un}
(n N), C = C1 . . . Cm (m N), Ci =
vi1 vi2 vi3 cu vij literali (vij = u sau vij = u )
reprezentnd datele unei probleme 3SAT.
Vom construi un graf 3-regulat G cu propria
si numai dac
a exist
a
etatea c
a (G) = 3 dac
t : U {adev, f als} astfel nct t(C) = adev.
Construct
ia se face n timp polinomial n raport
cu n
si m
si se poate descrie astfel:
305

1. Pentru ecare variabil


a boolean
a ui i = 1, n
se determin
a xi, num
arul aparit
iilor (negate sau
nu) ale lui ui n C
si se consider
a cte o copie
disjunct
a a grafului Hxi .
2. Pentru ecare clauz
a Cj j = 1, m se consider
a cte o copie disjunct
a Fj a grafului F .
3. Pentru j = 1, m, e Cj = vj1 vj2 vj3 .
Dac
a vji (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 Hx se identic
a cu
perechea de intrare num
arul i din componenta
Fj .
Dac
a vji este u se plaseaz
a o component
a inversoare H ntre perechea i a lui Fj
si perechea
si se identic
a
de intrare cu num
arul y din Hx ,
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. Consider
am o copie izomorf
a disjunct
a a sa
si identic
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
algoritmul de calcul al valorii de
C ntr-o atribuire t xat
a
si deci
3-colorare dac
a
si numai dac
a
isabil
a.

4 simuleaz
a
adev
ar a lui
G admite o
C este sat-

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 hamiltonian 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) Problemele urm
atoare snt polinomial echivalente:

CH :
TR :
DCH:
DTR:
BCH:

Dat G graf. Este G hamiltonian ?


Dat G graf. Este G trasabil ?
Dat G digraf. Este G hamiltonian ?
Dat G digraf. Este G trasabil ?
Dat G graf bipartit. Este G hamiltonian ?
308

Demonstrat
ie:
CH T R
Fie G un graf
si v0 V (G) un vrf xat al
s
au. Construim (n timp polinomial) un graf H
astfel nct 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)
{xv0, yz} {wy | w V (G) wv0 E(G)}.
x
vo

vo

y
z

N (vo)
G

N (vo)
G

Se observ
a c
a H este trasabil dac
a
si numai
dac
a are un drum hamiltonian D cu extremit
a
tile
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 hamilsi cealalt
a un vecin
tonian cu o extremitate v0
a
si numai dac
a G este hamilal lui v0, deci dac
tonian.
309

T R CH
Fie G un graf. Consider
a m H = G + K1 . H
este hamiltonian dac
a
si numai dac
a G are un
drum hamiltonian.

G+K1

Echivalent
a problemelor DCH
si DTR de demonstreaz
a n mod similar.
CH DCH
Fie G un graf. Fie D digraful obt
inut din G
nlocuind ecare muchie cu o pereche de arce
simetrice. Orice circuit hamiltonian n G induce un circuit hamiltonian n D
si reciproc.
310

DCH CH
Fie D = (V (D), E(D)) un digraf. Pentru orice
vrf v V (D) asociem un drum de lungime 3,
Pv cu extremit
a
tile av
si bv
Pv = ({av , cv , dv , bv }, {av cv , cv dv , dv bv }).
Pentru orice arc vw E(D) consider
am muchia
bv aw . Fie G graful cu V (G) = vV (D)V (Pv )

si E(G) = vV (D) E(Pv ) {bv aw | vw E(D)}.


Evident, G se poate construi n timp polinomial
n raport cu num
arul de vrfuri ale lui D.
v

aw

bv
w

av

b
w

bx

ax
bb
b

a
D

ba

aa

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 al lui D

si n plus lungimea circuitului C, l(C) satisface


l(C) = 3l(C )+l(C ) = 4l(C ); deci orice circuit
al lui G este de lungime 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 teorema 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 nct: 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 = {a1, a2, . . . , ak } o mult
ime de k vrfuri
distincte.
ii) Pentru orice e = uv E(G) consider
am graful G e = (Ve , Ee ) cu
si
Ve = {(w, e, i); w {u, v}, i = 1, 6}}
Ee = {(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)}.
v

(v,e,1)

(v,e,2)

(v,e,3) (v,e,4)

(v,e,5)

(v,e,6)

(u,e,1)

(u,e,2)

(u,e,3) (u,e,4)

(u,e,5)

(u,e,6)

Graful G e a fost ales astfel nct, dac


a este subgraf al unui graf hamiltonian H
si niciunul din
vrfurile (w, e, i) cu w {u, v}
si i = 2, 5 nu are
alt vecin n H dect cele din G e,
313

atunci singurele posibilit


a
ti de traversare de
c
atre un circuit hamiltonian al lui H a vrfurilor
din G e snt (a) (b)
si (c) indicate n gura
urm
atoare (orice alt
a parcurgere las
a un vrf
netraversat):
a

Deci, dac
a circuitul hamiltonian intr
a n G e
printr-un vrf de tip u, ((u, e, 1) sau (u, e, 6))
atunci, va ie
si tot printr-un vrf corespunz
ator
lui u.
314

(iii) Pentru ecare vrf u V , se consider


a,
( ntr-o ordine oarecare) toate muchiile lui G
u
u
incidente cu u: eu
1 = uv1, e2 = uv2, . . . , ep =
uvp, unde, p = dG(u).
u
Fie Eu = {(u, eu
si
i , 6)(u, ei+1 , 1); i = 1, p 1}
u
Eu = {ai(u, eu
1, 1), ai (u, ep , 6); i = 1, k}.
u

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

v
2
u
(u,e ,6)
1

ep

vp
u
(u,e ,1)
2

(u,e

u
,6)
2

u
(u,e p,1)

u
(u,e p,6)

Graful H va avea
V (H) = A eE Ve
si
E(H) = eE Ee uV (Eu Eu ).
Avem |V (H)| = k + 12 |E|; |E(H)| = 14 |E| +
2k |V0|+2 |E||V0| , unde V0 V este mult
imea
vrfurilor neizolate din G; deci H se poate construi n timp polinomial n raport cu |V |.
315

Exemplu:
a2

3
2
4

3
1

a1

k=2
2

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 circuitul C n exact k drumuri disjuncte (cu except
ia
extremit
a
tilor): Dai ai , Dai a1 , . . . , Dai ai .
1 2
2 3
k 1
Fie Dai ai
un astfel de drum (j + 1 = 1 +
j

j+1

(j(mod k)) ).
Din construct
ia lui H, rezult
a c
a primul vrf
vij
care urmeaz
a lui aij pe acest drum va (vij , e1 , 1)
vij
sau (vij , ep , 6) unde p = dG(vij )

v ij V .
316

In continuare, Dai ai
va intra n componenta
j j+1
Ge1 sau Gep din care va ie
si tot printr-un vrf
corespunz
ator lui vij . Dac
a vrful urm
ator nu
este aij+1 , se intr
a ntr-o component
a corespunz
atoare urm
atoarei muchii incidente cu vij

si va ie
si din aceasta, tot printr-un vrf corespunz
ator lui vij .
a2

3
2
4

1
2

3
4

3
1

a1

317

Rezult
a c
a drumului Dai ai
i se poate
j j+1
asocia n mod unic vrful vij V
si c
a prima
si
ultima muchie a
vij

vij
acestui drum snt aij (vij , et , x),
cu t = 1
si t = dG(u), x = 1,
dG(u), t = 1, x = 6, x = 1.

aij+1 (vij , et , x )
x = 6 sau t =
Aceasta implic
a faptul c
a vij snt distincte.

Fie V = {vi1 , vi2 , . . . , vik }. Cum C este hamiltonian n H, rezult


a c
a e E exist
a un drum
Dai ai
care trece prin G e deci exist
a v V
j

j+1

incident cu e. Rezult
a c
a S = V V este stabil
a n G
si |S| = j. Deci am obt
inut c
a dac
aH
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 S0 stabil
a cu |S0| j. Exist
a
atunci S S0 stabil
a cu |S| = j.
318

Fie V = V S = {v1, v2, . . . , vk }. Consider


am
n H pentru ecare muchie e = uv E:

- cele dou
a drumuri din G e situat
ia (a), dac
a
u, v V ,

ia (b) dac
a u V , v
/ V
- drumul din G e situat

- drumul din G e situat


ia (c) dac
au
/ V , v V .

Dac
a la reuniunea acestor drumuri ad
aug
am
muchiile
v
ai(vi, e1i , 1),
v
v
vi
v
(vi, e1i , 6)(vi, e2i , 1), . . . , (vi, ep1
, 6)(vi, epi , 1),
v
(vi, epi , 6)ai+1, (cu p = dG(vi)) 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 pondere d : E R+ , s
a se determine un circuit
hamiltonian H0 n G astfel nct suma ponderilor muchiilor lui H0 s
a fie minim
a.
Dac
a graful G reprezint
a ret
eaua rutier
a ntre
o mult
ime V de localit
a
ti, iar funct
ia d avnd
interpretarea d(uv) = distant
a pe ruta direct
a
dintre localit
a
tile u
si v,
si se xeaz
a un centru v0 V , atunci circuitul hamiltonian H0
reprezint
a cel mai economic mod de vizitare
a localit
a
tilor din V de c
atre un comis voiajor
ce pleac
a din centrul v0
si se ntoarce n acela
si
loc, dup
a ce a vizitat ecare localitate exact o
dat
a.
Problema este interesant
a, nu pentru rezolvarea acestei
aplicat
ii, mai mult sau mai putin important
a, ci pentru
c
a ea apare n numeroase probleme de optimizare discret
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
si d : E(Kn) R+,
CV Dat n Z+ (n 3)
s
a se determine H0 circuit hamiltonian n graful complet Kn cu d(H0) minim printre toate
circuitele hamiltoniene ale lui Kn.
Observat
ii 10. d(H0) =


eE(H0 ) d(e).

a graful pentru care se cere rezolvarea


20. Dac
nu este complet, se introduc muchiile lips
a,
atribuindu-le drept ponderi, M R+ cu M >
|V | maxeE d(e).
Not
am aici, c
a n enunt
ul problemei ne-am limitat numai la cazul simetric, o problem
a similar
a se poate considera
si pentru G digraf oarecare.
30. In studiul complexitat
ii acestei probleme
vom considera c
a d(e) Z+ .
321

Problema de decizie asociata va

DCV
Instant

a: n Z+

(n 3), d : E(Kn) Z+
si B Z+

Intrebare: Exist
a H0 circuit hamiltonian n Kn
astfel nct d(H0 ) B ?

Teorem
a. 6. CH DCV .
Demonstrat
ie: Fie G = (V, E), (|V | = n)
reprezentnd datele unei probleme CH. Construim n timp polinomial o problem
a DCV cu
proprietatea c
a n Kn exist
a un circuit hamiltonian de pondere total
a care nu dep
a
se
ste B
dac
a
si numai dac
a G este hamiltonian.
Fie
d(vw) =

1
2

dac
a vw E(G)
dac
a vw E(G).

si consider
am B = n.
322

Atunci n Kn exist
a un circuit hamiltonian de
pondere n dac
a
si numai dac
a G are un circuit hamiltonian.

pondere 1
pondere 2

Rezult
a, de aici, dicultatea rezolv
arii problemei CV.

323

O solut
ie pentru abordarea problemei CV, ar
aceea de a considera algoritmi A, care pentru
datele unei probleme CV vor oferi n timp polinomial (n raport cu n) un circuit hamiltonian
ia optim
a H0.
HA, care va aproxima solut
M
asuri ale ecient
ei unei astfel de euristici
A pot considerate numerele:
RA(n) =

sup

d:E(Kn)R+
d(H0 ) =0

d(HA )
d(H0)

RA = sup RA(n).
n3

Evident, s-ar dori ca aceste numere s


a e nite.
In cazul general, condit
a e nit este
ia ca RA s
la fel de dicil
a cu aceea a rezolv
arii eciente
exact a problemei CV. In adev
ar, are loc
Teorem
a. 8. Dac
a exist
a un algoritm aproximativ A cu timp de lucru polinomial pentru
CV, astfel nct RA < , atunci CH se poate
rezolva n timp polinomial.
324

Demonstrat
ie: Fie A un algoritm cu timp de
a deci
lucru polinomial
si cu RA < . Exist
k Z+ astfel nct RA k.
Fie G = (V, E) un graf arbitrar, intrare pentru
CH. Dac
a n = |V | atunci denim d : E(Kn)
Z+ prin
d(uv) =

kn

dac
a uv E
dac
a uv
/E

Evident, G este hamiltonian dac


a
si numai dac
a
solut
ia optim
a H0 a lui CV astfel construit satisface d(H0 ) = n.
Aplic
am A pentru rezolvarea problemei CV. Se
obt
ine n timp polinomial o solut
ie HA.
si HA =
Dac
a d(HA ) kn, atunci d(HA ) = n
H0.
Dac
a d(HA) > kn, atunci d(H0 ) > n. In adev
ar,
d(HA )
presupunnd c
a d(H0) = n, avem d(H ) k,
0
ie.
deci d(HA ) kd(H0 ) = kn, contradict
325

Rezult
a c
a G este hamiltonian dac
a
si numai
si cum timpul de lucru al
dac
a d(HA ) kn,
lui A este polinomial, rezult
a c
a CH se poate
rezolva n timp polinomial.

pondere 1
pondere 7k

Observat
ie. Enunt
ul teoremei se poate formula echivalent
si astfel:
a un algoritm
Dac
a P = NP, atunci nu exist
aproximativ A polinomial
si cu RA < .
326

VII. Abord
ari ale unor probleme
NP-dicile pe grafuri.
1. Euristici
Se proiecteaz
a algoritmi ecient
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 procese din natur
a). Pentru unele euristici se precizeaz
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 uniformly over all possible objective functions f :
XY
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,
v1, v2, . . . , vn, parcurgem aceast
a list
a, color
and
a, adic
a
fiecare v
arf vi cu prima culoare disponibil
cu cea mai mic
a culoare (num
ar ntreg pozitiv)
nefolosit
a de nici unul dintre vecinii lui vi , 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 ecare 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; S1 {1 };

for i 2 to n do

j 0;
repeat

j j + 1;

determin
a primul v
arf (conform ordon
arii

), v din Sj a. . i v E(G);

if v exist
a then
f irst(i, j) v

else

f irst(i, j) 0;

c(i) j;

Sj Sj {i};
}

until f irst(i, j) = 0 or j = (G, );

if f irst(i, j) = 0 then

c(i) j + 1;

Sj+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 graful G este obt
inut din graful bipartit complet
Kn,n, av
and mult
imea de v
arfuri {1, 2, . . . , n}
{1 , 2 , . . . , n }, din care se elimin
a muchiile
11 , 22 , . . . , nn .
Fix
and ordinea 1, 1 , 2, 2 , . . . , n, n algoritmul va
obt
ine colorarea c cu c(1) = c(1 ) = 1, c(2) =
c(2 ) = 2, . . . , c(n) = c(n ) = n av
and deci n
culori; ns
a, cum G este bipartit, (G) = 2.
330

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 S1, S2, . . . , S(G) sunt clasele
de colorare corespunz
atoare unei color
ari optimale, atunci pentru orice permutare care
p
astreaz
a ordinea claselor (adic
a dac
a i < j,
v Si
si w Sj atunci v se a
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 f irst(v, j) <
f irst(w, j) (n ordonarea ) avem c
a vf irst(w, j)
E atunci (G, ) = (G).
Condit
ia din enunt
poate vericat
a n timp
liniar n raport cu num
arul de muchii ale grafului
si poate reprezenta un ultim pas al algoritmului.

first (j ,v)

v
w

first (j ,w)

Sj

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 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 ecare dat
a v
arful cu un num
ar maxim de
constr
angeri privitoare la culorile disponibile acestuia.
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, denim gradul de saturat
ie al
unui v
arf v, notat dsat(v), ca ind 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
6

Numarul de culori
gasite este chiar numarul
cromatic

Teorem
a. 2. Algoritmul DSatur garanteaz
a
g
asirea num
arului cromatic pentru grafurile bipartite.
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 construct
ie (tour-construction heuristic), de exemplu greedy;
- se ncearc
a repetat imbun
at
a
tiri 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 modic
ari locale sunt a
sa
numitele 2-opt, 3-opt sau combinat
ii ale acestora care au condus la faimosul algoritm LinKernighan.
Figura urm
atoare sugereaz
a cele dou
a operat
ii
2-opt
si 3-opt.
335

2-opt

b
doua operatii 3-opt posibile

Pentru reprezentarea circuitului hamiltonian se utilizeaz


a
structura de date Tour care trebuie s
a suporte (ecient)
urm
atoarele 4 operat
ii:
N ext(a) : ntoarece v
arful urm
ator lui a pe circuit;
P rev(a) : ntoarece v
arful dinaintea lui a pe circuit;
Between(a, b, c) : ntoarce true dac
a la traversarea circuitului din a se nt
alne
ste mai nt
ai b
si apoi c;
F lip(a, b, c, d) : Parametrii veric
a a = N ext(b)
si d =
N ext(c). Se actualizeaz
a circuitul prin nlocuirea
muchiilor ab
si cd cu bc
si ad. Se actualizeaz
a orientarea circuitului (pointerii N ext
si P rev) n mod
corespunz
ator.
336

Operat
ia 3-opt se realizeaz
a cu ajutorul a dou
a
sau trei F lip. Pentru evitarea form
arii de circuite disjuncte este nevoie de funct
ia Between.
Operat
ia mai complicat
a -opt, utilizat
a de algoritmul Lin-Kernighan se exprim
a ca un 3-opt

si o secvent

a de 2-opt.
Principala problem
a n implementarea operat
iei
F lip este de a determina ecient
sirul de schimb
ari ale pointerilor N ext
si P rev (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 -optimal pentru orice , 2 .
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 urmare, cele mai folosite valori sunt {2, 3}
(dar se cunosc
si abord
ari cu = 4, 5).
E dicil s
a se estimeze ce valoare a lui trebuie aleas
a pentru ca s
a se obt
in
a cel mai bun
compromis ntre timpul de execut
ie
si calitatea
solut
iei modicate.

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 ecare iterat
ie se ncearc
a valori cresc
atoare
pentru pentru a obt
ine un tur mai scurt.
338

Fie T turul curent. La ecare iterat


ie a algoritmului se caut
a mult
imile de muchii X =
{x1, . . . , xr }
si Y = {y1, . . . , yr } 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
si yi la Y .
sunt vide
si n pasul i se adaug
a xi la X
Criteriile de selectare ale acestor muchii, urm
aresc ecient
a
algoritmului
sin acela
si timp mbun
at
a
tirea turului curent:

-Criteriul de schimb secvent


ial: xi
si yi sunt
si yi+1. Dac
a t1 este
adiacente
si la fel xi+1
una din extremit
a
tile lui x1, atunci xi = t2i1t2i ,
yi = t2i t2i+1
si xi+1 = t2i+1t2i+2 .
x i+1

t2i+1

t 2i+2
y

i+1

y
i

x
t 2i

t 2i-1

Deci x1 , y1 , x2 , y2, x3 , . . . , xr , yr formeaz


a muchiile unui drum.
Pentru schimbul secvent
ial se impune
si ca acest drum
s
a e nchis : yr = t2r t1.
339

-Criteriul de admisibilitate: se va alege xi =


a t2i se va uni cu t1, congut2i1t2i astfel ca dac
rat
ia care rezult
a s
a e tur. Se aplic
a pentru
i3
si garanteaz
a c
a este posibil s
a nchidem
un tur. Este introdus n algoritm pentru reducerea timpului de execut
ie
si simplicarea implement
arii.

-Criteriul c
a
stigului: se cere ca yi s
a e ales
astfel ca s
a existe un c
astig; Gi trebuie s
a e
a
stigul
pozitiv; dac
a gi = d(xi ) d(yi) este c
interschimb
arii lui xi cu yi, atunci Gi = g1+g2+
iunea alegerii acestui criteriu este
+ gi. Rat
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
a
tii: se impune ca mult
imile
X
si Y s
a e disjuncte. Aceasta simplic
a implementarea, reduce timpul de execut
ie
si d
a
un criteriu efectiv de oprire.
340

Linia algoritmului Lin & Kernighan


1.
2.
3.
4.
5.
6.

7.

8.
9.
10
11
12
13

Genereaz
a (random) un tur init
ial T ;
i 1; Alege t1;
Alege y1 = t1t2 T ;
Alege y1 = t2t3 T a.. G1 > 0; If goto 12;
i + +;
Alege xi = t2i1 t2i T a..
(a) dac
a t2i e unit cu t1 se obt
ine un tur T
si
(b) xi = ys pentru tot
i s < i

If T e mai bun ca T then e T = T
si goto 2;
Alege yi = t2it2i+1 T a..
(a) Gi > 0,
(b) yi = xs pentru tot
i s < i
si
(c) xi+1 exist
a.
If yi exist
a then goto 5;
If mai alte alegeri pt. y2 then i 2
si goto 7;
If mai alte alegeri pt. x2 then i 2
si goto 6;
If mai alte alegeri pt. y1 then i 1
si goto 4;
If mai alte alegeri pt. x1 then i 1
si goto 3;
If mai alte alegeri pt. t1 then goto 2;
Stop (sau goto 1).

341

I n descrierea anterioar
a alege nseamn
a selectarea unei alternative nencercate deja (pentru turul curent). De exemplu n pasul 3 avem
dou
a posibilit
a
ti de a alege o muchie de pe tur
incident
a cu t1.
I n pasul 6 exist
a dou
a alegeri pentru xi. Pentru un yi1 (i 2) numai una dintre acestea va
face posibil
a nchiderea turului (prin ad
augarea
lui yi). 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:

t4

x2
3

y
2
y
1

x1

t 1

t2

Dac
a y2 va ales astfel ca t5 s
a e ntre t2
si
atorul pas.
t3, turul va putea nchis n urm
342

x
t

t4

3
y
2
y
1

t5
3
x1

t1

t2

Atunci, t6 poate ales n ambele p


art
i ale lui
t5.
Dac
a ns
a, y2 va ales astfel ca t5 s
a e ntre
si t1, atunci exist
a doar o singur
a alegere
t4
si t5)
si t7 trebuie s
a se
pentru t6 (ntre t4
si t3. Dar atunci t8 trebuie s
a
ae ntre t2
e de cealalt
a parte a lui t7; algoritmul alege
a.
alternativa cu d(t7 t8) maxim
t

t4

x2
3

t6
y
t
x

y
1

t5

4
x1

t1

t2

343

Pa
sii 8-12 ai algoritmului cauzeaz
a backtrackingul. El este permis numai dac
a nu se obt
ine o
mbun
at
a
tire
si numai la nivelele 1
si 2.
Algoritmul se termin
a cu un tur dup
a ce toate
valorile posibile ale lui t1 au fost examinate f
ar
a
mbun
at
a
tire.
Numeroase alte modic
ari ale metodei de baz
a
au fost examinate. De exemplu, Lin
si Kernighan
limiteaz
a c
autarea lui yi = t2i t2i+1 la vecinii de

a cel mult 5.
pe tur ai lui t2i la distant
Unele reguli au fost alese pentru salvarea timpului 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 Local Optimization David S. Johnson Lyle A.
McGeoch, Local Search in Combinatorial Optimization, 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 demonstrat c
a nu se poate spera la o euristic
a polinomial
a A cu RA nit
a, dac
a P = NP, n acest
caz se poate demonstra urm
atoarea
Teorem
a. ( Christofides,1973) Fie CV cu d
satisf
acnd
v, w, u V (Kn )distincte d(vw) d(vu)+d(uw).
Exist
a un algoritm aproximativ A pentru CV
care satisface RA = 3
si are timp de lucru poli2
nomial.
Demonstrat
ie:
Consider
am urm
atorul algoritm A:
345

10. Se determin
a T 0 mult
imea muchiilor unui
arbore part
ial de cost minim n K n (costul
muchiei e ind d(e) ). Problema se rezolv
a
n timp polinomial cu algoritmul lui Prim.
20. Se determin
a M 0 un cuplaj perfect n subgraful indus de vrfurile de grad impar ale
arborelui T 0
si de cost minim. Problema se
rezolv
a n timpul O(n3) utiliznd algoritmul
lui Edmonds.
30. Se consider
a multigraful obt
inut din <
T 0 M 0 >Kn , prin duplicarea muchiilor din
a un parT 0 M 0. In acest multigraf exist
curs Eulerian nchis, ale c
arui vrfuri snt
ie mul(vi1 , vi2 , . . . , vi1 ). Eliminnd orice aparit
tipl
a a unui vrf n acest
sir cu except
ia
primului
si ultimului vrf, se obt
in vrfurile
unui circuit hamiltonian HA n Kn cu muchiile HA = (vj1 vj2 , vj2 vj3 , . . . , vjn vj1 ) (Acest pas
ii).
necesit
a O(n2) operat
346

Arborele T o

o
Cuplajul M
5
9

11

6
1
4
10
Graf Eulerian

2
Turul H
A

347

HA este solut
ia aproximativ
a a problemei CV.
Fie m = n
si H0 solut
ia optim
a. Vom ar
ata
2!
(cf. Cornuejols
si Nemhauser) c
a
n 3

3m 1
d(HA )
d(H0)
2m

Presupunem c
a H0 = {v1v2, v2v3, . . . , vnv1} (eventual, schimbnd numerotarea vrfurilor). Fie
A = {vi1 , vi2 , . . . , vi2k } vrfurile de grad impar
ale lui < T 0 >Kn, i1 < i2 < . . . < i2k .
Dac
a H = {vi1 vi2 , vi2 vi3 , . . . , vi2k1 vi2k , vi2k vi1 },
avem din inegalitatea triunghiular
a, d(H) d(H0),
prin nlocuirea ponderii ec
arei corzi d(vij vij+1 )
cu suma ponderilor muchiilor de pe circuitul H0
subntinse de vij vij+1 .
Pe de alt
a parte, H este circuit de lungime
par
a, deci este reuniunea a dou
a cuplaje perfecte n [A]Kn , M 1 M 2.
Presupunem c
a d(M 1) d(M 2).
348

o
H
M
1

M2

H2

H1

349

Din alegerea lui M 0, 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 nct d(M 0) = d(H0).
Evident, 0 < 1
2.
Partit
ion
am H0 n H 1 H 2, punnd n H i toate
muchiile lui H0 subntinse de o coard
a din M i
(vij vij+1 M i vij vij +1, . . . , vij+11vij+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) =
a c
a exist
a e H 1 : d(e)
d(H0 ), rezult

d(H0 ).
m

Fie T arborele part


ial obt
inut din H0 prin nl
atu-rarea
unei muchii de pondere maxim
a. Avem
d(T ) = d(H0 ) maxeH0 d(e) d(H0 )

d(H0 ).
m

ial de cost minim n Kn , rezult


a
Cum T 0 este arbore part
d(T 0 ) d(H0 )(1

).
m

Folosind inegalitatea triunghiular


a,
d(HA ) d(T 0 ) + d(M 0) d(H0 )(1
(1 +
Cum

(m1)
)d(H0 ).
m
12 se obt
ine

d(HA )

)
m

3m1
d(H0 )
2m

+ d(H0 ) =

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 zice ale lumii reale.
Metaeuristica simulated annealing.
Una din metaeuristicile populare utilizate pentru rezolvarea problemelor de optimizare NPdicile 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 algoritmului cu diferit
i parametri de start ofer
a

sansa imbun
at
a
tirii 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
er
ariile cu forj
a , baros
si nicoval
a ) ca un proces stohastic ce determin
a o aranjare a atomilor 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. Temperatura este scazut
a lent pentru a mentine echilibrul
termal.

C
and atomii sunt n echilibru la temperatura

T , probabilitatea ca energia lor total


a s
a e E este
proport
ional
a cu e kT , unde k este constanta lui BolzE

mann.

352

In consecint

a, probabilitatea ca energia s
a e
E + dE poate exprimat
a,
dE

P r(E + dE) = P r(E) e 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
congurat
ii care minimizeaz
a energia unui sistem. Atunci cnd se dore
ste minimizarea unei
funct
ii f : D R, vom interpreta domeniul
de denit
ie al funct
iei, D, ca ind mult
imea
congurat
iilor posibile ale sistemului, iar funct
ia
f ca ind energia acestuia.

O variabil
a ctiv
a T , asociat
a procesului de
c
autare, va juca rolul temperaturii iar constanta
lui Bolzmann va considerat
a 1.
353

Algoritm de c
alire simulat
a
1. Se consider
a un plan de c
alire:
- temperatura init
ial
a Tstart
- congurat
ia init
ial
a xstart D
- temperatura nal
a Tmin
- o funct
ie de reducere lent
a a temperaturii
decrease (T)
- nr. maxim de ncerc
ari de mbun
at
a
tire a solut
iei
la ecare prag de temperatur
a attempts
- nr. maxim de schimb
ari ale solut
iei
la ecare prag de temperatur
a changes.
2. T Tstart; xold xstart
while T > Tmin do
{ na 0; nc 0
while na < attempts and nc < changes do
{ genereaz
a o solut
ie nou
a xnew ; na + +;
E f (xold ) f (xnew );
If E < 0 then { xold xnew ; nc + +}
else
{ genereaz
a q (0, 1) un nr. aleator
E
if q < e T then { xold xnew ; nc + +}
}
}
decrease(T )
}
3. return xold

354

Planul de c
alire se stabile
ste adeseori prin experimente (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 e 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 Tstart = O( n), attempts = 100n,


changes = 10n, decrease(T ) = 0.95T
si Tmin =
O(1).

355

VIII. GRAFURI PLANARE


1. Propriet
a
ti de baz
a ale grafurilor planare
Definit
ie. Fie G = (V, E) un graf
si S o suprafat

a
n R3. Spunem c
a G este reprezentabil pe S
dac
a exist
a G = (V , E ) un graf astfel nct:
G .
a) G =
ime de puncte distincte din S.
b) V e o mult
a simpl
a
c) Orice muchie e E este o curb
cont
inut
a n S care une
ste cele dou
a extremit
a
ti.
d) Orice punct al lui S este sau vrf al lui G ,
sau prin el trece cel mult o muchie a lui G .
G se nume
ste reprezentare a lui G n S.

Dac
a S este un plan atunci G se nume
ste planar iar G o reprezentare planar
a a lui G.
Dac
a S este un plan
si G este un graf care
satisface b) c)
si d) de mai sus atunci G 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 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.
Denim : S considernd pentru orice
punct M al planului , (M ) cel de-al doilea
punct de intersect
ie al dreptei M y cu sfera S.
Evident este o biject
ie
si deci (G ) este
reprezentarea lui G pe sfer
a ( este proiect
ia
stereografic
a).
y
S

pi
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 construie
ste un plan tangent sferei S n punctul
x
si se dene
ste : S considernd pentru orice punct M al sferei, (M ) intersect
ia
dreptei yM cu planul . Imaginea prin a
reprezent
arii lui G pe sfer
a va o reprezentare
planar
a a lui G.

Definit
ie. Fie G un graf plan. Dac
a ndep
art
am
punctele lui G (vrfurile
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 nit 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 a
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
denit
ie se impune ca graful sa e 2-conex;
atunci fet
ele h
art
ii planare se numesc
t
ari
si
dou
a
t
ari snt vecine dac
a frontierele lor au
m
acar o muchie comun
a; aceasta corespunde
aspectelor intuitive de la h
art
ile geograce).
Unui graf planar i se pot asocia reprezent
ari
planare diferite. In gura al
aturat
a snt desenate trei reprezent
ari planare diferite ale aceluia
si
graf:
359

2
6

f4

5
f4

f1
f3
f5

8
3

2
f5

2
f4

f2

f3
f1

f1
3 f2

5
4

f5

f3
7

3
f2

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 nct o fat

a specificat
a a sa s
a
devin
a fat
a exterioar
a.
Demonstrat
ie: Fie G o reprezentare planar
a a lui G
si F
am G0 o reprezentare pe sfer
a
o fat

a a lui G . Consider
a lui G (construit
a, de exemplu, ca n lema 1)
si e
a corespunz
atoare a lui F (proiect
ia stereograc
a
F 0 fat
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 stereograc
a
pe planul tangent sferei n punctul x.

Graful plan

inut va avea fat


a exterioar
a (F 0) care are
G astfel obt
aceea
si frontier
a cu fat
a F din reprezentarea G .
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 vrfuri, m muchii

si f fet
e. Atunci

f =mn+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
arat
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 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. Consider
am G1 = G e. Din alegerea lui e, G1
este conex. Evident G1 este graf plan.
361

Num
arul fet
elor lui G1 este f1 = f 1 (cele
a
dou
a fet
e ale lui G vor genera n G1 o singur
fat

a); n plus G1 are n1 = n vrfuri


si m1 = m1
muchii.
Pentru G1 are loc ipoteza inductiv
a, deci f1 =
m1 n1 + 2.
Substituind valorile lui f1, m1
si n1 se obt
ine
f 1 = (m 1) n + 2, adic
a f = m n + 2.
arui poliedru convex din
Observat
ii: 10 Oric
R3 i se poate asocia un graf planar cu acela
si
num
ar de vrfuri
si muchii (se reprezinta vrfurile

si muchiile poliedrului pe o sfer


a
si se execut
a
proiect
ia stereograc
a).

Figura urm
atoare cont
ine grafurile planare asociate poliedrelor platonice:

362

Tetraedrul

Dodecaedrul

Hexaedrul
(Cubul)

Octoedrul

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 poliedral
a a lui Euler
si precizeaz
a num
arul fet
elor
poliedrului convex n funct
ie de num
arul vrfurilor

si muchiilor sale.

363

20. 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 vrfuri. 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) vrfuri
si m > 2 muchii. Atunci
m 3n 6.

Demonstrat
ie. Fie G o reprezentare planara
a lui G. Dac
a G are o singur
a fat

a, atunci G
este arbore, m = n1 (G are acela
si num
ar de
vrfuri
si muchii ca
si G),
si pentru n 3 inegalitatea are loc. Daca G are m
acar dou
a fet
e,
atunci ecare fat

a F are n frontier
a muchiile
unui circuit C(F ),
si ecare 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 (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 vrfuri,
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 ind bipartit, num
arul muchiilor oric
arui circuit este par.
Corolar. 3. Dac
a G este un graf planar conex,
atunci G are un vrf de grad cel mult 5.
365

Demonstrat
ie: Dac
a G are mai mult de 2 muchii
aplic
am consecint
a 1 astfel: e G o reprezentare
planar
a a lui G cu n vrfuri
si m muchii; not
am
cu ni num
arul vrfurilor de grad i (1 i
n 1) din G ; atunci
n1

i
n
=
2m

2(3n

6)
=
6(
i
i ni ) 12,
i=1
deci

(i 6)ni

+ 12 0

Cum pentru i 6 tot


i termenii sumei snt
nenegativi, rezult
a c
a exist
a i0, 1 i0 5,
astfel nct ni0 > 0, ceea ce trebuia demonstrat.
Observat
ie: Grafurile K5
si K33 nu snt 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
si vw1, vw2 E, w1 = w2.
nct dG(v) = 2
Consider
am h(G) = (V \ {v}, E \ {vw1, vw2}
{w1w2}). Se observ
a c
a G este planar dac
a
si
numai dac
a h(G) este planar.
(Dac
a w1 w2
/ E(G) atunci pe curba simpl
a ce
si w2 ntr-o reprezentare planar
a a lui
une
ste w1
h(G) se introduce un nou vrf v; dac
a w 1 w2
E(G), n una din fet
ele reprezent
arii planare a
lui h(G) se plaseaz
a sucient de aproape de
curba w1w2 un vrf nou v
si se une
ste cu
w1
si w2. Reciproc, n reprezentarea planar
a
a lui G
stergem punctul v
si cele dou
a muchii
vw1
si vw2 le nlocuim cu reuniunea lor. Dac
a
w1w2 E(G) atunci se
sterge
si curba w1w2).
inut din G aplicnduVom nota cu h(G) graful obt
i repetat transformarea h, pn
a cnd graful curent
nu mai are vrfuri de grad 2. Din observat
ia anterioar
a rezult
a c
a G este planar, dac
a
si numai
dac
a h(G) este planar.
367

Definit
ie. Dou
a grafuri G1
si G2 se numesc
h(G ).
homeomorfe dac
a
si numai dac
a h(G1) =
2
Teorem
a. 2. (Kuratowski 1930) Un graf este
planar dac
a
si numai dac
a nu are subgrafuri
homeomorfe cu K5 sau K33.
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 al lui G
homeomorf cu K33 sau K5, cum aceste dou
a
grafuri am ar
atat c
a nu snt planare
si cum
h(G ) este planar dac
a
si numai dac
a G este
planar rezult
a c
a G
si deci G nu este planar,
contrazicnd 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 vrfurile, cu
linii poligonale, astfel nct 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 rezultate referitoare la desenarea grafurilor planare.
Pentru un mediu grac, care permite pozit
ionarea
n puncte de coordonate ntregi
si trasarea de
segmente ce unesc aceste puncte, este desigur
important s
a se demonstreze existent
a unei
reprezent
ari Fary cu vrfuri n puncte de coordonate ntregi,
si n acela
si timp aria suprafet
ei
ocupate de reprezentare s
a e polinomial
a n
raport cu num
arul n de vrfuri ale grafului.
369

Descriem unul dintre rezultatele de acest tip:


Teorem
a. 3. (Fraysseix, Pach, Pollack (1988))
Orice graf planar cu n vrfuri are o reprezentare
planar
a cu vrfuri 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
baza unui algoritm de complexitate O(n log n)
pentru obt
inerea acestei reprezent
ari.
Lem
a. 3. Fie G un graf planar
si G o reprezentare planar
a a sa. Dac
a C este un circuit al
lui G ce trece prin muchia uv E(G ) atunci
exist
a w V (C ) astfel nct w = u, v
si w nu
este extremitatea nici unei corzi interioare a lui
C .

370

Demonstrat
ie: Fie v1, v2, ..., vn vrfurile circuitului C ntr-o parcurgere a sa de la u la v
a C nu are corzi inte(v1 = u, vn = v). Dac
rioare lema este demonstrat
a. Altfel, alegem
perechea (i, j) astfel nct vivj este coard
a interioar
a a lui C
si
ji = min{kl | k > l+1, vk vl E(G ), vk vl coard
a interioar
a }.

Atunci vi+1 nu e incident cu nici o coard


a interioar
a (vi+1vp cu i + 1 < p < j nu e coard
a
interioar
a c
aci s-ar contrazice alegerea perechii
(ij)
si vi+1vl cu l < i sau l > j, nu este coard
a
interioar
a datorit
a existent
ei coardei vivj
si a
planarit
a
tii).
vi+1
v
i
vj

v =u
1

v = v
n

371

Vom demonstra teorema 4 n ipoteza suplimentar


a c
a G este maximal planar :
orice
muchie i s-ar ad
auga se obt
ine un graf neplanar (sau multigraf).
S
a observ
am c
a orice fat

a a unui graf maximal


planar este un C3 (altminteri n reprezentarea
lui G cu fat
a exterioar
a m
arginit
a de un Cn 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 aplicnd
de exemplu algoritmul de testare a planarit
a
tii)
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 ctive
introduse nu se vor trasa.
Lem
a. 4. Fie G maximal planar cu n 4
vrfuri
si G o reprezentare planar
a a sa cu
fat
a exterioar
a u, v, w. Exist
a o etichetare a
vrfurilor lui G : v1, v2, ..., vn astfel nct v1 =
u, v2 = v, vn = w
si pentru orice k, 4 k n
avem:
372

( i) subgraful G k1 = [{v1, . . . , vk1}]G , este


2-conex
si fat
a sa exterioar
a este determinat
a

ce cont
ine uv.
de circuitul Ck1
a ex(ii) n subgraful G k , vrful vk este n fat
terioar
a a lui G k1
si NG (vk ) {v1, . . . , vk1}
k
este un drum de lungime 1 de pe circuitul

\ uv.
Ck1
Demonstrat
ie: Fie v1 = u, v2 = v, vn = w, G n =
a observ
am c
a NG n (vn) este
G, G n1 = Gvn. S
un circuit ce cont
ine uv (este sucient, pentru a demonstra aceasta s
a ordon
am NG (w)
dup
a abscisele vrfurilor
si s
a folosim planaritatea maximal
a).
vn =w

vk
Ck - 1
v =u
1

v =v
2

Rezult
a c
a pentru k = n (i)
si (ii) au loc.
373

Dac
a vk a fost ales (k n) atunci n G k1 =
a un cirG {vn, . . . , vk } vecinii lui vk determin

cuit Ck1
ce cont
ine uv
si m
argine
ste fat
a exa c
a
terioar
a a lui G k1. Din lema 3, rezult

exist
a vk1 pe Ck1
astfel nct vk1 nu este

.
incident cu o coard
a interioar
a a lui Ck1
Din construct
ie, rezult
a c
a vk1 nu este in

si cu
cident nici cu corzi exterioare lui Ck1
aceast
a alegere, se observ
a c
a G k2 va cont
ine

cu propriet
a
tile (i)
si (ii).
un circuit Ck2
Not
am c
a etichetarea precizat
a n lema 4 se
poate construi n O(n) considernd o reprezentare
a lui G cu liste de adiacent

a ordonate circular,
prin xarea vrfurilor v1, v2
si vn
si apoi considernd pentru ecare k k 3 un vrf vk cu
si
proprietatea c
a arcele cu o extremitate vk
cealalt
a n {v1, . . . , vk1} formeaz
a un segment
a
continuu n lista circular
a a lui A(vk ) (existent
unui asemenea vrf ind asigurat
a de lema 4 ).
374

Demonstrat
ia teoremei 4. A
sa cum am mai
observat, se poate presupune G maximal planar cu n( 4) vrfuri. Fie G o reprezentare
planar
a a lui G, cu vrfurile v1, v2, . . . , vn, fat
a
exterioar
a u, v, w
si etichetarea vrfurilor satisface condit
iile din lema 4.
Vom construi o reprezentare Fary a lui G cu
vrfurile puncte de coordonate ntregi.
In pasul k( 3) al construct
iei dispunem de o
astfel de reprezentare a lui Gk ,
si n plus snt
satisf
acute condit
iile:
(1) v1 are coordonatele xv1 = 0
si yv1 = 0; v2
are coordonatele xv2 = i 2k 4, yv2 = 0;
(2) Dac
a w1, w2, . . . , wm snt vrfurile circuitului ce m
argine
ste fat
a exterioar
a a lui Gk n ordinea parcurgerii lor de la v1 la v2(w1 = v1, wm =
v2) atunci
x w1 < x w2 < . . . < x wm .
375

(3) Muchiile w1w2, w2w3, . . . , wm1wm snt segmente 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 wi se
duce o paralel
a la prima bisectoare
si prin wj
o paralel
a la a doua bisectoare,intersect
ia lor
este un punct de coordonate ntregi.
Construim G k+1. Fie wp, wp+1, . . . , wq vecinii
lui vk+1 n G k+1 (cf. lemei 4) 1 p < q m.

w
wp
w
3

wq-1

p+1
w
p+2

wq-2

wq

w
2
w = v1 =u
1

w = v2=v
m

376

Paralela prin wp la prima bisectoare intersecteaz


a
paralela prin wq la a doua bisectoare, ntr-un
punct P . Dac
a din punctul P se pot trasa
segmentele P wi p i q astfel nct ele s
a
si
e distincte, atunci putem lua vk+1 = P
obt
inem reprezentarea Fary pentru Gk+1 cu
vrfuri de coordonate ntregi, satisf
acnd condit
iile
(1) (2)
si (3).
Dac
a segmentul
wpwp+1
este paralel cu
prima bisectoare, atunci transl
am cu o unitate
la dreapta toate vrfurile grafului Gk , care au
abscisa xwp+1 . Efectu
am apoi o translat
ie
cu o unitate la dreapta a tuturor vrfurilor cu
a observ
am c
a acum toate
abscisa xwq . S
segmentele P wi cu p i q snt distincte, segmentele wiwi+1 cu i = q, m 1 au pantele 1
si
si P wq (unde P este puncde asemenea wpP
tul obt
inut prin intersect
ia paralelelor la prima
si
(respectiv a doua) bisectoare, duse prin wp
wq ). Lu
am vk+1 = P
si pasul k al construct
iei
este terminat.
377

Condit
iile (1)- (3) snt evident satisf
acute. Cu
aceasta teorema este demonstrat
a.
S
a observ
am c
a determinarea vrfurilor care se
vor transla n pasul k, poate organizat
a astfel nct s
a nu necesite n total O(n2) operat
ii
ci numai O(n log n), utiliznd structuri convenabile de date.

3. Grafuri plane - versiunea combinatorial


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
ime
triplet G = (E, , ), unde E este o mult
ie pe E (perde cardinal par, este o involut
mutare de ordin 2) f
ar
a puncte xe,
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 denim
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 nal
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 denit
a de

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

mut
arii .
Intuitiv, pentru a calcula (e), invers
am e pentru a
obt
ine e
si apoi ne rotim (n sensul acelor de ceasorarul fet
elor
nic) n jurul extremit
a
tii init
iale a lui e. Num
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 = 12 |E| muchii (neorientate), n = |V |
v
arfuri, f fet
e,
si c componente conexe. Caracteristica
Euler a lui G se dene
ste ca ind
(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 denit
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 denit
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 denitie).
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 ec
arei
muchii e E cele dou
a fet
e n frontira c
arora
se afl
a e.

G*

Lem
a. 1. Fie G = (V, E) este un graf plan
maximal conex , G = (V , E) dualul s
au
si
E E. Atunci (V, E ) este arbore part
ial al lui
G dac
a
si numai dac
a (V , E E ) 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 n.
2. |A| 2
n,
|B|

3
3
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 reprezentare 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 ec
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 introdus n scopuri tehnice
si este vid, ultimul
nivel este de fapt l).
Evident, ecare nivel este un separator n G
(avem muchii doar ntre nivele consecutive).
Fie t1 nivelul de la mijloc, adic
a nivelul ce
cont
ine v
arful numerotat bfs cu num
arul de
ordine n
imea L(t1) are o parte din pro2 . Mult
priet
a
tile separatorului pe care l c
aut
am:




n
n




.

L(t)
<

L(t)
<




t<t1
t>t
2
2
1

Dac
a
si L(t1) 4 n, teorema are loc.
Lem
a. 2. Exist
a nivelele t0 t1
si t2 > t1 a.

nc
at |L(t0)| n, |L(t2)| n
si t2 t0 n.
Se alege t0 cel mai mare num
ar cu propriet
a
tile t0 t1
si

|L(t0)| n (exist
a un astfel de nivel pentru c
a |L(0)| =
1). La fel, exist
a t2 un cel mai mic num
ar astfel nc at

t2 > t 1
si |L(t2)| n (de aceea s-a luat |L(l + 1)| = 0).

Orice nivel strict ntre t0


si t2 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<t0 L(t), D = t0<t<t2 L(t), E = t>t2 L(t).
t1

t0

Dac
a |D| 2
3 n atunci teorema are loc cu S =
L(t0 ) L(t2 ), A mult
imea cu cele mai multe
elemente dintre C, D, E
si B reuniunea celorlalte dou
a (nu uit
am c
a C
si E au cel mult n
2
elemente).
384

Consider
am deci c
a n1 = |D| > 2
3 n.
2 penDac
a vom g
asi un separator de tipul 1

3
3

tru D cu cel mult 2 n v


arfuri, atunci , atunci
l vom ad
auga la L(t0 ) L(t2 ) 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 nus n D cu except
ia lui s pe care-l unim cu toate
vrfurile de pe nivelul t0 + 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 ecare v
arf
o muchie incident
a cu el
si cu cealalt
a extremitate 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 numite
tepi. Din
lema 1, rezult
a c
a
tepii 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
ad
acin
a.
lui T orientate dinspre r
Fie e = uv un
tep. Exist
a un unic drum de la
u la v n T care mpreun
a cu e determin
a un
circuit c(e).
Parcurgem
tepii conform unei travers
ari dfs a
lui T calcul
and urm
atoarele informat
ii pentru
ecare
tep, 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 corespund ntoarcerilor din parcurgerea dfs).
e
u

x
Cazul 1.
Suntem ntr-o frunz
a e a lui T (ce se determin
a num
ar
and vecinii). Atunci:
- I(e) = 0;
- |c(e)| = 3 (D e triangulat);
- c(e) = [u, x, v].
e
u

Cazul 2.

c (e )

Avem calculat
a informat
ia pentru
tepul e = u v, e este
un
tep n acela
si triunghi ca
si e
si u este pe circuitul
c(e); ac. rezult
a test
and dac
a u nu-i pe lista c(e ).
Atunci:
387

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

v
u

Cazul 3.
Avem calculat
a informat
ia pentru
tepul e =
u v, e este un
tep n acela
si triunghi ca
si e
si
u nu este pe circuitul c(e); ac. rezult
a test
and
dac
a u e pe lista c(e ). Atunci:
- I(e) = I(e ) + 1;
- |c(e)| = c(e ) 1;
- c(e ) = [u]c(e) (deci c(e) se obt
ine
sterg
andul pe u din lista c(e ).
e

u
e

y
p

e"
c (e "
)

c (e )

x
Cazul 4.
Avem calculat
a informat
ia pentru
tepii e = uy

si e = yv iar e este un
tep n acela
si triunghi
ca
si e , e.

388

Fie p drumul comun al lui c(e )


si c(e)
si e x
cel
alalt cap
at al lui p n afar
a de y. Atunci:
- I(e) = I(e ) + +I(e) + |p| 1 (toate v
arfurile
lui p cu except
ia lui x sunt n interiorul lui c(e));
- |c(e)| = c(e ) + c(e) 2|p| + 1;
- c(e ) = c [x] c unde c este c(e ) cu p
sters

si c este c(e) cu p
sters.
Calculul lui |p|
si reprezentarea lui c(e) se obt
in
scan
and c(e )
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
tep e astfel nc
at
2n1
2n1
n1 (I(e) + c(e))
.
3
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.
I(e)

Fie e primul
tep nt
alnit la ntoarcerea din frunzele lui T c
atre r
ad
acin
a, care satisface proprietatea c
a I(e) + |c(e)| n31 .
389

Atunci mult
imea v
arfurilor din exteriorul lui c(e)
1 , deci
este de cardinal n1 (I(e) + |c(e)|) 2n
3
1
ceea ce r
am
ane de ar
atat este c
a I(e) 2n
3 .

Aceasta rezult
a analiz
and cazurile 1-4 de mai
sus n care s-a ajuns la e:
1.
1. I(e) = 0 2n
3

1
2. I(e)+|c(e)| = I(e )+|c(e )|+1 < n31 +1 2n
3
(pentru n1 3).
3. I(e) + c(e) = I(e ) + c(e ), deci e nu-i prima
muchie cu proprietatea c
a I(e) + |c(e)| n31 .
4. I(e) + c(e) = I(e ) + I(e ) + |p| 1 + c(e ) +
1 |p| < 2n1 .
c(e ) 2|p| + 1 < 2n
3
3

Cu aceasta teorema separatorului este complet


demonstrat
a.

Ilustr
am cum poate folosit
a teorema separatorului mpreun
a cu o metod
a de divide & impera pentru a obt
ine algoritmi exact
i cu comportare subexponent
ial
a pentru probleme NPhard pe grafuri planare.
390

Consider
am problema test
arii dac
a un graf planar dat admite o 3-colorare a v
arfurilor (problem
a cunoscut
a ca ind NP-complet
a).
Pentru grafuri cu put
ine v
arfuri (un num
ar constant c) se poate testa n timpul O(3c) = 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
tia A, B, C a mult
imii v
arfurilor sale cu |A|, |B|

2n
3 si |C| 4 n.

|C|
O(
n) funct
Pentru ecare din cele 3
= 2
ii

posibile denite 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 extins
a la o 3colorare 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)

O(n) + 2O( n)(O( n) + 2T ( 2n


))
3

dac
a n c;
dac
a n > c.

O(
n), destul de bun pentru
Se obt
ine T (n) = 2

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 algoritmi performant
i pentru problemele dicile
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
({Xi |i V (T )}, T ), unde {Xi|i V (T )} este o
familie de submult
imi ale lui V (G)
si T este un
arbore, astfel nc
at:
1. iV (T )Xi = V (G);
2. vw E(G) i V (T ) astfel nc
at v, w Xi;
3. v V (G) mult
imea v
arfurilor {i|v Xi } induce un subarbore n T .

L
a
timea unei t-descompuneri {Xi|i V (T )} se
dene
ste ca ind maxiV (T )(|Xi | 1).

t-l
a
timea unui graf G este l
a
timea 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 t1, t2 ale lui T n componente conexe
si (t2) incidente
diferite ale lui T e cu (t1)
cu v.
Lat
imea b-descompunerii (T, ) este ordinul
maxim al unei muchii a lui T .
b-l
a
timea unui graf G este l
a
timea minim
a
a unei b-descompuneri a lui G
si se noteaz
a
cu bw(G). (dac
a |E(G)| 1 se dene
ste bl
a
timea lui G ca ind 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
a
time se consider
a 0).
394

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

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 rezolvabil
a pe grafuri cu b-l
a
timea 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) + n4).


Demonstrat
ia rezult
a utiliz
and teorema anterioar
a
si un algoritm de complexitate O(n4) 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
a
timea l se poate rezolva n timpul
O(2l n). Deci, pentru grafuri cu b-l
a
timea cel
mult l se poate rezolva n

3l
O(2 2 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(23.182 nn + n4).

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

n2
,
log n

unde n reprezint
a

num
arul de virfuri. O justicare este aceea c
a matricea
ii de memde adiacent

a A a grafului, care ocup


a n2 locat
2

n
orie, poate intotdeauna reprezentat
a folosind O( log
),
n

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 virfuri ale grafului.

Dou
a virfuri care sunt extremit
a
tile

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 ; e u ultimul virf vizitat;din virful u se execut
a o
397

parcurgere BFS a lui T ; e v ultimul virf vizitat;


return u,v.
Este valabil algoritmul pentru un graf conex oarecare ?
(4 puncte)
Problema

3.

Fie T un arbore un arbore binar cu

r
ad
acin
a. Un algoritm simplu de desenare a lui T poate
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 ecare nod v al arborelui T (folosind algoritmul de mai sus) coordonatele
(x(v), y(v)) reprezentind punctul de pe gril
a unde va
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 multime
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, regulamentul de desf
a
surare a examenelor interzice ca un student
s
a dea dou
a examene in aceea
si zi. Pentru ecare student se dispune de lista disciplinelor la care dore
ste s
a
e 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 tuturor 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 ordonate X = {x1 , x2 , . . . , xp } (unde
p = |X|) astfel nc
at NG (x1) NG (x2 ) . . . NG (xp).
a) Demonstrati 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 autocomplementar dac
a este izomorf cu complementul s
au : G % G.
a) Demonstrati 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 drumuri intre dou
a noduri xate (sunt put
ine muchii
si deci
put
ine posibilit
a
ti de ramicare; de ex., intr-un arbore
exist
a exact un drum intre orice dou
a noduri xate).
Programatorul T nu-i de acord
si d
a urm
atorul contraexemplu: se consider
a graful H = K2 Pn1 (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
a
tile 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 contraexemplul, 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 (digraf 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 2m
orient
ari posibile ale muchiilor sale consider
am una oarecare
si cu ajutorul ei construim matricea de incident

a
virf-arc Q {0, 1, 1}nm denit
a prin :
(Q)ve = 1, dac
a v este extremit. init
ial
a a arcului e,
(Q)ve = 1, dac
a v este extremitatea nal
a a arcului e
(Q)ve = 0 in toate celelalte cazuri.
Demonstrat
i c
a matricea A + QQT este o matrice diagonal
a
si precizat
i semnicat
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
ecare muchie. Demonstrat
i c
a b(G) este un graf bipartit. (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
izomorsmului a 2 grafuri oarecare se reduce polinomial la testarea izomorsmului a 2 grafuri bipartite (2
puncte)
403

Problema 3. Graful paianjen cu n virfuri


este graful care se obt
ine unind unul din virfurile 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).
Dac
a G este un graf cu n virfuri reprezentat 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 utiliz
ari ulterioare). (4 puncte)

404

Problema

4.

Asociem unui arbore binar T de ordin

n cu r
ad
acina r un drum P3n orientat procedind astfel:
ec
arui nod v al lui T i se asociaz
a trei noduri cu acela
si
a v nu
nume v pe care le desemn
am prin v1 , v2, v3 ; dac
are in T descendent sting, atunci se introduce arcul v1v2
in P3n ; dac
a v nu are in T descendent drept, atunci se
a descendentul sting al
introduce arcul v2 v3 in P3n; dac
lui v in T este w, atunci se introduc in P3n arcele v1w1

si w3 v2; dac
a descendentul drept al lui v in T este w,
si w3 v3 .
atunci se introduc in P3n arcele v2 w1
ial
a
Dac
a se parcurge drumul P3n de la extremitatea init
a r3
si se listeaz
a numele virfurilor
r1 la extremitatea nal
in ordinea parcurgerii lor se obt
ine un
sir in care numele
ecarui 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 ec
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 ec
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 ec
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 dimensiune m. O ordonare V = {vi1 , . . . , vin } a v
arfurilor lui
inut
G se nume
ste d-m
arginit
a dac
a n digraful G&, obt
din G prin nlocuirea ec
arei muchii {vij , vik } cu arcul
(vimin{j,k} , vimax{j,k} ), avem v V d+
G& (v) d.
a) Descriet
i un algoritm care primind la intrare G reprezentat 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 determina n timpul O(m log n) 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 Kn

(n 2) poate

partit
ionat
a n  n2  submult
imi, ecare dintre acestea
reprezent
and mult
imea muchiilor unui arbore (subgraf
al lui Kn ). Exemplu. K5 ,  52  = 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 V1, . . . , Vk (k 2) sunt mult
imile
de v
arfuri ale componentelor conexe ale grafului H A, atunci
- se adaug
a la Q grafurile [A V1 ]H , . . . , [A Vk ]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 ecare 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 C clasa grafurilor G cu proprietatea c
a orice arbore df s al lui G este un
drum (pentru orice ordonare a v
arfurilor lui G

si orice ordonare a listelor de adiacent

a asociate acestor v
arfuri, orice aplicare a unui df s
genereaz
a un drum hamiltonian n G).
Demonstrat
i c
a
C = {K1, K2} n3{Kn, Cn, Kn,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}. Consider
am urm
atorul algoritm:
1.

SK ;
anga dreapta
for i = 1 to n do
\\ st
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 acestora pentru o implementare a algoritmului de mai sus n
timpul O(n + m) (m ind |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
a
ti:

- |S| = n; |T | = m (n, m N );
- t T |NG(t)| > k > 0;(pentru un k oarecare mai
mic dec
at n);
a t1 = t2 atunci NG (t1) = NG (t2);
- t1, t2 T dac
- t1, t2 T dac
a t1 = t2 atunci |NG (t1) NG (t2)| = k,
atunci are loc inegalitatea m n.
(2 puncte)
Problema 4.
Pentru n N denim graful Gn = (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) distincte din V ) dac
a
si numai dac
a i = l sau j = k.
Demonstrat
i c
a Gn este universal pentru familia arborilor
de ordin n:
oricare ar T un arbore de ordin n exist
a A V astfel

nc
at T = [A]Gn .
(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 ecient
a a unei probleme de drum minim intrun 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 printrun 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 determina 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

a
virf al s
au cu proprietatea c
a NG (v) = V {v}. Dac
pentru A V not
am cu NG (A) = aANG(a) A, se
observ
a c
a exist
a mult
imi de virfuri A care satisfac prosi
priet
a
tile : v A, [A]G este conex, N = NG (A) =
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 {Ck }k4-free,
atunci mult
imea N de la punctul a) are proprietatea c
a este clic
a in graful G.(2 puncte)
c) Deducet
i c
a singurele grafuri {Ck }k4-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 circuit 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 satisface 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 n2. (2
puncte)
Descriet
i un algoritm care s
a testeze dac
a un graf cu n
virfuri
si m muchii este complementarul unui graf bipartit 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 bipartit H = (S, V S; E ) este conex, unde E = E P2 (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 Gd =
K2 K2!"
... K2#.
d f actori

S
a se determine ordinul, dimensiunea
si diametrul lui Gd .
(2 puncte)
S
a se arate c
a Gd este bipartit
si s
a se determine (Gd ).
(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 condential
conex este graful Kn 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 condent
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 C4
indus in graf sau este muchia din mijlocul unui P4
indus in graf.
(4 puncte)

413

Problema 3. In Problema 2-SAT se dau : o mult


ime
de variabile boolene U = {x1 , x2 , ..., xn }
si o mult
ime de
clauze C = {C1 , C2 , ..., Cm } , unde ecare clauz
a Ci este
disjunct
ia a doi literali Ci = vi wi , literalii reprezentind
variabile sau negat
iile acestora. Problemei i se asociaz
a
a
un digraf G cu V (G) = {x1 , x2 , ., xn , x1 , x2 , ...., xn} (adic
tot
i literalii posibili)
si in care pentru ecare clauz
a Ci =
a arcele viwi
si wivi (folosind, evident,
vi wi se adaug
convent
ia referitoare la dubla negare). Demonstrati c
a
exist
a o atribuire a valorilor de adev
ar
si fals pentru
variabilele booleene, astfel incit ecare clauz
a s
a e
adev
arat
a, dac
a
si numai dac
a digraful G are poprietatea
si xi apart
in la compoc
a pentru orice i {1, ..., n} xi
nente tari conexe diferite. (4 puncte)
Argumentat
i complexitatea timp de O(n + m) pentru
testarea propriet
a
tii de mai sus. (2 puncte)

414

Setul de probleme 7
Problema

1.

Gossip Problem. Intr-un grup de n

doamne, ecare 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 faptul c
a ecare din ele va aa 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, ecare
doamn
a va aa 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
a
tii)
(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 denite

si b : E(D)
pe multimea arcelor sale, a : E(D) R+
. Descriet
R+
i un algoritm ecient pentru determinarea

unui circuit C in D astfel incit


a(C )
b(C )

= min{ a(C)
; C circuit in D }
b(C)

(4 puncte)
Problema

3.

imi distincte
Fie A1, A2, ..., An submult

ale unei mult


imi de n elemente S. Demonstrat
i c
a exist
a
un element x in mult
imea S astfel incit A1 {x}, A2
{x}, ..., An {x} s
a e
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
ind muchia sa de capacitate minim
a .

Descriet
i un

algoritm ecient 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 xate. 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 pi 0;
i s;nainte(s) s;
2. while i = t do
if j V astfel nc
at pi pj = aij then
{ nainte(j) i; i j; }
else
{ pi minijE (aij + pj ); i nainte(i) };
3. Costul unui drum de cost minim de la s la t este ps pt

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 armat
iile din
pasul 3 sunt corecte.(2 puncte)
b)Stabilit
i complexitatea timp a algoritmului(2 puncte)

Problema 2. Fie T = (V, E) un arbore


si w : V R+
o funct
ie de pondere nenegativ
a. Pentru orice subarbore

T al lui T se dene
ste ponderea sa, w(T ), ca ind suma
ponderilor v
arfurilor sale.
at nici unul
Ar
atat
i c
a exist
a un v
arf v0 V astfel nc
at
din subarborii lui T v0 nu are ponderea mai mare dec
1
w(T ).(1 punct)
2
Descriet
i un algoritm cu timpul O(|V |) pentru g
asirea lui
v0 . (2 puncte)
417

Problema 3. Dac
a G
si H sunt dou
a grafuri, notat
ia G H semnic
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 morsm
de grafuri de la G la H).
Justicat
i corectitudinea unui algoritm care s
a
r
aspund
a n timpul O(1) la ntrebarea: Are
loc Cn Cm ? (n, m N, n, m 3; Ck 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 (q(G S) |S|) = |V (G)| 2(G) .

SV (G)

(Se presupune cunoscut


a teorema lui Tutte)(4 puncte)

418

Setul de probleme 7
Problema 1.
ale grafului:

Determinat
i num
arul cuplajelor perfecte

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) (graful 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 O(n + m) pentru
aarea unei mult
imi maximale P de drumuri disjuncte
(cu mult
imile de v
arfuri disjuncte) de la A la B, ecare
de lungime d(A, B) (maximalitatea lui P 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 e disjunct de
orice drum din P).
b) Ar
atat
i cum poate folosit algoritmul de la a) pentru implementarea algoritmului lui Hopcroft & Karp de
aare a unui cuplaj de cardinal maxim ntr-un graf bipartit.
(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 = {e1 , . . . , em}.
Fie A = (aij ) Mnm ({1, 0, 1}) matricea de incident

a
a arcul
a lui D (dac
a arcul ej iese din i atunci aij = 1, dac
a n i atunci aij = 1, altfel aij = 0). Ar
atat
i c
a
ej intr
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 construie
ste un drum P astfel: se pleac
a dintr-un v
arf oarecare de start
si apoi, din v
arful curent n care ne a
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 ec
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 compara suma pl
atit
a, Apriori(P ), cu cea care s-ar f
acut
a P osteriori(P ).
dac
a s-ar cunoscut drumul P , notat
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 )P osteriori(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
a
tile 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 armat
iilor a) si b) ? (1
punct)
Problema

2.

Consider
am o numerotare xat
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 xA GF m vectorul m-dimensional cu elemente
0,1 denit prin xA
i = 1 ei A (vect. caracteristic).
iul vectorial peste corpul GF (cu elem. 0
GF m este spat

si 1,
si operat
iile de adunare
si inmult
ire modulo 2).
421

a) Demonstrati 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)Demonstrati 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 demonstra 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 |NG(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 partit
ionat
a in (G) cuplaje.(2 puncte)
423

Problema 3. Consider
am urm
atoarea problem
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 TG

familia arborilor s
ai part
iali. Se consider
a graful H =
(TG, E(H)) unde T1T2 E(H) |E(T1)'E(T2 )| = 2.
a) Demonstrati c
a H este conex
si are diametrul cel mult
n 1. (2 puncte)
b)Demonstrati 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
xat 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
e 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
tine 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 cardinal).(4 puncte)
Problema 4. Cuplaje stabile in grafuri bipartite
Fie graful complet bipartit Kn,n = (B, F ; E), unde B =
si F = {f1 , f2 , ..., fn}. Dac
a M este un cuplaj
{b1, b2, ..., bn}
perfect in Kn,n (ecare b este cuplat cu exact un f ), vom
folosi notat
ia : bifj M fj = M (bi) bi = M (fj ).
Vom presupune c
a
b B are o ordonare a preferint
elor sale pe F :
fi1 <b fi2 <b ... <b fin
si
f F are o ordonare a preferint
elor sale pe B :
bi1 <f bi2 <f ... <f bin .
ste stabil dac
a:
Un cuplaj perfect M al lui Kn,n se nume
si, de asemeb B dac
a f <b M (b), atunci M (f ) <f b
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 exist
a un cuplaj stabil
si s
a se construiasc
a unul in O(n3).
(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 perfect se anunt

a acest lucru). Ar
atat
i c
ase poate utiliza
acest algoritm pentru determinarea ecient
a a cuplajului 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
ux maxim (pe o ret
ea convenabil denit
a). (3 puncte)
Problema 3. Digraful G = (V, E) descrie topologia interconectarii intr-o ret
ea de procesoare. Pentru ecare
procesor v V se cunoa
ste inc
arcarea sa load(v) R+ .
Se cere s
a se determine (cu ajutorul unei probleme de
ux maxim) un plan de echilibrare static
a a inc
arc
arii
procesoarelor : se va indica pentru ecare procesor ce
cantitate de inc
arcare va trimite
si la ce procesor astfel incit, in nal, toate procesoarele s
a aib
a aceea
si
inc
arcare. (4 puncte)
427

Problema 4. S
a se determine uxul de valoare maxim
a
in reteaua din gura de mai jos (explicind funct
ionarea
algoritmului lui Edmonds-Karp):
4

c
3

4
3
1

t
10

d
5

(Etichetele arcelor reprezinta capacit


a
tile)
(4 puncte)

428

Setul de probleme 11
Problema 1. Consider
am urm
atoarele probleme de decizie:

PERF

Instant

a: G un graf.
Intrebare: Are G un cuplaj perfect?

3PERF

Instant

a: G un graf cu gradul ec
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 e1, e2, . . . , e10 a muchiilor grafului complet K5, astfel nc
at pentru orice i
{1, . . . , 9} muchiile ei
si ei+1 nu sunt adiacente
si, de asemenea, e1
si e10 nu sunt adian K5
cente n K5. (2 puncte)
429

Problema 3. Un organizator al unei conferint


e trebuie s
a asigure
fet
e de mas
a (curate) pentru ecare din cele D zile c
at dureaz
a
conferint
a.
Se cunoa
ste num
arul Mi al meselor de care e nevoie n ziua i a
e de mas
a
conferint
ei (i = 1, D). Se consider
a c
a toate cele Mi fet
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
a
tat fet
e de mas
a
murdare (din zilele precedente; i 2). Cur
a
t
atoria are dou
a tipuri
de servicii: serviciul rapid, prin care se returneaz
a fet
ele de mas
a
si serviciul lent
curate la nceputul zilei i + 1 la un cost unitar c1 ,
prin care returneaz
a fet
ele de mas
a curate la nceputul zilei i + 2 la
un cost unitar c2 . Desigur, p > c1 > c2 .
Problema pe care
si-o pune organizatorul este de a face o planicare a modului de cump
arare
si trimitere la cur
a
t
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 ux de
cost minim (justicare). (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 = {vi1 , vi2 , . . . , vin }
astfel nc
at dG(vi1 ) dG (vi2 ) . . . dG(vin ).
si
b) Se coloreaz
a greedy v
arfurile: lui vi1 i se atribuie culoarea 1
a
apoi pentru ecare v
arf vij , cu j = 2, . . . , n, se atribuie cea mai mic
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 digraful suport, s V (G) intrarea, t V (G), t = s ie
sirea
ia de capacitate). Presupunem

si c : E(G) R+ funct
(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 ux x n R cu
proprietatea c
a x(e) m(e) e E(G).

a) Demonstrati c
a pentru orice ux legal x
si orice
sect
iune (S, T ) n R are loc


c(ij)
m(ji).
v(x)
iS,jT,ijE(G)

iS,jT,jiE(G)

b) Se construie
ste din R ret
eaua R astfel:
si o ie
sire nou
a t;
- se adaug
a la G o intrare nou
a s
- pentru v V (G) se adaug
a arcul sv de capacitate

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

c(vt) = vuE(G) m(vu);
- se adaug
a arcele st
si ts de capacitate c(st) = c(ts) =
;
- se dene
ste c pe arcele ij ale lui G ca ind c(ij) =
c(ij) m(ij).
432

Demonstrat
i c
a exist
a un ux legal n ret
eaua
a
si
 R dac
numai dac
a exist
a un ux de valoare M = eE(G) m(e)
n ret
eaua R = (G, s, t, c) (G este digraful construit mai
ia de capacitate denit
a mai sus).
sus, c este funct

c) Utiliz
and un ux legal de start (care se poate obt
ine
ca la b)), indicat
i cum se poate adapta algoritmul lui
Ford & Fulkerson pentru a obt
ine un ux legal de valoare
maxim
a ntr-o ret
ea n care pe ecare 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) R+ ,
atunci se nume
ste arbore Steiner corespunz
ator tripletei
(H, A, w) un arbore T (H, A, w) = (VT , ET ), subgraf al lui
H, cu proprietatea c
a
A VT
si suma costurilor muchiilor
a printre tot
i
sale, s[T (H, A, w)] = eET w(e), este minim
arborii subgrafuri ale lui H care cont
in A.

a) Justicati 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 R+ .
imea de v
arfuri
Consider
am
si graful complet Kn cu mult
a de c(ij) =
V
si cu funct
ia de cost c : E(Kn ) R+ dat
min[ P drum n G de la i la j ] c(P ) pentru orice ij E(Kn ).
Demonstrat
i c
a s[T (G, A, c)] = s[T (Kn, A, c)]
si c
a din
orice arbore Steiner T (Kn , A, c) se poate construi un arbore Steiner T (G, A, c).

c) Ar
atat
i c
a exist
a un arbore Steiner T (Kn , A, c) cu proprietatea 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 (Kn , 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 uxului maxim in ret
eaua
R = (G, c, s, t). Demonstrat
i c
a exist
a k st-drumuri in G,
si numerele reale nenegative
P1, ...., Pk (0 k |E(G)|),
v1 , ..., vk , astfel incit x : E(G) R , denit pentru orice
arc ij prin xij = 0 + t:ijPt vt , este ux in R de valoare
maxim
a v. (4 puncte)
Problema

2.

Numim GP-descompunere a grafului

graful complet Kn orice mult


ime A = {B1 , ...., Bk(A) },
unde : ecare Bi este un subgraf bipartit complet al lui
a grafuri Bi si Bj au mult
imile de muchii disKn , orice dou
juncte
si i=1,k(A)E(Bi ) = E(Kn ). Ar
atat
i c
a orice GPdescompunere A a lui Kn satisfce inegalitatea k(A)
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. Numim 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 complementarul grafului G este neconex.
Ar
atat
i c
a graful circuit Cn (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

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