Anda di halaman 1dari 483

ALGORITMICA

GRAFURILOR
C. Croitoru
2015-2016

I.

Vocabular al Teoriei grafurilor

1. Definit
ia unui graf
Un graf este o pereche G = (V (G), E(G)),
unde
- V (G) este o mult
ime finit
a nevid
a, iar
- E(G) este o submult
ime a mult
imii 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).
1

Dac
a e = {u, v} E(G) este o muchie a grafului G vom nota e = uv (pentru simplificarea
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).
2

Remarc
am faptul c
a graful G poate
 fi definit

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


G : V (G) P V (G)

asociaz
a fiec
arui vrf vecin
atatea sa,
si satisf
ac
and condit
iile: v V (G) : v 6 G(v)
si
u, v V (G) u G(v) v G(u).
Dou
a muchii e
si e care au o extremitate comun
a se numesc adiacente.
Intuitiv, un graf G = (V (G), E(G)) poate fi
reprezentat (dup
a cum sugereaz
a
si numele
s
au) cu ajutorul unei figuri plane format
a dintro mult
ime de mici forme geometrice aflat
a
n corespondent

a cu mult
imea de vrfuri V (G),
dou
a forme fiind 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 figurile geometrice considerate este vizualizat
a
3

uneori cu etichete ata


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

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

1
3
3
3

4
4

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 dou
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} fiind stabil
a de cardinal
maxim (n 1). In graful H s-au evident
iat
dou
a mult
imi stabile care partit
ioneaz
a mult
imea
v
arfurilor, iar (H) = 6.
1
2

5
e

n
G

d
H

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-dificil
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 dificult
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 figura de la
pagina precedent
a).
6

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 fiind pus
n evident

a. Problema
P2

Intrare: G un graf.
Ie
sire: (G)
si un martor:
M cuplaj n G, cu |M | = (G).
7

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
(Edmonds, 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 definit
ia
mult
imilor stabile, este o mult
ime stabil
a ).
Num
arul cromatic al grafului G, notat (G),
este cea mai mic
a valoare a lui p N pentru
care G admite o p-colorare.
8

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

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 fie NP-dificil
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.
10

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

s-a dovedit a fi NP-dificil


a, de
si era de a
steptat
ca (lucr
and cu cuplaje, iar problema P2 fiind
din P) ca ea s
a fie rezolvabil
a polinomial.
Diferent
a fat

a de P3 (P4 este de fapt o restrict


ie
a lui P3 pe clasa line-grafurilor) este c
a n timp
ce P3 s-a demonstrat c
a nu poate fi u
sor aproximabil
a (n timp polinomial), problema P4 poate
fi 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
a exist
a o biject
ie
aceasta prin G =
: V (G) V (H)
cu proprietatea c
a aplicat
ia
: E(G) E(H),
definit
a pentru orice uv E(G) prin (uv) =
(u)(v) este o biject
ie.
12

(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 figur
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=

13

Nu s-a demonstrat dac


a aceast
a problem
a este
sau nu NP-complet
a (apartenet
a la NP este
clar
a). Se pare c
a face parte dintr-o clas
a
de probleme aflat
a ntre P
si NP). Exemplul
urm
ator arat
a dificultatea problemei (cele dou
a
grafuri au acela
si ordin, aceea
si dimensiune,
v
arfurile au acela
si num
ar de muchii incidente,

si totu
si ele nu-s izomorfe: in primul apar circuite de lungime 4, iar n al doilea nu !)

Dac
a G = (V (G), E(G))este un graf, un automorfism al lui G este o permutare a lui V (G)
14

( : V (G) V (G), bijectiv


a) cu proprietatea
c
a induce o permutare a lui E(G)
( : E(G) E(G), (uv) = (u)(v), uv
E(G), este bijectiv
a ).
Mult
imea automorfismelor grafului G formeaz
a,
n raport cu operat
ia de compunere a aplicat
iilor,
un grup numit grupul automorfismelor grafului G, notat Aut(G).
Aut(G) este tranzitiv dac
a
v V (G), {w | Aut(G) : (v) = w} = V (G)

Exemplu:

5
4

15

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

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


dat
a o funct
ie m : P2 V (G)
not
iunea de multigraf.
Un element e P2 V (G)

N, se obt
ine

cu m(e) > 0 este muchie a

multigrafului, simpl
a dac
a m(e) = 1, multipl
a dac
a
m(e) > 1.
Oric
arui multigraf M i se poate asocia un graf G(M ),
numit graful suport al lui M , obt
inut prin nlocuirea
fiec
arei muchii multiple cu o singur
a muchie cu acelea
si extremit
a
ti. Pictural, modific
arile de reprezentare
sunt evidente; graful suport al multigrafului desenat mai
jos, este graful desenat pe pagina precedent
a la care se
adauga muchiile 61, 62
si 63.
1

5
4

16

b) Dac
a n definit
ia unui graf se consider
a E(G)
ca o multimult
ime pe mult
imea p
art
ilor nevide
cu cel mult dou
a elemente ale lui V (G), atunci
G se nume
ste graf general sau pseudograf.
O muchie e E(G), e = {v} se nume
ste bucl
a
n vrful v.
Exemplul urm
ator arat
a un graf general M
si
graful s
au suport.
0

35

43
2
G(M)

Pentru evitarea confuziilor, uneori grafurile


a
sa cum le-am definit se mai numesc
si grafuri
simple .
17

c) Un digraf este o pereche D = (V (D), A(D))


unde V (D) este o mult
ime finit
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 final
a a lui a.
Pictural, digrafurile se reprezint
a la fel ca
si
grafurile, ad
augnd curbei ce une
ste dou
a figuri asociate v
arfurilor o s
ageat
a pentru a preciza perechea de vrfuri corespunz
atoare arcului desenat.
18

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 fiec
arui
arc vw cu opusul s
au wv.
Dac
a D este un digraf, atunci nlocuind fiecare
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.
19

Dac
a M (D) este graf atunci D se nume
ste graf
orientat (poate fi gndit ca obt
inut prin orientarea fiec
arei muchii a grafului M (D)).
Un digraf complet simetric este un digraf n
care fiecare 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.
Steaua Bucuresti
1
2
Real Madrid

FC Barcelona

3
4

Bayern Munchen

CSMS Iasi

20

d) Grafurile infinite se obt


in prin nl
aturarea
condit
iei de finitudine a mult
imii de vrfuri
si
(sau) muchii. Acestea se consider
a a fi num
arabile,
iar tratarea lor utilizeaz
a instrumente care nu
sunt neaparat combinatorii ( de exemplu, mecanisme generative). Un graf G local finit este
un graf infinit n care NG(v) este finit
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 finite de mult
imi
si vom ar
ata
c
a pot fi studiate via grafurile bipartite, de
si
exist
a rezultate combinatorii importante
si cu
aplicat
ii directe (de exemplu n bazele de date)
n formalismul care urmeaz
a extinderea trat
arii
grafurilor (din punct de vedere combinatoriu
sau algebric).
21

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) .
22

Concepte analoage se pot defini


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

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

w
23

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 figura urm
atoare, H este subgraf al lui G iar
subgraful indus de mult
imea de v
arfuri {3, 4, 6, 8, 10}
este G[{3, 4, 6, 8, 10}]:
2
1

10

4
8

6
6

8
3
10

10
G

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

24

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 hE iG = (V (G), E ) este
graful part
ial sect
ionat de E n G. G E
este prin definit
ie hE(G) \ E iG, iar G e =
G{e} (e E(G)). Pentru G graful din figura
precedent
a
si E = {12, 14, 23, 25, 36, 59, 710, 810, 910},
obt
inem c
a hE iG este graful G :
2
1

10
G

Concepte similare se pot defini n mod analog


pentru multigrafuri, grafuri generale sau digrafuri.
25

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

c
e

c
d

e
d

g
f
Graful initial

Line-graful sau

26

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

-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 definesc
G G = (V (G), E(G) E(G)),
G G = (V (G), E(G) E(G)).
28

1
5

Intersectia

Reuniunea

G = (V (G)
-Dac
a V (G)V (G) = atunci G
V (G), E(G)E(G )) se nume
ste reuniunea
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 = GG

29

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 )
v = v
si ww E(G )sau
w = w
si vv E(G)}
G:

G x G

30

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





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

K1

K2

K3

K4

K5

Graful nul de ordin n : Nn = K n.

N1

N2

N3

N4

N5

31

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

32

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
a c
a determinarea num
arului
(G) = (G), rezult
de clic
a al unui graf
si a unei clici de cardinal
maxim este problema P1 cu 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)).
33

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
2

F1

F3
1

F2
4

5
7

6
F1

Hipergraful H

F2

5
6
7

F3
Graful bipartit
asociat lui H

34

O construct
ie invers
a evident
a, ne arat
a c
a
si
pentru orice graf bipartit se poate asocia un
hipergraf.

Un graf G = (V (G), E(G))se nume


ste planar
dac
a poate fi reprezentat n plan astfel nct
fiec
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

35

De
si problema
PLAN

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

pare mult mai dificil


a dec
at problema stabilei
maxime (P1 din cursul trecut), ea subsum
and
not
iuni de topologie, s-a dovedit c
a este din P
( Hopcroft & Tarjan , 1972, O(n + m)).
O modalitate uzual
a de a defini clase de 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 fi definit
a ca fiind 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.
36

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

37

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).
38

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

Definit
iile de mai sus se extind, n mod evident,pentru digrafuri singura modificare fiind aceea c
a se nlocuiesc muchiile cu arce.
39

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 fi 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 defini componentele conexe ca subgrafurile induse de clasele de
echivalent

a determinate pe V (G) de relat


ia de
echivalent

a V (G) V (G) definit


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

Graful din figura de mai sus are 4 componente conexe:


una cu 1 v
arf, una cu 2 v
arfuri
si dou
a cu 5 v
arfuri.
40

Concepte analoage se pot defini


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

41

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

42

Fie p un num
ar ntreg pozitiv;
un graf G cu m
acar p vrfuri este pconex dac
a
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
43

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

44

Un graf (sau digraf) se nume


ste eulerian dac
a
admite un parcurs nchis care folose
ste fiecare
muchie a grafului (respectiv, fiecare arc al digrafului).
Un (di)graf G se nume
ste hamiltonian dac
a
are un circuit care trece prin fiecare vrf.
8

10

2
11

5
7

3
9

4
2

Graf Eulerian

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 ?
45

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
fi 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)
46

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 =

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

Pentru graful din figura 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.


48

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

b) listele de adiacent

a
Pentru fiecare 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
+
(v) = {v|w V
si vw E}.
NG
Pentru cazul n care G este graf, fiecare muchie
vw E va genera dou
a elemente n listele
de adiacent

a, unul n A(v)
si cel
alalt n A(w).
Spat
iul total de memorie utilizat va fi de O(n+
2e). Pentru cazul n care G este digraf, spat
iul
de memorie utilizat este de O(n + e).
Listele de adiacent

a pot fi reprezentate cu ajutorul tablourilor sau ca structuri dinamice de


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

a.
50

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

51

II Probleme de drum n (di)grafuri

1. Parcurgeri sistematice ale (di)grafurilor.


Graph search- paradigm
a algoritmic
a utilizat
a
pentru a desemna o metod
a sistematic
a de
parcurgere a mult
imii v
arfurilor la care se poate
ajunge prin drumuri ntr-un (di)graf de la un
v
arf fixat.
Dat G = (V, E) un (di)graf cu mult
imea 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}.

52

(Di)graful G e reprezentat cu listele de adiacent

a (e
nevoie de aflarea eficient
a a mult
imii vecinilor nodului
curent, n procesul sistematic de vizitare).
Prezent
am succint cele dou
a tehnici principale de parcurgere.

bfs - breadth first search


Init
ial, v V are eticheta label(v) < 0.
label(s) 0
parent(s) 0;
creeaz
a coada Q cont
in
and s;
while Q 6= 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
}
}
}
53

Evident:
- S = {v V |label(v) 0};
- v V label(v) = dG(s, v);
- variabila parent define
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 fiecare list
a de adiacent

a a unui v
arf
din mult
imea S este traversat
a exact o dat
a,
complexitatea timp a lui bf s(s) este O(nS +
mS ), unde nS = |S| iar mS = |E([S]G)|;
In figura 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)

54

dfs - depth first search


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

si tot
i pointerii de parcurgere a listelor de adiacent

a sunt la nceput.

label(s) 0
parent(s) 0;
creeaz
a stiva S cont
in
and s;
nS 1
while S 6= 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 ).
55

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 eficient
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 Artificial
a, unde spat
iul st
arilor de c
autare poate fi v
azut ca
un graf . De data aceasta graful este dat implicit; n
fiecare nod (stare) se dispune de un predicat precondit
ie
care este utilizat de o funct
ie neighbours care intoarce
lista nodurilor accesibile n contextul curent din acel nod.
Graful explicit care se poate construi n principiu, este
folosit pentru descrierea algoritmului
si analizele de complexitate.
56

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
57

a = , + = .
(Este posibil, de asemenea, ca s
a semnifice
acces terminat cu insucces n structura de date
n care se reprezint
a matricea A).
Dac
a i, j V , vom nota cu
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 6= 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 define
ste
a(Dij ) = 0 +

aij .

ijE(Dij )

In particular, a(Dii) = 0.
58

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 6= 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 6= i, j V .
59

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 finite, rezult
a c
a aceste mult
imi snt finite (n
fiecare 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 eficiente.
60

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 semnific
a determinarea drumului cel mai sigur de la s la t.
61

b) Ret
ele PERT (Project Evaluation and Review Technique).
Fie P = {A1, . . . , An} mult
imea activit
a
tilor atomice ale unui proiect de anvergur
a (n este mare).
P este o mult
ime part
ial ordonat
a cu relat
ia de
ordine
Ai < Aj
activitatea Aj nu poate ncepe
dect dup
a terminarea activit
a
tii Ai.
Se cunoa
ste, pentru fiecare 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 fie 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:
62

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 fictiv
a) de cost 0.
Se asociaz
a un eveniment s (START) unit prin
arce de cost 0 cu elementele minimale ale lui
(P, <)
si un eveniment t (END) de care vor fi
unite prin cte un arc fiecare element maximal
al lui P .
In digraful obt
inut (care este evident aciclic)
costul maxim al unui drum de la s la t reprezint
a
cel mai scurt timp posibil de execut
ie a 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.
63

Figura de mai jos ilustreaz


a tipul de digraf
(aciclic) care se formeaz
a
si se evident
iaz
a un
posibil drum critic. Dificultatea major
a este
n construct
ia digrafului (modelarea problemei
reale)
si problema devine extrem de interesant
a
dac
a (dar
si NP-dificil
a) dac
a se introduc
si
alte tipuri de restrict
ii ntre activit
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
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).
64

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


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

max

i=1

pixi |

n
X

i=1

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

Problema, de
si interesant
a n unele aplicat
ii
(de exemplu la nc
arcarea vapoarelor ntr-un
port) a fost aleas
a pentru a pune n evident

a
leg
atura dintre metoda program
rii dinamice (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:
65

s10
si s1a1 cu a(s10 ) = 0
si a(s1a1 ) = p1.

( se pune obiectul 1 n rucsac


si se obt
ine profitul
p1, ajung
andu-se la nivelul a1 de umplere, sau nu se
pune obiectul 1 n rucsac, profitul fiind 0
si nivelul
de umplere r
am
an
and 0).

i = 2, n j = 0, b:
(i 1)j 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 profitul
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

obiectului i de volum ai la o nc
arcare a primelor
i 1 obiecte de nivel j ai).

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

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

67

Se observ
a din construct
ie, c
a orice drum de
la s la t n G corespunde unei submult
imi de
obiecte cu suma volumelor mai mic
a sau egal
a
cu b
si de profit egal cu costul acestui drum.
Reciproc, oric
arei mult
imi de obiecte cu suma
volumelor nedep
a
sind b i corespunde un drum
de la s la t n G.
Rezult
a c
a dac
a n digraful G se determin
a un
drum de cost maxim de la s la t se rezolv
a
problema rucsacului.
Not
am c
a descrierea (static
a) a digrafului G
poate fi u
sor transformat
a n una procedural
a
astfel 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-dificile. Solut


ia polinomial
a
descris
a mai sus conduce la un digraf aciclic cu O(nb)
v
arfuri, care nu-i dimensiunea intr
arii !!!
68

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
j6=i

i 6= 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

69

Ipoteza (I) asigur


a faptul c
a us = 0, adic
a
prima ecuat
ie a sistemului (*) este verificat
a.
are un penultim v
Pentru i 6= s drumul Dsi
rf
j. Dac
a Dsj este drumul de la s la j determi de v
) =
nat pe Dsi
rful j, avem: ui = a(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(Dsj
a cazuri posibile:
). Atunci D 1 = D (j, ji, i) D
1. i 6 V (Dsj
si
sj
) + a < a(D ) + a = a(D ),

si a(D1) = a(Dsj
ji
sj
ji
si
(vezi
ceea ce contrazice alegerea drumului Dsi
figura urm
atoare).
Dsj
j
i
s
D*sj

70

). 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 figura urm
atoare).
Dij
Dsj

C
j
i

s
D*sj

Deci am demonstrat c
a i 6= 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.
71

Rezult
a c
a suficient
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
72

(a) Dac
a i = s, atunci us = 0
si drumul Dss
satisface a(Dss) = 0 = us.
Dac
a i 6= s, consider
am urm
atorul algoritm:
v i; k 0;
while v 6= s do
{ determin
a w astfel nct uv = uw + awv ;
// 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+1ik ) + +
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).
73

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) 6=
u = (u1, . . . , un). Cum us = us = 0, rezult
a c
a
exist
a i 6= s astfel nct ui 6= ui
si j V (Dsi),
j 6= 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.

74

Observat
ii 1. Din demonstrat
ie rezult
a c
a pentru rezolvarea problemei P2 este suficient s
a
obt
inem o solut
ie a sistemului (). Drumurile
corespunz
atoare se obt
in ca la (a).
Algoritmii pe care i vom prezenta se vor ocupa
de rezolvarea sistemului (). Totu
si, dac
a avem
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 final
a
nainte[i]=vrful dinaintea lui i de pe drumul
minim de la s la i, atunci vrfurile acestui drum
pot fi 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,
75

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
fiec
arei muchii cu o pereche de arce simetrice de acela
si cost ca
si muchia pe care o
nlocuiesc.
Dificultatea unei astfel de abord
ari rezult
a din
introducerea pentru muchii de cost negativ a
unor circuite de lungime 2 de cost negativ.
Deci, n cazul grafurilor, algoritmii pentru
digrafuri snt valabili doar dac
a toate costurile snt nenegative.
76

4. Avnd n vedere c
a mult
imile Dij snt finite,
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 fi N P -dificile.
77

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 ).
78

Reciproc, dac
a G nu are circuite atunci exist
a un vrf
v0 V
astfel nct d
G (v0) = 0
(altfel, datorit
a finitudinii 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).
Aflarea unei numerot
ari aciclice a unui digraf
se nume
ste
si sortare topologic
a ntruc
at se
sorteaz
a mult
imea V ntr-un mod compatibil
cu topologia digrafului.
Vom presupune c
a digraful este reprezentat
cu ajutorul listelor de adiacent

a. Dimensiunea
problemei este O(n + e).
Vom construi un algoritm care s
a rezolve problema n timp O(n + e).
Acest lucru este posibil datorit
a unei utiliz
ari
judicioase a structurilor de date.
Linia algoritmului:
79

- 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)++ ;
si vrfurile de grad in- Parcurgem vectorul d
G
terior 0 le memor
am ntr-o stiv
a S0 ;
(a)- scoatem vrful din topul stivei S0
si-l numerot
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 modificarea 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).
80

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

81

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

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 6= 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 }.
83

1 D astfel
nct
Presupunem c
a exist
a Dsj

sj
1 ) < u .
a(Dsj

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

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
nt
uj > a(Dsj

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

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 fie 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
lui Dsj nlocuind n Dsj
iunea 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 6= 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 u j ,
c
aci S satisface (D).
85

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 finale 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, fiecare necesit
and O(log n) operat
ii; Johnson ,1977).
86

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
fiecare v
arf are gradul interior cel mult 1.
V
arfurile de grad interior 0 sunt r
ad
acinile lui
D, iar cele cu grad exterior 0 sunt frunzele lui
D.
Dac
a uv A atunci u este p
arintele lui v iar v
este copilul lui u.
Dac
a p
adurea are o singur
a r
ad
acin
a, atunci
ea este un arbore cu r
ad
acin
a.
O p
adure Fibonacci este o p
adure cu r
ad
acini
F = (V, A) n care copiii fiec
arui v
arf v pot fi
ordonat
i astfel nc
at copilul num
arul i are la
r
andul s
au cel put
in i 2 copii.
87

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).
+ (v)1)/2
(d
Ar
at
am c
a (v) 2
, care va implica
prin logaritmare afirmat
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 fie vi copilul num
arul i al lui
v (i = 1, . . . , k).
+

Avem, (vi ) 2(d (vi)1)/2 2(i1)/2, ntruc


at
d+ (vi) i 2.
P
P
Deci (v) = 1+ ki=1 (vi) 1+ ki=1 2(i3)/2
2(k1)/2,
si teorema e demonstrat
a.
88

Un heap Fibonacci cont


in
and valorile reale
(uj ; j U ) este o p
adure Fibonacci F = (U, A)
(fiecare v
arf j are ordonat
i copii astfel nc
at
copilul num
arul i are cel put
in 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 6 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) 6= 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 fi reprezentat cu ajutorul
urm
atoarei structuri de date:
- c
ate o list
a dublu nl
ant
uit
a Cj a copiilor
fiec
arui j U ;
-funct
ia p : U U , unde p(j) = p
arintele lui j
(dac
a j e r
ad
acin
a p(j) = j);
89

-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 fiecare
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 suficient 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:
-fie 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;
90

-pentru repararea condit


iilor (iii) se execut
a
pentru fiecare r = v1, . . . , vk :
repar
a(r): dac
a s r
ad
acin
a cu d+ (r) = d+(s)
atunci: dac
a ur us, adaug
a s ca ultim copil
al lui r
si repar
a(r), altfel ( ur > us), adau
a r
ca ultim copil al lui s
si repar
a(s).

In acest fel condit


iile (i)
si (iii) sunt ment
inute,
iar existent
a r
ad
acinii s de mai sus, se face cu
ajutorul funt
iilor b, d
si p (n timpul procesului,
se actualizeaz
a structura de date).

Descre
sterea unei valori uj pentru un j U se
face astfel:
declar
a r
ad
acin
a(j):
dac
a j are un p
arinte, fie acesta v, atunci
se
sterge arcul vj
si se aplic
a repar
a(r);
dac
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):
91

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

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 figur
a care indic
a un mod de
construct
ie a heap-ului init
ial (binomial):

B4

B3

B2

B1

B0

93

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
Dst
si i V (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).
94

Dac
a g este un estimator consistent atunci se
poate modifica 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 neeficient
a, respectiv neaplicabil
a. O implementare care nu are aceste deficient
e este
urm
atoarea datorat
a lui Glover, Klingman
si
Philips (1985)
95

Partition Shortest Path ( PSP) algorithm:


1. us 0; nainte(s) 0;
S ; N OW {s}; N EXT ;
2. while N OW N EXT 6= do
{ while N OW 6= 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 6= then
{ determin
a d = min{ui | i N EXT };
transfer
a i N EXT cu ui = d n NOW
}
}

96

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
n1), atunci un1 este
un1 = (un1
,
u
,
.
.
.
,
u
n
1
2
solut
ia sistemului ().
Algoritmul care rezult
a este urm
atorul:
97

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 , minj6=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}.
B = {D | D Dsi, num
arul arcelor lui D m}.
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})
98

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(D0), D0 C.
Dac
a j este vrful ce-l precede pe i n D0 (exist
a, ntruct D0 are m
acar 2 arce) atunci
0 ) + a um + a ,
a(D0) = a(Dsj
ji
ji
j
0 are m arce
ntruct Dsj
si um satisface (BM).
Rezult
a c
a
m
min{a(D) | D A} = min{um
i , minj6=i (uj +
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.
99

Observat
ii:
1. Dac
a la algoritm se adaug
a
si pasul 3:
3. if (i V a.. un1
> minj6=i(ujn1 + aji ))
i
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
un1
).
i
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
c
arora li se modific
a ui curent (se va renunt
a,
evident, la memorarea tuturor aproximat
iilor
succesive).
100

Rezolvarea problemei (P3).


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

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


semnificat
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).
101

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

1. Determin
a
si construie
ste A.
si
Inainte.
2. Rezolv
a (P3) pt. A construind U
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), fixnd
sV
si rezolvnd (P2) cu alg. Bellman-Ford.
In adev
ar, dac
a (ui, i V ) este solut
ie a lui
(P2), atunci (uj , j V ) este solut
ie a sistemului () uj = mini6=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.
103

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

Aceast
a ultim
a relat
ie se poate justifica 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
+
u
im
mj
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
fi descris astfel:
104

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 finale ale elementelor diagonale dau costul
minim al unui circuit ce trece prin vrful corespunz
ator.
105

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 6= j else 0;
2. for m := 0 to n 2 do
m + a );
for i, j V do um+1
=
min
(u
k
kj
ij
ik
(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:
106

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
U m+1 = U m A
si inductiv rezult
a c
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)
(2
ativ, atunci A
= 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)
107

(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 eficient
a a problemei (n3 din evaluarea precedent
a se poate nlocui cu nlog2 7 =
n2,81(Strassen 1969); sau chiar cu n2,3728639
(Cooppersmith, Winograd 1987, Le Gall 2014).

..........................................

108

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 figura 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.
109

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 6= .
110

Not
am cu
S(X, Y; G) = {Z | Z

XY -separatoare n G}

si cu

k(X, Y; G) = min{|Z|; Z S(X, Y ; G)}.


Din definit
ie, rezult
a urm
atoarele propriet
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).
111

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).
Demonstrat
ie: 10. Dac
a p = p(X, Y ; G)
si
D1, D2, . . . , Dp snt XY -drumuri disjuncte n G,
atunci Z S(X, Y ; G) avem Z V (Di) 6=
si
cum Di snt disjuncte (i = 1, p):
P
p
|Z| |Z i=1V (Di )| = i=1,p |Z V (Di)|
P
i=1,p 1 = p.
Deci Z S(X, Y ; G) |Z| p; n particular
k(X, Y ; G) p(X, Y, G).
112

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 verific
a pentru (di)grafuri G cu
a(G) = 1, 2, consider
am n pasul inductiv c
a
() are loc pentru orice (di)graf G
si orice
X , Y V (G), cu a(G) < a(G). Pentru a
exclude cazurile banale, vom presupune c
a
X 6 Y , Y 6 X
si k = k(X, Y ; G) > 0.
Cazul 1. Exist
a Z S(X, Y ; G) astfel nct
|Z| = k, Z 6= 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)}.
113

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 fi XY separatoare). Rezult
a |VZY | < |V |. In mod
similar |VXZ | < |V |.
114

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
n GZY
si are cardinalul k; dac
a n unul din cele dou
a grafuri, ar exista o mult
ime T separatoare de cardinal < k,
atunci, utiliznd observat
ia (d), se contrazice definit
ia
lui k pentru G, X
si Y ).

Din ipoteza inductiv


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

115

Cazul 2. Oricare ar fi Z XY -separatoare


astfel nct |Z| = k avem Z = X sau Z = Y .
Presupunem, pentru precizarea notat
iilor, Z =
X. Cum X 6 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 .
Dac
a k(X, Y ; G) < k, atunci n G exist
a Z
XY -separatoare cu |Z | = k1 (se aplic
a, eventual, proprietatea (c)).
116

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 definit
ia lui k, rezult
a c
a x
/ Z , y
/ Z
si
|Z {x}| = |Z {y}| = k.
Din alegerea lui x
si y avem Z {x} 6= Y
si
Z {y} 6= 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.
117

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 fluxului maximsect


iunii minime, a
sa cum vom ar
ata n capitolul relativ la probleme de flux.
Forma echivalent
a n care a fost enunt
at
a
si
demonstrat
a init
ial de Menger (1927) teorema
1 este:
Teorem
a. 1. Fie G = (V, E) un (di)graf
si
s, t V , astfel nct s 6= 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.
118

Not
am c
a dou
a drumuri snt intern disjuncte
dac
a nu au vrfuri comune cu except
ia extremit
a
tilor.
Se observ
a c
a dac
a se consider
a X = NG(s)
si
+

(t) n cazul
(s)
si NG
Y = NG(t) (respectiv, NG
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.

119

Am definit un graf G p-conex (p N ) dac


a
G = Kp sau dac
a |G| > p
si G nu poate fi
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:
120

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

Definit
ie: Fie I
si S mult
imi finite 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).
121

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:
122

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)|
|rA(J)| |J| (ntruct rA este injectiv
a).
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,
123

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

124

O alt
a teorem
a celebr
a care poate fi 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 finit
a part
ial ordonat
a

( este o relat
ie de ordine pe P ).
Dac
a x, y P , spunem c
a x
si y 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
.
125

Demonstrat
ie. Fie a(P, ) cardinalul maxim al
unui antilant
al lui (P, ).
Ar
at
am prin induct
ie dup
a |P |, c
a exist
a a(P, )
lant
uri a c
aror reuniune este P (inegalitatea
invers
a este imediat
a).
Dca
a |P | = 1, afirmat
ia este trivial
a, deci 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 + )].
126

a1

a2

A
am

+
P

Se poate, deci, aplica ipoteza inductiv


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

L
lant

L
i
i
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 )i=1,m s
lant
uri a c
aror reuniune este P .
127

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

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

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

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


altfel, afirmat
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 .
130

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
ce cont
ine x1, x2 . . . , xp2, e1
si e2 ,

si lema este demonstrat


a.
131

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 suficient
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).
132

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)
fie ele Dvv1 , Dvv2 , . . . , Dvvp (numerotarea vrfurilor este n
ordinea ntlnirii lor ntro parcurgere fixat
a a circuitului
). Not
am, pentru fiecare 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.
133

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 afirmat
ii se pot formula
echivalent astfel:

(ii) G este conex


si e E(G), G e este

neconex.
(iii) G este f
ar
a circuite
si e E(G), G + e
are un circuit.
134

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 6= dac
a
si numai dac
a G este conex.
In adev
ar, dac
a TG 6= , atunci exist
a un arbore
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}
135

Graful T obt
inut este graf part
ial al lui G, este
conex (din ipotez
a, dup
a atribuirea din 1, a
sa
este
si din condit
ia lui while, T este conex dup
a
fiecare iterat
ie)
si n plus la oprirea 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 fi 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
}
136

Se observ
a c
a Tk este arbore k = 1, n

(inductiv, dac
a Tk este arbore, atunci din construct
ie
Tk+1 este conex
si nu are circuite)

si, n plus, se verific


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 fi 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 6= Kn pentru
n 3
si ad
augarea unei muchii la G produce
exact un circuit.
137

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 semnificat
ia c
a dac
a
v = E[i, 1]
si w = E[i, 2], atunci vw este muchia
i a grafului G ( i = 1, m ).
Vom presupune n plus, c
a primele dG(v0) muchii
din tabloul E satisfac E[i, 1] = v0 unde v0 V
este un vrf oarecare. Exemplu:
1

5
a

b
4

3
c

d
2

138

Un arbore part
ial T TG va fi identificat cu
mult
imea indicilor ce reprezint
a muchiile sale
n tabloul E (submult
ime a lui {1, . . . , m} de
cardinal n 1).
Pe tot parcursul gener
arii dispunem de un vector global T [1..n1] cu componente din mult
imea
1..m
si de un indicator i avnd semnificat
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.)
139

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

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 fi interpretat


a
si ca lista tuturor
arborilor etichetat
i distinct
i care se pot forma
cu cele 4 noduri (nu s-au mai trecut etichetele
nodurilor
si muchiilor, pentru decongestionarea
figurii; totu
si s-a marcat muchia T (1) pentru
a se evident
ia modul de funct
ionare a algoritmului).
141

Pentru implementarea eficient


a a testului dac
a
graful part
ial
D

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


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

{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 semnificat
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].
142

Fie v = E[j, 1]
si w = E[j, 2].
D

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
D

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

adic
a dac
a
si numai dac
a rad[v] 6= rad[w].
Vectorul rad trebuie ntret
inut pentru a avea
semnificat
ia dorit
a.
Acest lucru se obt
ine nlocuind n algoritmul
descris, instruct
iunile (vide) etichetate A
si B.
Astfel, A: se va nlocui cu secvent
a :

S ; x rad[v];
for u V do
if rad[u] = x then
{ S S {u} ;
rad[u] rad[w]
}
143

(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 eficient.
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)).
144

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
fiecare linie
si fiecare coloan
a este 0.
Teorem
a. 2. (Kirchoff-Trent) (Matrix Tree
Theorem) Dac
a G este un multigraf cu mult
imea
de 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 fixat
a
si cei care
nu cont
in aceea
si muchie.
145

Corolar.
In adev
ar,





TKn = nn2 (Cayley).

n1
1

L[Kn ] = .
.
1

1
...
...
...

. . . 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 figura 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|.
146

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},
P
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:
147

- se alege Tsk unul din arborii familiei T k .


- dintre toate muchiile lui G cu o extremitate n
Tsk
si cealalt
a n V V (Tsk ) se alege una de cost
minim, e = vsvj unde vj V (Tjk ) j 6= s.

- T k+1 = (T k \ {Tsk , Tjk }) T unde T este ar-

aug
am
borele obt
inut din Tsk
si Tjk la care ad
muchia e.
vs
Tsk

v
j*
Tk
j*

Se verific
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
e nu este posibil
a, atunci rezult
a c
a G nu este
conex
si deci problema (P 1) nu are solut
ie.
148

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
1} T arbore part
ial de cost minim al lui G,
k

astfel nct E(T k ) = nk


i=1 E(Ti ) E(T ).
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, afirmat
ia este trivial adev
arat
a:
E(T 0) =
si din conexiunea grafului G, TG
este nevid
a deci exist
a T solut
ie a problemei
P 1.
149

Dac
a afirmat
ia este adev
arat
a pentru 0 k
n 2, atunci avem E(T k ) E(T ) (T arbore
part
ial de cost minim)
si
E(T k+1) = E(T K ) {e}.
Dac
a e E(T ), atunci, evident, E(T k+1)
E(T )
si deci afirmat
ia are loc pentru k + 1.
Presupunem, deci, c
a e
/ E(T ). Atunci T +
{e} cont
ine exact un circuit C ce trece prin
/ V (Tsk ) rezult
muchia e = vsvj . Cum vj
a
c
a C va cont
ine o muchie e1 6= e cu o extremitate n V (Tsk )
si cealalt
a n V \ V (Tsk ).
Din alegerea muchiei e, avem c(e ) c(e1)
si
e1 E(T ) \ E(T k ).

C
vs
v
j*

Tsk
T*

150

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

Algoritmul lui Prim(1957) (implementarea


este datorat
a lui Dijkstra, 1961).
Arborele Tsk va fi ntotdeauna arborele cu
cele mai multe vrfuri dintre arborii familiei
curente.
Rezult
a deci, c
a la fiecare 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 semnificat
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:
152

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 6= 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]).
153

Complexitatea algoritmului este O(n1)+O(n


2) + . . . + O(1) = O(n2) dat
a de operat
iile din
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
fiecare 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 fi descris, astfel:
154

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 hT {ei }iG nu are circuite then
T T {ei } ;
i++
}
Evident, pasul 1 necesit
a O(m log n) operat
ii.
Pentru realizarea eficient
a a testului din pasul
2 va fi necesar s
a reprezent
am la fiecare pas k
(din metoda general
a ) V (T1k ), V (T2k ), . . . , V (Tnk )

si s
a test
am dac
a muchia ei curent
a are ambele
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.
155

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
familiilor T k (din metoda general
a) vom folosi
o procedur
a union(v, w) cu semnificat
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
{ fie ei = vw;
if f ind(v) 6= f ind(w) then
{ union(v, w);
T T {ei }
};
i++
}
156

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 semnificat
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]
157

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 eficient dect
cel al lui Prim.
158

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;
Modific
am
si pasul 2 al algoritmului astfel:
2. while i m do
{ fie ei = vw;
x : f ind(v); y f ind(w);
if x 6= y then
{ union(x, y);
T T {ei }
};
i++
}
159

Deci, procedura union va fi 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.
160

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 fie de complexitate
(n2) chiar dac
a graful este rar.
161

Deficient
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 fi 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 pred[v] 1;

si modific
am procedura union astfel nct s
a
asigur
am ndeplinirea condit
iei
pred[v] < 0 v este r
ad
acin
a a unui arbore

si pred[v] este cardinalul mult


imii memorate n el.
162

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 ).
163

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 modific
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 modific
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 verifi
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).
164

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 fi 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 fiecare 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
165

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, utiliznd 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).
166

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

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 6= G nu are vrfuri izolate (atunci,
m
acar E este o acoperire).
168

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 }
}
169

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 extremitate din S(M ). Mult
imea de muchii F astfel 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 ,
170

atunci dM (v ) = 1
si deci n pasul urm
ator
dM (v ) va fi 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 final M
(dac
a vrful v ar fi incident cu nc
a o muchie,
atunci din acoperirea init
ial
a F se poate nl
atura
muchia e
si s
a obt
inem tot o acoperire, contrazicnd alegerea lui F ).
Deci dac
a M este cuplajul construit de algoritm
avem: |F | |M | = |E(M )| = n 2|M |, adic
a
|F | = n |M | n |M |.
Din (a)
si (b) rezult
a concluzia teoremei.
Demonstrat
ia f
acut
a arat
a, chiar mai mult, c
a
problemele (P1)
si (P2) snt polinomial echivalente, cuplajul M
si acoperirea F construite fiind
si ele solut
ii optime respectiv pentru cele
dou
a probleme.
171

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 fixat
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.
172

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

max{emx | Bx en, x 0}

se constat
a c
a solut
iile optime pot s
a nu fie
cu componente ntregi
si, chiar mai mult, valoarea maxim
a determinat
a de (LP1) s
a fie 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
1 > n.
n+2

1/2

1/2

1/2

1/2

1/2

173

Rezult
a c
a existent
a circuitelor impare n graful
G poate provoca dificult
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).
174

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)
175

Revenind la problema (P1) cu G un graf oarecare


si observnd c
a (G) 1
a
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 fiecare 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|.

176

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 suficient
a, a
sa cum rezult
a din urm
atoarea
teorem
a.
Teorem
a. 5. (Tutte, 1947) Un graf G =
(V, E) are un cuplaj perfect dac
a
si numai dac
a
(T )

q(G S) |S|

S V.

Demonstrat
ie. Ar
at
am, prin induct
ie dup
an=
|V |, c
a, dac
a G = (V, E) satisface (T), atunci
G are un cuplaj perfect.
177

Cum teorema se verific


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 fi S
astfel nct S0 S, S0 6= 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 verific
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
fi considerat S0.
178

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
fiecare 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 fiecare subgraf
[Ci vi]G.
179

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


In adev
ar, cum m > 0, rezult
a c
a |Di| < n
si
deci pentru a dovedi existent
a cuplajului perfect n [Di]G este suficient s
a dovedim ( din
ipoteza inductiv
a) c
a G = [Di]G satisface (T).
Fie S Di. Dac
a q(G S) > |S| atunci q(G
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).
180

s1

C1

s2

C2

s3
C3

sm

Cm

Acest graf are un cuplaj perfect. In adev


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

a a unui cuplaj 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 definit
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.
181

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}
cu S0 = {s1, . . . , sm}
si vi Ci i = 1, m.
c) Pentru orice i {1, . . . , m} graful G = [Ci
vi]G are un cuplaj perfect.
Folosind ipoteza inductiv
a, afirmat
ia va rezulta
dac
a dovedim c
a G satisface (T).
Fie S Ci vi. Dac
a q(G S) > |S| atunci
cum q(G S) + |S| 0 (mod 2), rezult
a c
a
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.
182

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 6= .
183

S
a observ
am c
a, ntruct
definit
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 simplificarea 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
184

Observat
ie: Din definit
ie, rezult
a c
a dac
a P
este un drum de cre
stere relativ la cuplajul M
atunci |P M | = |P M | + 1.
Teorem
a. 6. (Berge 1959) Un cuplaj M
este de cardinal maxim n graful G dac
a
si 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 fi 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)
185

Reciproc, dac
a M este cuplaj n G
si M nu
admite drumuri de cre
stere, consider
am M un
cuplaj de cardinal maxim. Vom ar
ata c
a |M | =
|M |, ceea ce demonstreaz
a teorema.
Fie G graful part
ial al lui G, G = (V, M M ).
si deci componenEvident, dG (v) 2 v V
tele 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

Situat
ia b) nu poate avea loc, pentru c
a reprezint
a un
drum de cre
stere relativ la M care-i cuplaj de cardinal
maxim. Situat
ia c) nu are loc, ntruct M nu admite
drumuri de cre
stere.
186

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

|M M | =

X
C

mC (M ) =

X
C

mC (M ) = |M M |

(suma se face dup


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

La fiecare iterat
ie a ciclului while, cuplajul curent cre
ste
(cardinalul s
au se m
are
ste cu o unitate)
si deci n cel
mult

n
2

iterat
ii se obt
ine un cuplaj de cardinal maxim,

care nu va admite drumuri de cre


stere.
187

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 fie 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 fiecare dat
a un drum de cre
stere
cu num
ar minim de muchii (printre toate
drumurile de cre
stere posibile). Aceast
a idee
st
a la baza celui mai eficient algoritm, cunoscut, pentru rezolvarea problemei.
188

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.
Definim pentru fiecare 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);
(Ci) = 1 dac
a
si numai dac
a Ci este un drum
de cre
stere relativ la M .
In plus,
X

i=1,p

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

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

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 2r/(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 2r/(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 |.
190

Demonstrat
ie: Fie N = (M P )P .
Avem M N = P P
si |N | = |M | + 2.
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|;
|Pi| = |Pi+1| Pi
si Pi+1 snt disjuncte ca
vrfuri.
b) i < j < (G) 1
|Pi| = |Pj |, implic
a Pi
si
Pj snt disjuncte ca vrfuri.
191

Demonstrt
ie: a) Considernd P = Pi
si P =
Pi+1 n lema 3 se obt
ine |Pi+1| |Pi| + 2|Pi
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 | 2r/(s r) + 1 = 2s s/(s

s s) + 1 < 2 s + 1.
Rezult
a c
a oricare ar fi 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

i, deci n total avem


s + 1 ntregi distinct

cel mult 2 s + 2 ntregi distinct


i.
192

Dac
a algoritmul () se descompune n etape,
astfel nct la fiecare 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
q 7, rezult
nu va dep
a
si 2 (G) + 2.
Rezult
a c
a urm
atorul algoritm pentru aflarea
unui cuplaj maxim, ntr-un graf cu m
acar o
muchie:
0.
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 = .
193


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 aflarea
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 fiecare
astfel de vrf, se incepe construct
ia n paralel,
de drumuri alternate.
194

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

195

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

c(ij)
0

dac
a ij E
dac
a ij
/E

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


196

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

(i)
(ii)

jV

xji

jV

ij V V

xij = 0

i V {s, t}.

Observat
ii
10 Dac
a ij E atunci xij se nume
ste fluxul
(transportat)pe arcul ij.
Evident, condit
ia (i) cere ca fluxul pe orice
arc s
a fie nenegativ
si subcapacitar, iar condit
ia
(ii) (legea de conservare a fluxului) cere ca
suma fluxurilor pe arcele care intr
a n vrful
i s
a fie egal
a cu suma fluxurilor pe arcele
care ies din vrful i.
Se putea cere ca fluxul s
a fie definit numai pe arcele
ret
elei, dar cu convent
ia f
acut
a la extensia funct
iei de
capacitate, se observ
a c
a pentru perechile (i, j) care nu
snt arce n ret
ea condit
ia (i) impune ca fluxul s
a fie 0,

si evident cele dou


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

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

P
P
P
0 = i6=s,t jV xji jV xij =
P

P
P
P
x

i6=s,t j6=s,t xij +


i6=s,t j6=s,t ji

i6=s,t xsi +

P

i xis

jV

i6=s,t xti

i xsi

xjt

jV

P

P
i6=s,t xis i6=s,t xit =

i xit

xtj =

X

jV

a
i xti , adic

xjs

jV

xsj .

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

jV

xjt

xtj .

jV

v(x) se poate interpreta ca fiind fluxul net care


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

In orice ret
ea R = (G, s, t, c) exist
a un flux,
fluxul nul xij = 0 ij, de valoare 0.
Problema fluxului maxim:
Dat
a R = (G, s, t, c) o ret
ea, s
a se determine
un flux de valoare maxim
a.
Observat
ii: 10. Problema se poate formula,
evident, ca o problem
a de programare liniar
a:
max v
P
P
x j xij = 0, i 6= s, t
P
Pj ji
x = v
x

Pj js P 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 dificult
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 specifice de rezolvare.
199

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 flux n R.
Se nume
ste C-drum (n R relativ la fluxul x)
un drum D n G cu proprietatea c
a ij E(D) :
xij < cij dac
a ij este arc direct,
xji > 0 dac
a ij este arc invers.
200

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 fluxul:
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
45(x54 = 1 > 0). Capacitatea rezidual
a a lui D este
r(D) = min(min(2, 1, 1), 1) = 1.
201

Definit
ie. Se nume
ste drum de cre
stere a
fluxului x, n ret
eaua R = (G, s, t, c), un C-drum
de la s la t.
Lem
a. 1. Dac
a D este un drum de cre
stere
a fluxului x n ret
eaua R = (G, s, t, c), atunci
N
x1 = x r(D) definit prin

xij
x1
ij = xij + r(D)

xij r(D)

/ E(D)
dac
a ij

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. Definit
ia lui r(D) implic
a
ndeplinirea de c
atre x1, a condit
iilor (i).
Condit
iile (ii) verificate de x, nu snt afectate
pentru niciun vrf i
/ V (D).
Dac
a i 6= s, t este un vrf al drumului D, i este
incident cu exact dou
a arce ale lui D,fie ele li

si ik.
Avem urm
atoarele cazuri posibile:
202

a) li
si ik arce directe:
P 1 P 1
P
P
1 x1 =
x

x
=
x

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

x
=
x

ij
ji
j
j6
=
l,k
j
j
ij
li
ki
P
P ji
x j xij + xli + r(D) + xki r(D) =
P
Pj6=l,k ji
x

j xij = 0.
j ji
c) li invers, ik direct: similar cu b).
d) li invers, ik invers: similar cu a).
Valoarea fluxului x1 se obt
ine considernd lt
unicul arc al lui D incident cu t:
Dac
a lt direct atunci
P
P 1
P
P
1 =
v(x1) = j x1

x
=
x

x
+x
jt
tj
j
j6
=
l
j
tj
lt
P jt
P
j6=l xjt j xtj + xlt + r(D) = v(x) + r(D).
Daca lt invers atunci
P
P
P 1
P
xtj x1
x

x
=

v(x1) = j x1
jt
j6
=
l
j
j
tj
jt
tl =
P
P
j xjt j6=l xtj (xtl r(D)) = v(x) + r(D).
Deci lema are loc.
203

Pentru exemplul anterior, fluxul 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 justific
a denumirea de drum de cre
stere, precum
si cea de
capacitate rezidual
a.
20 Din definit
ie, dac
a D este drum de cre
stere,
N
r(D) > 0
si deci avem v(x r(D)) > v(x).
Rezult
a c
a
dac
a x admite un drum de cre
stere atunci
x nu este flux de valoare maxim
a.
204

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 ) =

X X

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) =

X X

iS jT

(xij xji).

(valoarea fluxului este egal


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

t
+
T

205

Demonstrat
ie:
P
P
v(x) = ( j xjt j xtj ) 0
P

= (
=

P
P
P
P
j xjs j xsj ) iS,i6=s( j xji j xij )
P

iS ( j xij

P
j xji)

iS

jS (xij xji) +

iS

jT (xij xji).

P
P
iS 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:
P
P
(lema 2)
v(x) = iS jT (xij xji)
P
P
iS jT (cij xji)

P
P
iS jT cij

(xij cij )

(xji 0).
206

Observat
ii:
si (S, T )
1) Dac
a x este un flux n R = (G, s, t, c)
o sect
iune astfel nct v(x) = c(S, T ), atunci x
flux n R v(x) c(S, T ) = v(x), deci x este flux
de valoare maxim
a.
2) In exemplul dat, x1 este flux 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, fie x un flux n R care nu admite
drumuri de cre
stere. Consider
am S = {i | i
V D C-drum n R de la s la i}.
Evident s S (exist
a D de lungime 0)
si t
/S
(nu exist
a C-drumuri de la s la t). Fie T =
V S. Rezult
a c
a (S,T) este o sect
iune.
207

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).
P

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


P
P
si prin urxji) = iS jT (cij 0) = c(S, T )
mare x este flux 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
N
{ xi+1 xi r(Pi);
i++
}
208

Se observ
a c
a xi are componente ntregi
este un invariant al algoritmului (din definit
ia
lui r(Pi ), dac
a toate capacit
a
tile snt ntregi,
rezult
a c
a r(Pi ) este ntreg n ipoteza c
a xi e
ntreg)
si c
a la fiecare iterat
ie a pasului 2 valoarea fluxului curent cre
ste cu m
acar o unitate,
deci pasul 2 se repet
a de cel mult c({s}, V
{s}) Z+ ori. Fluxul final obt
inut este, conform teoremei 1, de valoare maxim
a.
Observat
ie. Algoritmul, descris mai sus, este
finit
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 flux init
ial x0 (x0 exist
a
ntotdeauna, de exemplu x0 = 0), construie
ste
ntr-un num
ar finit de pa
si un flux x, care nu
admite drumuri de cre
stere, atunci sect
iunea
construit
a n demonstrat
ia teoremei 1 satisface
mpreun
a cu x enunt
ul teoremei.
209

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
flux x de valoare maxim
a
si apoi s
a-i aplic
am
construct
ia din demonstrat
ia teoremei 1;
existent
a fluxului x maxim rezult
a imediat, considernd transcrierea problemei fluxului maxim
ca o problem
a de programare liniar
a; am preferat
demonstrat
ia de mai sus care (de
si va fi 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 finit
a,
pe cnd mult
imea fluxurilor din ret
ea este infinit
a.
210

Algoritmul lui Ford


si Fulkerson pentru aflarea
unui flux de valoare maxim
a
Se va folosi un procedeu de etichetare a vrfurilor
ret
elei, n vederea depist
arii drumurilor de cre
stere
a fluxului curent x. Dac
a nu exist
a drumuri de
cre
stere, fluxul va fi de valoare maxim
a.
Eticheta atribuit
a unui vrf j V are trei componente (e1, e2, e3) unde e1 V {0} ; e2
{direct, invers} ; e3 R+
si au urmatoarea
semnificat
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:
211

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 semnificat
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 fluxului 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.
N
Modificarea fluxului x r(P ) se execut
a n acest
mers napoi, tot n O(n).
Pentru noul flux se reia procedura de etichetare.
212

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

Descrierea algoritmului

1: Se alege x = (xij ) flux init


ial (de ex. fluxul nul);
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
{ modific
a fluxul pe drumul dat de etichete;

sterge toate etichetele;


eticheteaz
a s cu (0, ., )
}
}
3: S {i|i V, i are etichet
a}
T V S
x este flux de valoare maxim
a
(S, T ) este sect
iune de capacitate minim
a.
213

Complexitatea algoritmului:
Pentru fiecare cre
stere a fluxului, 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
fi necesare cel mult v (v = valoarea fluxului
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
influent
eaz
a comportarea sa, acestea neconstituind o m
asur
a a volumului datelor de intrare.
Exemplu:
214

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 fluxul nul) s
a fie P1, P2, P1, P2, . . . unde
P1 = 1, 2, 3, 4, P2 = 1, 3, 2, 4 atunci, fiecare
cre
stere a fluxului m
are
ste cu 1 valoarea fluxului curent
si, deci, vor fi necesare 2M cre
steri,
ceea ce este inadmisibil pentru M Z+ foarte
mari.
20. Aceste dezavantaje pot fi 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).
215

Modificarea lui Edmonds


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

sirul de fluxuri xk n R astfel:


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

Vom dovedi c
a
sirul de fluxuri astfel construit
este finit.
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 fluxul xk .
ik = lungimea minim
a a unui C-drum de la i la t n R
relativ la fluxul xk .

216

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
n cel
de cre
stere, are cel mult mn
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 flux n ret
eaua R, cu capacitatea
rezidual
a r(P ), vom numi arc critic n P orice
arc e P cu r(e) = r(P ).
N
In x r(P ), fluxul pe arcele critice devine sau
egal cu capacitatea (pentru arcele directe) sau
egal cu 0 (pentru arcele inverse).
217

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
fi folosit n aceea
si direct
ie ca n Pk . Prima
oar
a cnd fluxul pe arcul ij se va modifica, el
va apare ntr-un drum de cre
stere Pl cu l > k
relativ la xl
si va fi folosit n direct
ie opus
a.
Avem, deci, dou
a cazuri:
i) ij direct n Pk. Atunci jk = ik + 1. In Pl ij
va fi 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.
218

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


Pl ij va fi 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 fixat nu poate fi 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 flux care nu admite drumuri de
cre
stere.
219

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 flux 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 fie P un drum minim de cre
stere. Presupunem c
a lg(P ) > lg(P ).
220

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+l1 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 fiecare
cre
stere a fluxului , si din teorema 4 obt
inem
221

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 modificat pentru obt
inerea unui flux de
valoare maxim
a n ret
eaua de mai jos (n care
este precizat un flux init
ial de valoare 55 ).

222

Algoritmi de tip preflux.


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

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

(i)
(ii)

i 6= s ei =

Num
arul ei
din vrful i.

j:jiE

ij E
xji

j:ijE

xij 0.

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 fi numit fluxul pe arcul ij.
223

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

224

Definit
ie: Dac
a x este un preflux n R
si ij E,
atunci capacitatea rezidual
a a arcului ij este
rij = cij xij + xji
(reprezentnd fluxul adit
ional ce poate fi 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 flux de la i la j nseamn
a s
a cre
stem
fluxul pe arcul ij sau s
a mic
sor
am fluxul pe
arcul ji.
Definit
ie: Se nume
ste C-drum n R relativ la
prefluxul x, un drum al lui G ale c
arui arce au
capacitatea rezidual
a pozitiv
a.
225

Definit
ie: Se nume
ste funct
ie de distant

a n R
relativ la prefluxul x, o funct
ie d : V Z+ care
satisface
(D1)

d(t) = 0
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 prefluxul x n R de la i la t atunci d(i) lg(P )
(arcele unui C-drum au capacitate rezidual
a
pozitiv
a
si se aplic
a (D2)).
Rezult
a c
a d(i) i (lungimea minim
a a unui
C-drum de la i la t).
226

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 preflux 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 preflux 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
}
227

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 verificat
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 fie n).
Dac
a, n algoritmii de tip preflux vom p
astra
acest invariant, atunci cnd x va deveni flux,
va rezulta c
a nu admite drumuri de cre
stere
si
deci x va fi de valoare maxim
a.
228

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 flux de la i la j

Dac
a = rij avem o pompare saturat
a, altminteri 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}
}
229

Schema general
a a unui algoritm de tip preflux
este:
{

init
ializare;
while noduri active n R do
{ selecteaz
a un nod activ i;
if arce admisibile n A(i)
then pompeaz
a(i)
else reetichetare(i)
}

Lem
a. 6.
Algoritmul de tip preflux, de
mai sus, are ca invariant d este funct
ie de
distant

a relativ la prefluxul x. La fiecare


apel al lui reetichetare(i), d(i) cre
ste strict.
Demonstrat
ie: Procedura init
ializare construie
ste,
evident, o funct
ie de distant

a relativ la prefluxul init


ial.
230

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

a relativ la prefluxul curent


x, atunci:
a) dac
a se execut
a pompare(i), singura pereche
ce poate viola D2 este d(i)
si d(j). Cum arcul
ij a fost ales admisibil, avem d(i) = d(j) + 1.
Dup
a pompare, arcul ji poate avea rji > 0
(f
ar
a ca nainte s
a fi fost), dar condit
ia d(j)
d(i) + 1 este, evident, satisf
acut
a;
b) dac
a se execut
a reetichetare(i), modificarea
lui d(i) se face astfel 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 finitudinea algoritmului va trebui s
a ne
asigur
am c
a , dac
a, n timpul execut
iei, avem
un nod i activ, atunci n A(i) exist
a m
acar un
arc ij cu 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.
231

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

232

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 modificare 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 fi supuse etichet
arii poate fi etichetat de
cel mult 2n 1 ori, avnd n vedere corolarul 1,
lema 6
si etichetarea init
ial
a.
233

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 flux pn
a cnd
nu se va trimite flux pe arcul ji situat
ie n care
vom avea d(j) = d(i)+1 d(i)+1 = d(j)+2;
aceast
a schimbare de flux 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 modific
a
pe parcurs, rezult
a c
a fluxul obt
inut este f
ar
a
drumuri de cre
stere.
234

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

si c
a maxijE (1 + cij ) = U . Not
am log2U =
K. Ideia algoritmului:
Se vor executa K + 1 etape. Pentru fiecare
etap
a p, cu p lund succesiv valorile K, K
1, . . . , 1, 0 vor fi 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 fi invariant al algoritmului, dup
a K+1 etape,
excesele nodurilor vor fi 1
2.
235

Dac
a, toate transform
arile datelor vor p
astra
integritatea exceselor, va rezulta c
a excesul
oric
arui nod este 0,
si, deci, dispunem de un
flux de valoare maxim
a (datorit
a propriet
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 fi pe tot parcursul etapei, primul nod din
L(p). Va rezulta c
a, dac
a se face o pompare
pe arcul ij admisibil, cum d(j) = d(i) 1
si
i este primul din L(p), vom avea ei > 2p1
si
ej 2p1. Dac
a, n plus, se va limita , fluxul
trimis de la i la j, n procedura de pompare
la = min(ei , rij , 2p ej ),
236

atunci, cum 2p ej 2p1 va rezulta c


a orice
pompare nesaturat
a trimite cel put
in 2p1
unit
a
ti de flux. Dup
a pompare, excesul din
nodul j (singurul nod al c
arui exces poate cre
ste)
va fi 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 eficient
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:
- fiecare 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.
237

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) 6= do
{ fie 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 flux de la i la j;

sterge i din L(p);


if ei 2 then

a j ca prim nod n L(p)


if ej > 2 then adaug
}
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
}
}
}
238

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
F (p) =

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

P
2p(2n)
La nceputul etapei p, F (p) < iV
= 2n2.
2p
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 fiecare i, cre
sterea lui d(i) pe parcursul

ntregului algoritm este < 2n rezult


a c
a F va cre
ste pn
a
la cel mult valoarea 4n2, la sfr
situl etapei p.
239

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 flux 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
1.
2
F (p) 2p = F (p) 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 ).
240

2. Aplicat
ii (combinatorii) ale problemei
fluxului 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+ definit
a prin
c(e) =

dac
a e E1 E2
dac
a e E3

(vezi figura urm


atoare).
241

V
2

V
1
++

1
1

++
1

++

1
1

++

1
t

1
1
1

1
++

Dac
a x = (xij ) este un flux 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 fiecare astfel de arc ij (i V1, j V2) se consider
a fluxul
xij egal cu 1
si de asemenea xsi = xjt = 1,
si
lund fluxul x = 0 pe orice alt arc, atunci fluxul
construit are valoarea |M |.
Rezult
a c
a rezolvnd problema fluxului maxim
pe ret
eaua R se determin
a (pornind de la fluxul
nul) n O(nm + n2 log n) un cuplaj de cardinal
maxim n graful bipartit G.
242

Fie (S, T ) sect


iunea de capacitate minim
a ce
se poate construi, din fluxul maxim obt
inut, n
O(m) operat
ii.
Vom avea, c(S, T ) = (G), din teorema fluxului
maxim-sect
iunii minime.
V
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),
iar X = S1 T2 este mult
ime stabil
a n graful
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).
243

B. Recunoa
sterea secvent
elor digrafice.

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)
+

(i)
=
d
(i)
=
d

s
i
d

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

Evident, va trebui ca 0 d+
n1
si 0 d
i
i
P
P

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

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


,
d
i
i 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 6= j {1, . . . , n},
si introducerea arcelor si,
i {1, . . . , n}
si j t, j {1, . . . , n}.
Funct
ia de capacitate va fi c(si) = d+
i i =
) = 1.
1, n, c(j t) = d
j
=
1,
n

s
i
c(ij
j
244

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

fiecare vrf j vor intra exact dj arce pe care fluxul este


1, de forma ij .
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
(d+
si (d
a acest digraf exist
a,
i )i=1,n
i )i=1,n . Reciproc, dac
atunci procednd invers ca n construct
ia anterioar
a, se
obt
ine un flux ntreg n ret
eaua R de valoare m (deci
maxim). Rezult
a c
a recunoa
sterea secvent
elor digrafice
(
si construct
ia digrafului n cazul r
aspunsului afirmativ)
se poate face n O(nm + n2 log n) = O(n3).
245

C. Determinarea nr. de muchie-conexiune


al unui graf
Fie G = (V, E) un graf. Pentru s, t V, s 6= t,

definim:
-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 fiecare 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 flux ntreg de valoare maxim
a n
R = (G1, s, t, c). Fluxul x0 se poate scrie ca
o sum
a de v(x0) fluxuri xk ntregi de valoare 1,
nlocuind, eventual, fluxul pe unele circuite cu
0.
246

t
t

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

Fiecare astfel de flux xk induce un drum de la


s la t n G1 (considernd arcele pe care fluxul
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
flux de la s la t n R de valoare egal
a cu num
arul
acestor drumuri.
Fie (S, T ) o sect
iune de capacitate minim
a;
avem c(S, T ) = v(x0), din teorema fluxului maximsect
iunii minime.

247

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)
s6=t

ce(s, t).

()

248

Rezult
a c
a, pentru a afla (G), rezolv
am cele
n(n1)
probleme de flux, descrise n demonstrat
ia
2
teoremei.
Totu
si, s
a observ
am c
a pentru o pereche fixat
a
s
si t avem: dac
a (S, T ) este sect
iunea de 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 fix
am un vrf s0
si rezolv
am
n 1 probleme de flux 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 fie 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.
249

D. Determinarea num
arului de conexiune
al unui graf.
Dac
a G = (V, E) este un graf
si
s, t V, s 6= 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
k(G) =

n 1

min c(s, t)

s,tV

stE
/

dac
a G = Kn
dac
a G=
6 Kn

()

250

Vom ar
ata c
a egalitatea (*) rezult
a
si din teorema fluxului maxim-sect
iunii minime pe o ret
ea
convenabil aleas
a.
Fie G1 = (V (G1), E(G1)) digraful construit din
G astfel:
-v V consider
am av , bv V (G1)
si av bv E(G1 );
- 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.

Definim c : E(G1) Z+ prin


c(e) =

dac
a e = av bv
altfel.
251

Consider
am ret
eaua R = (G1, bs, at , c).
Fie x0 un flux ntreg de la bs la at n R de
valoare maxim
a.
In vrfurile bv (v V ) intr
a exact un arc de capacitate 1
si din vrfurile av (v V ) pleac
a exact
un arc de capacitate 1. Rezult
a c
a, pentru ca
s
a fie satisf
acut
a legea de conservare a fluxului,
x0
ij E(G1).
ij {0, 1}
Aceasta nseamn
a c
a x0 se poate descompune
n v(x0) fluxuri xk , fiecare de valoare 1,
si astfel
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 flux, rezult
a c
a avem
:
v(x0) = p(s, t).
252

Fie (S, T ) o sect


iune n R astfel nct v(x0) =
c(S, T ).
Cum v(x0) este finit, rezult
a c
a i S, j T
cu ij E(G1),avem c(ij) < , deci c(ij) = 1,
adic
a u V astfel nct i = au
si j = bu.
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 fi suficient s
a determin
am
minimul din (**) prin rezolvarea a |E(G)| probleme de flux, unde G este graful complementar
al lui G.
Deci algoritmul va avea complexitatea
 n(n 1)

O (

m)(nm + n log n)) .


253

O simpl
a observat
ie ne conduce la un algoritm
mai eficient. Evident,
1 (n min
k(G) minvV dG(v) = n
vV dG (v))
P
2m .
1(
d
(v))
=
vV G
n
n
Dac
a A0 este o mult
ime de articulat
ie n G cu
|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 flux cu
s0 V
si t0 V va rezulta c
a p(s0, t0) =
valoarea fluxului maxim = k(G).
Vom fi siguri c
a depist
am o astfel de pereche,
dac
a proced
am astfel:
consider
am l = 2m
rfuri oaren +1 , alegem l v
care din G,
si pentru fiecare 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 fi O(m(nm + n2 log n)).
254

3. Fluxuri de cost minim

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


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

aij xij .

i,j

Problema fluxului de cost minim


Dat
a R o ret
ea, v R+
si a : E R funct
ie de
cost, s
a se determine x0 flux n R astfel nct
a(x0) = min{a(x) | x flux n R, v(x) = v}.
Observ
am c
a, dac
a v nu dep
a
se
ste valoarea
fluxului maxim n ret
eaua R, atunci problema
are ntotdeauna solut
ii, a(x) fiind liniar
a, iar
mult
imea fluxurilor de valoare dat
a v fiind m
argi
nit
a
si nchis
a n Rm.
255

Exemple.
10. Se dispune de n lucr
atori
si n lucr
ari. Costul atribuirii lucr
atorului i la lucrarea j este
aij (i, j {1, . . . , n}). S
a se atribuie fiecare
dintre cele n lucr
ari la cte un lucr
ator,
astfel nct costul total al atribuirii s
a fie
minim. (Problema simpl
a a atribuirii).
Consider
am ret
eaua descris
a mai jos, unde pe
fiecare arc este trecut
a mai 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 flux ntreg de valoare n


si de cost
minim, reprezint
a solut
ia problemei.
256

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
P
P
d

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

In acest caz, un flux de cost minim


si de valP
eaua urm
atoare, reoare v = i=1,m ci n ret
zolv
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

258

Definit
ie. Fie x un flux n R = (G, s, t, c)
si
a : E R o funct
ie de cost.
Dac
a P este un C-drum n R relativ la fluxul
x, atunci costul drumului P se define
ste
a(P ) =

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 definit
ia unui C-drum).
Observat
ii: 10 Din definit
ia dat
a, rezult
a c
a
dac
a P este drum de cre
stere relativ la fluxul
N
x, atunci x1 = x r(P ) este un flux de valoare
v(x1) = v(x)+r(P )
si de cost a(x)+r(P ) a(P ).
20 Dac
a C este un C-drum nchis relativ la
N
1
x, atunci x = x r(C) este un flux 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 flux de aceea
si
valoare ca
si x, dar de cost strict mai mic.
259

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 flux de valoare v, care nu
admite C- drumuri nchise de cost negativ.
Fie x un flux de valoare v, de cost minim
(exist
a !) astfel nct
(x, x) = min{(x, x ) | x flux de val. v
si cost minim}

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

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

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 finit, 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.
Modificnd fluxul x cu (C ) pe C , unde

(C ) = min

xkj xkj ,

xjk xjk

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

min
direct n

kj

261

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

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 flux
de cost minim rezult
a c
a E(C) E(P0) 6= .
Dac
a ij E(C) E(P0), atunci va rezulta c
a
P0 C ij cont
ine un drum de cre
stere relativ
la x de cost mai mic dect P0.
262

Un drum de cre
stere de cost minim poate fi depistat cu ajutorul algoritmilor de drum minim.
Dac
a x este un flux 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 fluxul 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 fluxului de cost minim, obt
inut prin
combinarea mai multor algoritmi clasici
(Klein,Busacker,Gowan, etc.).
263

Algoritm generic de rezolvare a problemei fluxului


de cost minim
{
0: Se consider
a x = (xij ) un flux cu valoarea v v;
{x poate fi fluxul nul sau un flux y determinat
cu ajutorul algoritmului de flux 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;
modific
a fluxul 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
N P de cost minim;
xx
min(r(P ), v v(x))
}
}
Complexitatea pasului 2 este O(n3v), dac
a se pleac
a de
la fluxul nul. Se poate dovedi c
a pasul 1 se poate implementa astfel ca num
arul iterat
iilor s
a fie O(nm2logn).

264

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
problema de decizie P2 : I2 {da, nu}
si not
am
aceasta prin P1 P2, dac
a exist
a o funct
ie
: 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
timp polinomial n raport cu |i1|, o instant

a
i2 I2 cu proprietatea c
a P1(i1) = da dac
a
si
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 fi rezolvat
a eficient
cu ajutorul unui oracol care rezolv
a a doua problem
a.
265

Vom considera cunoscut faptul c


a SAT 3SAT
unde

SAT
Instant

a: U = {u1 , . . . , un} o mult


ime finit
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


fiecare clauz
a Ci are exact trei literali (ki = 3),
un literal vij fiind, a
sa cum este descris mai
sus, o variabil
a sau negat
ia ei.
Problema SAT este celebr
a datorit
a teoremei
lui Cook (1971): SAT este N P complet
a.
266

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

Graful G va fi 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
Consider
am V (G) = n
si
i=1V (Ti ) j=1V (Zj )
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.
268

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

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

A
F

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

Atunci, j = 1, m avem t(Cj ) = A (


si deci
t(C) = A).
In adev
ar, j = 1, m dac
a Cj = vj1 vj2 vj3
si
S V (Zj ) = ajk (k {1, 2, 3}) atunci, deoarece
ajk vjk E rezult
a c
a vjk
/ S.
Dac
a vjk = u, atunci u
/ S deci u S
si din
definit
ia lui t avem t(u) = A, adic
a t(vjk ) = A
ceea ce implic
a t(Cj ) = A.
Dac
a vjk = u , atunci u
/ S implic
a u
S, deci t(u) = A, adic
a t(vjk ) = A, ceea ce
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.
270

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 .

Atunci, j = 1, m, cum t(Cj ) = A, rezult


a
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.
271

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
/ S 1, contradict
ie.
ceea ce implic
a u
Cu aceasta teorema este complet demonstrat
a.
S
a observ
am c
a reducerea lui SAT la SM este
complet similar
a, singura deosebire fiind c
a grafurile Zi sunt grafuri complete cu ki v
arfuri.
272

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: fixnd p = 3
n enunt
ul lui COL, reducerea polinomial
a a lui
3SAT este nc
a posibil
a !

273

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}) 6= {a} atunci c poate fi extins
a
la o 3-colorare c a lui H cu c(v4) 6= a.
Demonstrat
ia lemei se poate face examinnd
lista 3-color
arilor lui H.
274

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:
275

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

j
1

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

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 fi:
b

u1

u1

u2

h1

a1

h2

u3

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

Definim mai nti c(ui)


si c(ui) i = 1, n astfel:
a t(ui ) = A
si
c(ui) = 1
si c(ui) = 2, dac
c(ui) = 2
si c(ui) = 1, dac
a t(ui ) = F .
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
fiecare graf hj colorarea c astfel nct c(aj ) 6= 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.
278

Reciproc, presupunem c
a G este 3-colorabil.
Putem presupune (eventual renumerotnd culorile) c
a c(b) = 3
si c(a) = 2.
si c(aj )
Va rezulta c
a {c(ui), c(ui)} = {1, 2}
{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.
Definim t : U {A, F } prin
t(ui ) = A c(ui) = 1.
Conform observat
iei anterioare, vom avea c
a
t(Cj ) = A j = 1, m, deci t(C) = A, adic
a
r
aspunsul la 3SAT este da.
279

3. Colorarea muchiilor
Consider
am urm
atoarea problem
a de decizie.

HOL
Instant

a: G = (V, E) graf 3-regulat.


Intrebare: Exist
a o 3-colorare a muchiilor lui G?

Teorem
a. 3. (Holyer 1981) 3SAT HOL.
Lem
a. 2. Fie H graful desenat mai jos.
v

u
1

v
7

v
4

6
t

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

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) =
2,c(v4v6) = 2,c(v3v6) = 3,
si nu putem atribui
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).
281

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 fi identificate 2 cte 2; cu alte cuvinte, perechi de astfel de muchii vor fi identificate. Vom reprezenta simplificat 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 justific
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).
282

Definim graful 2H, considernd dou


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

Pentru orice n 2, n N, definim graful Hn


astfel: 1. H2 se obt
ine identificnd muchiile u

si u din 2H:
u u

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

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

(xi+1, yi+1
).
-identific
am (un, un) (x1, y1 ).
x4

y
4

x1
y

y3
x
x2

y
2

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


si
este construit din 2n componente H.
284

In orice 3-colorare c a lui Hn avem


a) c(x1) = c(y1) c(u1) = c(u1) (din lema 2
si
construct
ia lui 2H), c(x2) = c(y2 ) (din identificarea de la construct
ia lui Hn) c(x2) =
c(y2) (lema 2) c(u2) = c(u2) . . . c(xn) =
c(yn) .
b) c(x1) 6= c(y1) c(x1) 6= c(y1 ) (lema 2)
c(un) 6= c(un)(din identificarea de la construct
ia
lui Hn ) c(xn) 6= c(yn)(din lema 2, prin re ) c(u
ducere la absurd) c(xn) 6= c(yn
n1) 6=
c(un1) . . . c(x2) 6= 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
285

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).
286

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 proprietatea c
a (G) = 3 dac
a
si numai dac
a exist
a
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:
287

1. Pentru fiecare 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 fiecare clauz
a Cj j = 1, m se consider
a cte o copie disjunct
a Fj a grafului F .
3. Pentru j = 1, m, fie 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
a cu
intrare cu num
arul y din Hx se identific
perechea de intrare num
arul i din componenta
Fj .
a o component
a inDac
a vji este u se plaseaz
versoare H ntre perechea i a lui Fj
si perechea
si se identific
a
de intrare cu num
arul y din Hx ,
corespunz
ator intr
arile lui H cu cele precizate
mai sus.
288

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 identific
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 fixat
a
si deci
3-colorare dac
a
si numai dac
a
isfiabil
a.

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

289

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 ?
290

Demonstrat
ie:
CH T R
Fie G un graf
si v0 V (G) un vrf fixat 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 hamiltonian cu o extremitate v0
si cealalt
a un vecin
al lui v0, deci dac
a
si numai dac
a G este hamiltonian.
291

T R CH
Fie G un graf. Consider
am 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 fiecare muchie cu o pereche de arce
simetrice. Orice circuit hamiltonian n G induce un circuit hamiltonian n D
si reciproc.
292

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

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

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 Ge = (Ve, Ee ) cu
Ve = {(w, e, i); w {u, v}, i = 1, 6}}
si
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 Ge 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 Ge,
295

atunci singurele posibilit


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

Deci, dac
a circuitul hamiltonian intr
a n Ge
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.
296

(iii) Pentru fiecare vrf u V , se consider


a,
( ntr-o ordine oarecare) toate muchiile lui G
u = uv , . . . , eu =
incidente cu u: eu
=
uv
,
e
1
2
p
1
2
uvp, unde, p = dG(u).
u , 1); i = 1, p 1}
Fie Eu = {(u, eu
,
6)(u,
e
si
i
i+1
u , 6); i = 1, k}.
Eu = {ai(u, eu
,
1),
a
(u,
e
i
p
1
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 |.
297

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
un astfel de drum (j + 1 = 1 +
Fie Dai ai
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 fi (vij , e1 , 1)

vij
sau (vij , ep , 6) unde p = dG(vij )

v ij V .
298

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

299

i se poate
Rezult
a c
a drumului Dai ai
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
care trece prin Ge deci exist
Dai ai
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.
300

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


am
n H pentru fiecare muchie e = uv E:
- cele dou
a drumuri din Ge situat
ia (a), dac
a
u, v V ,
- drumul din Ge situat
ia (b) dac
a u V , v
/ V
- drumul din Ge 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.
301

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 fixeaz
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 fiecare localitate exact o
dat
a.
Problema este interesant
a, nu pentru rezolvarea acestei
aplicat
ii, mai mult sau mai put
in important
a, ci pentru
c
a ea apare n numeroase probleme de optimizare discret
a, motivate, de exemplu, de construirea circuitelor
integrate pe scar
a mare.
302

In cele ce urmeaz
a, vom considera o form
a
echivalent
a a ei
CV Dat n Z+ (n 3)
si d : E(Kn) R+,
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) =

P
eE(H0 ) d(e).

20. Dac
a graful pentru care se cere rezolvarea
nu este complet, se introduc muchiile lips
a,
atribuindu-le drept ponderi, M R+ cu M >
|V | 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+ .
303

Problema de decizie asociata va fi

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

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, dificultatea rezolv
arii problemei CV.

305

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

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

d(HA )
d(H0)

RA = sup RA(n).
n3

Evident, s-ar dori ca aceste numere s


a fie finite.
In cazul general, condit
ia ca RA s
a fie finit este
la fel de dificil
a cu aceea a rezolv
arii eficiente
exact a problemei CV. In adev
ar, are loc
Teorem
a. 8. Dac
a exist
a un algoritm aproximativ A cu timp de lucru polinomial pentru
CV, astfel nct RA < , atunci CH se poate
rezolva n timp polinomial.
306

Demonstrat
ie: Fie A un algoritm cu timp de
lucru polinomial
si cu RA < . Exist
a deci
k Z+ astfel nct RA k.
Fie G = (V, E) un graf arbitrar, intrare pentru
CH. Dac
a n = |V | atunci definim 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.
Dac
a d(HA ) kn, atunci d(HA ) = n
si HA =
H0.
Dac
a d(HA) > kn, atunci d(H0 ) > n. In adev
ar,
A ) k,
presupunnd c
a d(H0) = n, avem d(H
d(H0 )
deci d(HA ) kd(H0 ) = kn, contradict
ie.
307

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

pondere 1
pondere 7k

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

VII. Abord
ari ale unor probleme
NP-dificile pe grafuri.
1. Euristici
Se proiecteaz
a algoritmi eficient
i care, de
si nu
rezolv
a problema, ofer
a solut
ii aproximative,
care se pot analiza
si uneori se pot folosi n
metaeuristici (de exemplu, cele care imit
a 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
309

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
fiecare v
arf vi cu prima culoare disponibil
a, adic
a
cu cea mai mic
a culoare (num
ar ntreg pozitiv)
nefolosit
a de nici unul dintre vecinii lui 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 fiecare dat
a,a celei mai
mici culori care s-ar putea folosi.

Fie G = (V, E), cu V = {1, 2, . . . , n}


si o
permutare a lui V (ce corespunde unei ordon
ari
a mult
imii v
arfurilor).
Algoritmul construie
ste colorarea c ce utilizeaz
a
(G, ) culori,
c : {1, 2, . . . , n} {1, 2, . . . , (G, )}.
310

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

else

f irst(i, j) v
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) 6= 0 then

c(i) j + 1;
Sj+1 {i};

(G, ) j + 1;

311

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

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 afl
a naintea lui w
n permutare), execut
and algoritmul greedy, se
vor obt
ine (G) culori.
313

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 fi verificat
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 fi ndeplinit
a de nici o permutare.
314

Algoritmul Dsatur { Degree of Saturation}


Acest algoritm ( Br
elaz, 1979 ) este o metod
a
secvent
ial
a dinamic
a de colorare.
Ideea este de colora v
arfurile pe r
and, aleg
and
de fiecare dat
a v
arful cu un num
ar maxim de
constr
angeri privitoare la culorile disponibile 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, definim gradul de saturat
ie al
unui v
arf v, notat dsat(v), ca fiind num
arul de
culori diferite din vecin
atatea acestuia.
315

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

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 modific
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.
317

2-opt

b
doua operatii 3-opt posibile

Pentru reprezentarea circuitului hamiltonian se utilizeaz


a
structura de date Tour care trebuie s
a suporte (eficient)
urm
atoarele 4 operat
ii:
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 verific
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.
318

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 eficient
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.
319

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 dificil 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 modificate.

Lin
si Kernighan au abordat aceast
a problem
a
prin considerarea unei metode numit
a variable
-opt: algoritmul va schimba valoarea lui n
timpul execut
iei.

La fiecare iterat
ie se ncearc
a valori cresc
atoare
pentru pentru a obt
ine un tur mai scurt.
320

Fie T turul curent. La fiecare 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
sunt vide
si n pasul i se adaug
a xi la X
si yi la Y .
Criteriile de selectare ale acestor muchii, urm
aresc eficient
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 fie nchis : yr = t2r t1.
321

-Criteriul de admisibilitate: se va alege xi =


t2i1t2i astfel ca dac
a t2i se va uni cu t1, configurat
ia care rezult
a s
a fie 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 simplificarea implement
arii.

-Criteriul c
a
stigului: se cere ca yi s
a fie ales
astfel ca s
a existe un c
astig; Gi trebuie s
a fie
pozitiv; dac
a gi = d(xi ) d(yi) este c
a
stigul
interschimb
arii lui xi cu yi, atunci Gi = g1+g2+
+ gi. Rat
iunea alegerii acestui criteriu este
c
a dac
a suma unei secvent
e de numere este
pozitiv
a, atunci exist
a o permutare circular
a a
acestei secvent
e astfel ca orice sum
a part
ial
a
este pozitiv
a.
-Criteriul dijunctivit
a
tii: se impune ca mult
imile
X
si Y s
a fie disjuncte. Aceasta simplific
a implementarea, reduce timpul de execut
ie
si d
a
un criteriu efectiv de oprire.
322

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 6 T a.. G1 > 0; If 6 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 6= ys pentru tot
i s < i
If T e mai bun ca T then fie T = T
si goto 2;
Alege yi = t2it2i+1 6 T a..
(a) Gi > 0,
(b) yi 6= 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).

323

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 fi ales astfel ca t5 s
a fie ntre t2
si
t3, turul va putea fi nchis n urm
atorul pas.
324

x
t

t4

3
y
2
y
1

t5

x3

x1

t1

t2

Atunci, t6 poate fi ales n ambele p


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

t4

x2
3

t6
y
t
x

y
1

t5

4
x1

t1

t2

325

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 modific
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
pe tur ai lui t2i la distant

a cel mult 5.
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.
326

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 finit
a, dac
a P 6= 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
3
care satisface RA = 2
si are timp de lucru polinomial.
Demonstrat
ie:
Consider
am urm
atorul algoritm A:
327

10. Se determin
a T 0 mult
imea muchiilor unui
arbore part
ial de cost minim n K n (costul
muchiei e fiind d(e) ). Problema se rezolv
a
n timp polinomial cu algoritmul lui Prim.
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
T 0 M 0. In acest multigraf exist
a un parcurs Eulerian nchis, ale c
arui vrfuri snt
(vi1 , vi2 , . . . , vi1 ). Eliminnd orice aparit
ie multipl
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
necesit
a O(n2) operat
ii).
328

Arborele T o

o
Cuplajul M
5
9

11

6
1
4
10
Graf Eulerian

2
Turul H
A

329

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

d(HA )

3m 1
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 fiec
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).
330

o
H
M
1

M2

H2

H1

331

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 = n2 muchii.

Presupunem c
a H 1. Deoarece d(H 1 ) d(M 1) d(M 0) =

d(H0 ), rezult
a c
a exist
a e H 1 : d(e)

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

Cum T 0 este arbore part


ial de cost minim n Kn , rezult
a

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
ine
21 se obt

d(HA )

)
m

3m1
d(H0 )
2m

+ d(H0 ) =

pentru n 3.
332

2. Metode care imit


a natura
In ultimii 30 de ani s-au dezvoltat numeroase
metaeuristici inspirate din comportamentul unor
sisteme biologice sau fizice ale lumii reale.
Metaeuristica simulated annealing.
Una din metaeuristicile populare utilizate pentru rezolvarea problemelor de optimizare NPdificile 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.

333

In termodinamic
a , se poate interpreta c
alirea
(intilnit
a tradit
ional n prelucrarea metalelor n
fier
ariile cu forj
a , baros
si nicoval
a ) ca un 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 ment
ine echilibrul
termal.

C
and atomii sunt n echilibru la temperatura

T , probabilitatea ca energia lor total


a s
a fie E este
E

proport
ional
a cu e kT , unde k este constanta lui Bolzmann.

334

In consecint

a, probabilitatea ca energia s
a fie
E + dE poate fi exprimat
a,
dE
kT

P r(E + dE) = P r(E) e

adic
a probabilitatea de cre
stere a energiei scade
odat
a cu temperatura.
C
alirea simulat
a este o metod
a computat
ional
a
care imit
a modul natural de determinare a unei
configurat
ii care minimizeaz
a energia unui sistem. Atunci cnd se dore
ste minimizarea unei
funct
ii f : D R, vom interpreta domeniul
de definit
ie al funct
iei, D, ca fiind mult
imea
configurat
iilor posibile ale sistemului, iar funct
ia
f ca fiind energia acestuia.

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

Algoritm de c
alire simulat
a
1. Se consider
a un plan de c
alire:
- temperatura init
ial
a Tstart
- configurat
ia init
ial
a xstart D
- temperatura final
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 fiecare prag de temperatur
a attempts
- nr. maxim de schimb
ari ale solut
iei
la fiecare 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 (xnew ) f (xold );
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

336

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 fie considerate (cu scopul p
ar
asirii minimelor
locale) poart
a denumirea inventatorului : schema
Metropolis.
Pentru aplicarea c
alirii simulate pentru rezolvarea
problemei comisului voiajor, se porne
ste cu un
tur ales aleator, iar trecerea de la o solut
ie
curent
a la o solut
ie vecin
a n spat
iul solut
iilor se
realizeaz
a de obicei cu ajutorul unei 2-move.

Se poate lua Tstart = O( n), attempts = 100n,


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

337

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 =
b) V e o mult
ime de puncte distincte din S.
c) Orice muchie e E este o curb
a simpl
a
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.
338

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.
Definim : 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
339

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 define
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 fi 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 finit de
fet
e, dintre care una singur
a este nem
arginit
a

si se nume
ste fat

a exterioar
a a lui G.
340

Frontiera unei fet


e este mult
imea muchiilor lui
G cont
inute n nchiderea acestei fet
e.
Orice circuit al lui G mparte punctele planului
n dou
a regiuni conexe, deci orice muchie a
unui circuit al grafului G se afl
a n frontierele
a dou
a fet
e.
Un graf plan, mpreun
a cu mult
imea fet
elor
sale se nume
ste hart
a planar
a (uneori, n aceast
a
definit
ie se impune ca graful sa fie 2-conex;
atunci fet
ele h
art
ii planare se numesc
t
ari
si
dou
a
t
ari snt vecine dac
a frontierele lor au
m
acar o muchie comun
a; aceasta corespunde
aspectelor intuitive de la h
art
ile geografice).
Unui graf planar i se pot asocia reprezent
ari
planare diferite. In figura al
aturat
a snt desenate trei reprezent
ari planare diferite ale aceluia
si
graf:
341

2
6

f4

5
f4

f3
f5

8
3

2
f5

2
f4

f2
f1

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

a a lui G . Consider
am G0 o reprezentare pe sfer
a
a lui G (construit
a, de exemplu, ca n lema 1)
si fie
F 0 fat
a corespunz
atoare a lui F (proiect
ia stereografic
a
transform
a orice fat

a tot ntr-o fat

a). Alegem un punct


y din interiorul fet
ei F 0, consider
am x punctul diametral
opus pe sfer
a lui y
si efectu
am proiect
ia stereografic
a
pe planul tangent sferei n punctul x.

Graful plan

G astfel obt
inut va avea fat
a exterioar
a (F 0) care are
aceea
si frontier
a cu fat
a F din reprezentarea G .
342

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 fi arbore
si ar
avea o singur
a fat

a). Rezult
a c
a e apart
ine
frontierei a exact dou
a fet
e ale lui G. Consider
am G1 = G e. Din alegerea lui e, G1
este conex. Evident G1 este graf plan.
343

Num
arul fet
elor lui G1 este f1 = f 1 (cele
dou
a fet
e ale lui G vor genera n G1 o singur
a
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.
Observat
ii: 10 Oric
arui poliedru convex din
R3 i se poate asocia un graf planar cu acelasi
num
ar de vrfuri
si muchii (se reprezinta vrfurile

si muchiile poliedrului pe o sfer


a
si se execut
a
proiect
ia stereografic
a).

Figura urm
atoare cont
ine grafurile planare asociate poliedrelor platonice:

344

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.

345

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 fiecare fat

a F are n frontier
a muchiile
unui circuit C(F ),
si fiecare astfel de muchie
apart
ine la exact dou
a fet
e. Orice circuit al
grafului are m
acar 3 muchii, deci
346

2m
P

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 fiind 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.
347

Demonstrat
ie: Dac
a G are mai mult de 2 muchii
aplic
am consecint
a 1 astfel: fie 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
P
Pn1
i
n
=
2m

2(3n

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

(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.
348

Fie G = (V, E) un graf


si v V (G) astfel
nct dG(v) = 2
si vw1, vw2 E, w1 6= w2.
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
une
ste w1
si w2 ntr-o reprezentare planar
a a lui
h(G) se introduce un nou vrf v; dac
a w1 w2
E(G), n una din fet
ele reprezent
arii planare a
lui h(G) se plaseaz
a suficient 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).
Vom nota cu h(G) graful obt
inut din G aplicndui 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.
349

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

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 grafic, care permite pozit
ionarea
n puncte de coordonate ntregi
si trasarea de
segmente ce unesc aceste puncte, este desigur
important s
a se demonstreze existent
a unei
reprezent
ari Fary cu vrfuri n puncte de coordonate ntregi,
si n acela
si timp aria suprafet
ei
ocupate de reprezentare s
a fie polinomial
a n
raport cu num
arul n de vrfuri ale grafului.
351

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 fi
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 6= u, v
si w nu
este extremitatea nici unei corzi interioare a lui
C .
352

Demonstrat
ie: Fie v1, v2, ..., vn vrfurile circuitului C ntr-o parcurgere a sa de la u la v
(v1 = u, vn = v). Dac
a C nu are corzi interioare 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

353

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 fictive
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:
354

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


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

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

Ck1
\ uv.
Demonstrat
ie: Fie v1 = u, v2 = v, vn = w, Gn =
G, Gn1 = Gvn. S
a observ
am c
a NGn (vn) este
un circuit ce cont
ine uv (este suficient, 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.
355

Dac
a vk a fost ales (k n) atunci n Gk1 =
G {vn, . . . , vk } vecinii lui vk determin
a un cir
cuit Ck1
ce cont
ine uv
si m
argine
ste fat
a exterioar
a a lui Gk1. Din lema 3, rezult
a c
a

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
cident nici cu corzi exterioare lui Ck1

si cu
aceast
a alegere, se observ
a c
a Gk2 va cont
ine

un circuit Ck2
cu propriet
a
tile (i)
si (ii).
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 fixarea vrfurilor v1, v2
si vn
si apoi considernd pentru fiecare k k 3 un vrf vk cu
proprietatea c
a arcele cu o extremitate vk
si
cealalt
a n {v1, . . . , vk1} formeaz
a un segment
continuu n lista circular
a a lui A(vk ) (existent
a
unui asemenea vrf fiind asigurat
a de lema 4 ).
356

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

(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 Gk+1. Fie wp, wp+1, . . . , wq vecinii
lui vk+1 n Gk+1 (cf. lemei 4) 1 p < q m.
P

w
wp
w
3

wq-1

p+1
w
p+2

wq-2

wq

w
2
w = v1 =u
1

w = v2=v
m

358

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
fie distincte, atunci putem lua vk+1 = P
si
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
am apoi o translat
ie
abscisa xwp+1 . Efectu
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
de asemenea wpP
si P wq (unde P este punctul obt
inut prin intersect
ia paralelelor la prima
(respectiv a doua) bisectoare, duse prin wp
si
wq ). Lu
am vk+1 = P
si pasul k al construct
iei
este terminat.
359

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 fi 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
triplet G = (E, , ), unde E este o mult
ime
de cardinal par, este o involut
ie pe E (permutare de ordin 2) f
ar
a puncte fixe,
si este
o permutare pe E.
360

Elementele lui E sunt g


andite ca arce; o muchie
(neorientat
a) este reprezentat
a ca o pereche
e, e E de arce, inverse unul altuia.
Aplicat
ia inverseaz
a direct
ia.
Se dore
ste ca aplicat
ia s
a dea o orientare a
muchiilor din jurul unui v
arf (n sens contrar
acelor de ceasornic).

V
arfurile sunt ciclii permut
arii . (Un ciclu
al permut
arii este o submult
ime nevid
a a lui
E nchis
a n raport cu
si minimal
a cu aceast
a
proprietate).
Dac
a not
am cu V mult
imea ciclilor permut
arii
atunci definim
t : E V prin t(e) = unicul ciclu al lui ce cont
ine
e (extremitatea init
ial
a a arcului e)

h : E V prin h(e) = unicul ciclu al lui ce cont


ine

e (extremitatea final
a a arcului e)

Se observ
a c
a e t(e) = h(e)
si h(e) = t(e).
361

Dac
a vom considera permutarea : E E definit
a de

(e) = (e), atunci o fat

a a lui G este un ciclu al per


mut
arii .
Intuitiv, pentru a calcula (e), invers
am e pentru a
si apoi ne rotim (n sensul acelor de ceasorobt
ine e
arul 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 define
ste ca fiind
(G) = 2c + m n f.

Un graf G se nume
ste graf plan dac
a (G) = 0.
Se poate demonstra c
a pentru un graf conex n definit
ia
tradit
ional
a, cele dou
a not
iuni de grafuri plane coincid
(graful neorientat construit a
sa cum am descris mai sus
ata
sat unui graf n form
a combinatorial
a este graf plan
conform definit
iei tradit
ionale
si invers,
dac
a pentru un graf tradit
ional plan conex se construie
ste
conform unei orient
ari inverse acelor de ceasornic a

muchiilor
si corespunz
atoare, graful combinatorial
obt
inut este plan n noua definit
ie).
362

4. Teorema separatorului
Definit
ie Dac
a G = (V, E) este un graf plan
maximal (cu toate fet
ele triunghiuri) atunci
dualul s
au este graful G = (V , E) unde V
sunt fet
ele grafului G iar muchiile lui G se
obt
in din muchiile grafului G, asociindu-i fiec
arei
muchii e E cele dou
a fet
e n frontiera 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.
363

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 fiec
arui
v
arf v nivelul s
au n arborele bfs construit.
364

Vom nota cu L(t), 0 t l + 1 mult


imea
v
arfurilor de pe nivelul t (nivelul l + 1 va fi introdus n scopuri tehnice
si este vid, ultimul
nivel este de fapt l).
Evident, fiecare nivel este un separator n G
(avem muchii doar ntre nivele consecutive).
Fie 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>t1
2
2

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

Consider
am
C = t<t0 L(t), D = t0<t<t2 L(t), E = t>t2 L(t).
t1

t0

2 n atunci teorema are loc cu S =


Dac
a |D| 3
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).
366

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

arfuri, atunci , atunci


tru D cu cel mult 2 n v
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

arf
part
ial T de diametru cel mult 2 n (orice v
este accesibil din s pe un drum de lungime cel

sa cum am ar
atat n lem
a).
mult n a
367

Acest arbore se construie


ste simplu pornind de
la ultimul nivel
si ad
aug
and pentru fiecare v
arf
o muchie incident
a cu el
si cu cealalt
a 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 fi 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
lui T orientate dinspre r
ad
acin
a.
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
fiecare
tep, recursiv de la frunze n sus:
368

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

e
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:
369

- 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 =
uv, 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.

370

Fie p drumul comun al lui c(e )


si c(e)
si fie 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
I(e)
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.
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 .
371

Atunci mult
imea v
arfurilor din exteriorul lui c(e)
1
este de cardinal n1 (I(e) + |c(e)|) 2n
3 , deci
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 fi 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.
372

Consider
am problema test
arii dac
a un graf planar dat admite o 3-colorare a v
arfurilor (problem
a cunoscut
a ca fiind 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
s
i
|C|

4
n.
3

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

posibile definite pe C
si cu valori n {1, 2, 3}
se testeaz
a dac
a este 3-colorare a subgrafului
indus de C
si dac
a poate fi extins
a la o 3colorare a subgrafului indus de A C n G
si la
o 3-colorare a subgrafului indus de B C n G
(recursiv).
373

Timpul de lucru al acestui algoritm, T (n), va


satisface recurent
a

T (n) =

O(1)

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

dac
a n c;
dac
a n > c.

n), destul de bun pentru


O(
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 dificile
pe grafuri planare. Descriem n continuare una
din ele.
374

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
define
ste ca fiind 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).
375

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
diferite ale lui T e cu (t1)
si (t2) incidente
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 define
ste bl
a
timea lui G ca fiind 0; grafurile nule nu au
b-descompuneri; dac
a |E(G)| = 1 atunci G are
o b-descompunere care const
a dintr-un arbore
cu un nod, a c
arui l
a
time se consider
a 0).
376

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

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

378

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 justificare este aceea c
a matricea
de adiacent

a A a grafului, care ocup


a n2 locat
ii de mem2

n
),
orie, poate fi 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 ; fie u ultimul virf vizitat;din virful u se execut
a o
379

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


return u,v.

Este valabil algoritmul pentru un graf conex oarecare ?


(4 puncte)
Problema

3.

Fie T un arbore un arbore binar cu

r
ad
acin
a. Un algoritm simplu de desenare a lui T poate
fi descris recursiv dupa cum urmeaz
a.
- Folosim ca suport o gril
a (liniatura unui caiet de mate);
virfurile se plaseaz
a in punctele de intersect
ie ale grilei.
- Desen
am subarborele sting; Desen
am subarborele drept.
- Plas
am cele dou
a desene unul ling
a altul la distant

a
pe orizontal
a doi
si cu r
ad
acinile la aceea
si in
alt
ime.
- Plas
am r
ad
acina cu un nivel mai sus la jum
atatea
distant
ei pe orizontal
a dintre cei doi copii.
- Dac
a avem doar un copil plas
am r
ad
acina cu un nivel
mai sus la distant
a 1 fat

a de copil (la stinga sau la


dreapta dup
a cum este acesta).
Descriet
i cum se poate asocia pentru fiecare nod v al arborelui T (folosind algoritmul de mai sus) coordonatele
(x(v), y(v)) reprezentind punctul de pe gril
a unde va fi
desenat.(3 puncte)
380

Problema 4. Intr-o sesiune de examene s-au inscris n


student
i care trebuie s
a sust
in
a examene dintr-o mult
ime
de m discipline. Intrucit examenele se sust
in in scris, se
dore
ste ca tot
i student
ii care dau examen la o disciplin
a
s
a fac
a acest lucru simultan. De asemenea, regulamentul de desf
a
surare a examenelor interzice ca un student
s
a dea dou
a examene in aceea
si zi. Pentru fiecare student se dispune de lista disciplinelor la care dore
ste s
a
fie examinat.
S
a se descrie construct
ia unui graf G care s
a ofere r
aspunsul
la urm
atoarele dou
a intreb
ari prin determinarea unor
parametri asociat
i (care se vor preciza):
- care e num
arul maxim de examene ce se pot organiza
in aceea
si zi ?
- care e num
arul minim de zile necesare organiz
arii tuturor examenelor? (3 puncte)

381

Setul de probleme 2
Problema

1.

Fie G = (S, T ; E) un graf bipartit


si

X {S, T }. Graful G se nume


ste X-lant
dac
a v
arfurile

mult
imii X pot fi ordonate X = {x1 , x2 , . . . , xp } (unde

p = |X|) astfel nc
at NG (x1) NG (x2 ) . . . NG (xp).

a) Demonstrat
i c
a G este X-lant
dac
a
si numai dac
a
este X-lant
, unde X = {S, T } {X}. (2 puncte)

b) Dac
a G (bipartit) este reprezentat cu ajutorul listelor
de adiacent

a , are ordinul n
si dimensiunea m, descriet
i
un algoritm cu timpul O(n + m) care s
a testeze dac
a G
este S-lant
. (2 puncte)
Problema 2. Un graf G se nume
ste autocomplementar dac
a este izomorf cu complementul s
au : G G.

a) Demonstrat
i c
a un graf autocomplementar este conex
si c
a ordinul s
au este multiplu de 4 sau multiplu de 4
plus 1.(2 puncte)
b) Demonstrat
i c
a pentru orice graf G exist
a un graf
autocomplementar H astfel incit G este subgraf indus
in H. (2 puncte)
c) Determinat
i toate grafurile autocomplementare cu
cel mult 7 virfuri. (2 puncte)
382

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 fixate (sunt put
ine muchii
si deci
put
ine posibilit
a
ti de ramificare; de ex., intr-un arbore
exist
a exact un drum intre orice dou
a noduri fixate).
Programatorul T nu-i de acord
si d
a urm
atorul 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)
383

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)

384

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 definit
a prin :

(Q)ve = 1, dac
a v este extremit. init
ial
a a arcului e,

(Q)ve = 1, dac
a v este extremitatea final
a a arcului e
(Q)ve = 0 in toate celelalte cazuri.

Demonstrat
i c
a matricea A + QQT este o matrice diagonal
a
si precizat
i semnificat
ia combinatorie a elementelor
ei. (3 puncte)
Problema 2. Fie G un graf oarecare
si not
am cu b(G)
graful obt
inut din G prin inserarea cite unui nou nod pe
fiecare muchie. Demonstrat
i c
a b(G) este un graf 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
izomorfismului a 2 grafuri oarecare se reduce polinomial la testarea izomorfismului a 2 grafuri bipartite (2
puncte)
385

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)

386

Problema

4.

Asociem unui arbore binar T de ordin

n cu r
ad
acina r un drum P3n orientat procedind astfel:
fiec
arui nod v al lui T i se asociaz
a trei noduri cu acela
si
nume v pe care le desemn
am prin v1 , v2, v3 ; dac
a v nu
are in T descendent sting, atunci se introduce arcul v1v2
in P3n ; dac
a v nu are in T descendent drept, atunci se
introduce arcul v2 v3 in P3n; dac
a descendentul sting al
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,
atunci se introduc in P3n arcele v2 w1
si w3 v3 .
Dac
a se parcurge drumul P3n de la extremitatea init
ial
a
r1 la extremitatea final
a r3
si se listeaz
a numele virfurilor
in ordinea parcurgerii lor se obt
ine un
sir in care numele
fiecarui virf al lui T apare exact de trei ori.
Demonstrat
i c
a :
dac
a din acest
sir se ret
ine doar prima aparit
ie a fiec
arui
nume se obt
ine parcurgerea pre-order a arbrelui T ;
dac
a din acest
sir se ret
ine doar a doua aparit
ie a fiec
arui
nume se obt
ine parcurgerea in-order a arbrelui T ;
dac
a din acest
sir se ret
ine doar a treia aparit
ie a fiec
arui
nume se obt
ine parcurgerea post-order a arbrelui T .
(3 puncte)
387

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
G se nume
ste d-m
arginit
a dac
a n digraful G7, obt
inut
din G prin nlocuirea fiec
arei muchii {vij , vik } cu arcul
(vimin{j,k} , vimax{j,k} ), avem v V d+
G7 (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 fi

partit
ionat
a n n2 submult
imi, fiecare dintre acestea

reprezent
and mult
imea muchiilor unui arbore (subgraf
al lui Kn ). Exemplu. K5 , 52 = 3 :

(4 puncte)
388

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 fiecare graf introdus n coad
a
este conex.(2 puncte)
b) Demonstrat
i c
a num
arul total al grafurilor
introduse n coada Q nu dep
a
se
ste |G|2. (2 puncte)
389

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 ;
for i = 1 to n do
\\ st
anga dreapta
if (6 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.
390

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 fiind |E|).
(2+2 puncte)
Problema 3. Ar
atat
i c
a dac
a G = (S, T ; E) este un
graf bipartit cu urm
atoarele propriet
a
ti:

- |S| = n; |T | = m (n, m N );
- t T |NG(t)| > k > 0;(pentru un k oarecare mai
mic dec
at n);
- t1, t2 T dac
a t1 6= t2 atunci NG (t1) 6= NG (t2);
- t1, t2 T dac
a t1 6= t2 atunci |NG (t1) NG (t2)| = k,
atunci are loc inegalitatea m n.
(2 puncte)
Problema 4.
Pentru n N definim 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 fi T un arbore de ordin n exist
a A V astfel

nc
at T = [A]Gn .
(2+2 puncte)
391

Setul de probleme 4
Problema

1.

Prezentat
i (pe cel mult o pagin
a ) o

problem
a interesant
a din domeniul IT care s
a necesite
rezolvarea eficient
a a unei probleme de drum minim 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 6 S

si A = {e E|e = uv, u S v 6 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

virf al s
au cu proprietatea c
a NG (v) 6= V {v}. Dac
a

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 propriet
a
tile : v A, [A]G este conex, N = NG (A) 6=
si

R = V (A N ) 6= (de exemplu, A = {v}).

392

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)

393

Setul de probleme 4
Problema 1. Fie T = (V, E) un arbore cu m
acar dou
a
v
arfuri reprezentat cu ajutorul listelor de adiacent

a. Se
declar
a un v
arf oarecare r V r
ad
acin
a
si se noteaz
a
cu d(v) (pentru orice v
arf v V ) lista descendent
ilor
imediat
i ai lui v n parcurgerea bf s din r (v
arfurilor pendante le corespund liste vide). Consider
am urm
atorul
algoritm:
1. Se construiesc tablourile de intregi a[v]
si b[v] (v V )
astfel: dac
a d(v) este vid
a, atunci a[v] 1
si b[v] 0;
dac
a d(v) este nevid
a
si toate v
arfurile uPdin d(v) au
a[u]
si b[u] calculate, atunci a[v] 1 + ud(v) b[u]
si
P
b[v] ud(v) max(a[u], b[u]).

2. Se returneaz
a x max(a[r], b[r]).
Descriet
in pseudocod algoritmul de mai sus, argumentat
i
complexitatea timp de O(|V |)
si demonstrat
i c
a valoarea
returnat
a x este num
arul de stabilitate (T ) al arborelui
T.
(1+1+2 = 4 puncte)

Problema 2.
Fie G = (V, E) un graf d-regulat de
ordin n care satisface urm
atoarea proprietate:
exist
a > 0 astfel nc
at pentru orice mult
ime de v
arfuri
n
S V cu proprietatea c
a |S| 2 , num
arul muchiilor cu
o extremitate n S
si cealalt
a n V S este cel put
in |S|.
394

a) Grafurile complete au proprietatea de mai sus ?


(argumentat
i r
aspunsul)
b) Dac
a
si d sunt constante (nu depind de n), demonstrat
i
c
a diametrul lui G satisface
d(G) = O(log n).

(1+3 = 4 puncte)

Problema 3. Muchiile grafului conex G = (V, E) se


coloreaz
a arbitrar ro
su
si albastru.
a) Demonstrat
i c
a exist
a n G un parcurs Euleian nchis
f
ar
a muchii consecutive de aceea
si culoare dac
a
si numai
dac
a pentru fiecare v
arf v V al lui G num
arul muchiilor ro
sii incidente cu v este egal cu num
arul muchiilor
albastre incidente cu v.
b) Dac
a graful G este complet
si x, y, z sunt trei v
arfuri
distincte ale sale demonstrat
i c
a dac
a exist
a n G un
drum f
ar
a muchii consecutive de aceea
si culoare de la
x la y trec
and prin z, atunci exist
a un drum cu aceea
si
proprietate care are ca prim
a muchie pe xz sau ca ultim
a
muchie pe zy.
(1+1+2 = 4 puncte)
Problema 4. Fie G un graf
si (G) gradul minim al
unui v
arf al s
au. Descriet
i un algoritm care, pentru
un arbore dat T cu k (G) muchii, s
a construiasc
a
(n timp polinomial) un subgraf H al lui G astfel nc
at
T.
H=
(2 puncte)

395

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)

396

Setul de probleme 6
Problema 1. Pentru d N se consider
a graful Gd =
... K2}.
|K2 K2{z
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 confident
ial
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 confident
ial conex
dac
a
si numai dac
a au loc urm
atoarele dou
a condit
ii :
1. Pentru orice virf v mult
imea N (v) = {w V |w 6=
v, vw 6 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)
397

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 fiecare 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 fiecare clauz
a Ci =

vi wi se adaug
a arcele viwi
si wivi (folosind, evident,

convent
ia referitoare la dubla negare). Demonstrat
i c
a
exist
a o atribuire a valorilor de adev
ar
si fals pentru
variabilele booleene, astfel incit fiecare clauz
a s
a fie
adev
arat
a, dac
a
si numai dac
a digraful G are poprietatea
c
a pentru orice i {1, ..., n} xi
si xi apart
in la componente tari conexe diferite. (4 puncte)

Argumentat
i complexitatea timp de O(n + m) pentru
testarea propriet
a
tii de mai sus. (2 puncte)

398

Setul de probleme 7
Problema

1.

Gossip Problem. Intr-un grup de n

doamne, fiecare cunoa


ste o parte dintr-o birf
a pe care
celelalte n-o cunosc. Ele comunic
a prin telefon
si orice
apel telefonic intre orice dou
a doamne are ca efect faptul c
a fiecare din ele va afla tot ce cunoa
ste cealalt
a.
(a) Descriet
i o schem
a de a da telefoanele astfel incit
intr-un numar minim f (n) de apeluri telefonice, fiecare
doamn
a va afla tot ce
stiu celelalte.
Indicat
ie: Ar
atat
i c
a f (2) = 1, f (3) = 3, f (4) = 4
si
pentru n > 4 f (n) = 2n 4 (u
sor, indicind scheme de

telefonare cu aceste numere de apeluri). Incercat


i sa
argumentat
i c
a 2n 4 este chiar num
arul minim.

(2 puncte pentru descrierea schemei, 1 punct pentru

demonstrarea optimalit
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)
399

Problema 2.

Fie D un digraf
si dou
a funct
ii definite

pe multimea arcelor sale, a : E(D) R+


si b : E(D)
. Descriet
R+
i un algoritm eficient 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.

Fie A1, A2, ..., An submult


imi distincte

ale unei mult


imi de n elemente S. Demonstrat
i c
a exist
a
un element x in mult
imea S astfel incit A1 {x}, A2

{x}, ..., An {x} s


a fie
si ele distincte. (2 puncte)
Problema

4.

Fie G un graf
si c : E(G) R+ o

funct
ie de capacitate a muchiilor.

Oric
arui drum din

graf cu m
acar o muchie i se asociaz
a locul ingust ca
fiind muchia sa de capacitate minim
a .

Descriet
i un

algoritm eficient care s


a determine pentru dou
a virfuri s

si t distincte ale grafului drumul cu locul ingust cel mai


mare (dintre toate drumurile de la s la t in graful G).
(4 puncte)

400

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 6= t dou
a v
arfuri fixate. Pentru
rezolvarea problemei P1 (a determin
arii unui drum de cost a minim
de la s la t n G) se propune urm
atorul algoritm:

1. for each i V do pi 0;
i s;nainte(s) s;
2. while i 6= 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 afirmat
iile din
pasul 3 sunt corecte.(2 puncte)
b)Stabilit
i complexitatea timp a algoritmului(2 puncte)

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


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

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

Problema 3. Dac
a G
si H sunt dou
a grafuri, notat
ia G H semnific
a faptul c
a exist
a
f : V (G) V (H) astfel nc
at uv E(G)
avem c
a f (u)f (v) E(H) (exist
a un morfism
de grafuri de la G la H).
Justificat
i corectitudinea unui algoritm care s
a
r
aspund
a n timpul O(1) la ntrebarea: Are
loc 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)

402

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
aflarea unei mult
imi maximale P de drumuri disjuncte
(cu mult
imile de v
arfuri disjuncte) de la A la B, fiecare
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 fie disjunct de
orice drum din P).
b) Ar
atat
i cum poate fi folosit algoritmul de la a) pentru implementarea algoritmului lui Hopcroft & Karp de
aflare a unui cuplaj de cardinal maxim ntr-un graf bipartit.
(3+2 puncte)
403

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 lui D (dac
a arcul ej iese din i atunci aij = 1, dac
a arcul
ej intr
a n i atunci aij = 1, altfel aij = 0). Ar
atat
i c
a
pentru orice submatrice p
atrat
a B a lui A are loc:
det(B) {1, 0, 1}.
(2 puncte)
Problema 4. Intr-un graf f
ar
a v
arfuri izolate se 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 afl
am,
alegem un vecin diferit de v
arfurile deja vizitate. Atunci
c
and nu mai este posibil
a nici o alegere, construct
ia
lui P se ncheie. Evident, lungimea drumului P este
cel put
in 1
si ea depinde de structura grafului
si de
alegerile f
acute. Proprietarul grafului solicit
a o plat
a
pentru folosirea acestuia n procesul de construct
ie a
drumului P . Aceast
a plat
a se poate face naintea fiec
arei
alegeri
si, dac
a se pl
ate
ste 1 RON se obt
ine dreptul de
a face aceast
a alegere, iar dac
a se pl
atesc T >> 1 RONi
atunci se obt
ine dreptul de a face gratuit toate alegerile
urm
atoare. Dup
a terminarea construct
iei se poate compara suma pl
atit
a, Apriori(P ), cu cea care s-ar fi f
acut
dac
a s-ar fi cunoscut drumul P , notat
a P osteriori(P ).
G
asit
i o strategie de plat
a astfel nc
at pentru orice graf

si orice drum construit P s


a avem Apriori(P ) (2
1/T )P osteriori(P ).
(4 puncte)
404

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 afirmat
iilor a) si b) ? (1
punct)
Problema

2.

Consider
am o numerotare fixat
a a

celor m > 0 muchii ale unui graf conex G = (V, E) de


ordin n.

Pentru orice submult


ime de muchii A con-

sider
am xA GF m vectorul m-dimensional cu elemente
0,1 definit prin xA
i = 1 ei A (vect. caracteristic).

GF m este spat
iul vectorial peste corpul GF (cu elem. 0

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

a) Demonstrat
i c
a mult
imea vectorilor caracteristici ai
tuturor t
aieturilor grafului G, la care ad
aug
am
si vectorul
nul, formeaza un subspat
iu vectorial X al lui GF m .(1
punct)
b) Demonstrat
i c
a vectorii caracteristici ai mult
imilor
muchiilor circuitelor grafului G genereaz
a un subspat
iu
vectorial U al lui GF m ortogonal pe X. (1 punct)
c) Ar
atat
i c
a dim(X) n 1 (1 punct)

d) Ar
atat
i c
a dim(U ) m n + 1(1 punct)

e) Deducet
i c
a dim(X) = n 1
si c
a dim(U ) = m n + 1.
(1 punct)

Problema 3. Ar
atat
i c
a orice arbore cu gradul maxim
t > 0 are cel put
in t virfuri pendante. (2 puncte)
Problema 4.

Fie T = (V, E) un arbore cu r


ad
acina r

(un virf oarecare)


si cu parent(v) p
arintele nodului v V,

v 6= r. Un cuplaj M al lui T se nume


ste propriu dac
a
orice virf expus v (relativ la M ) in T are un frate w

(dou
a virfuri sunt frat
i dac
a au acela
si p
arinte) astfel
incit w parent(v) M . a)Demonstrat
i c
a orice cuplaj

propriu este de cardinal maxim. (1 punct)

b)Ar
atat
i c
a pentru orice arbore cu n virfuri, dat prin
listele de adiacent

a, se poate construi in timpul O(n) un


cuplaj propriu. (2 puncte)
406

Setul de probleme 8
Problema 1.
O procedura naiv
a de creare a unei ret
ele sociale G =
(V, E) este urm
atoarea:
Init
ializare
G = ({v}, ) // v este creatorul ret
elei
Aderarea la G (a unui nou membru v 6 V (G))
V V (G) {v}; E E(G)
if v has a friend in V (G) then E E {vw|w V (G)}
G (V, E)
a) Descriet
i un algoritm eficient care, pentru un graf
dat G, s
a decid
a dac
a este o ret
ea social
a naiv
a (a fost
creat cu algoritmul de mai sus).
b) Administratorul ret
elei a observat c
a pentru orice
doi useri v
si w ai ret
elei G = (V, E) (v 6= w V ), se
poate r
aspunde n timp constant la o ntrebare vw E?
astfel: se asociaz
a grafului o valoare ntreag
a pozitiv
a
x(G)
si c
ate o valoare ntreag
a pozitiv
a y(v) pentru
fiecare v
arf v, astfel nc
at pentru orice dou
a v
arfuri distincte v
si w are loc vw E y(v) + y(w) > x(G).
Modificat
i algoritmul de mai sus pentru a realiza aceast
a
nou
a reprezentare a grafului (se ntret
in doar mult
imea
v
arfurilor V , x(G)
si lista (y(v))vV ).
(2+2 = 4 puncte)
407

Problema 2. Consider
am urm
atoarea euristic
a pentru
determinarea unui cuplaj de cardinal maxim ntr-un graf
bipartit G = (S, T ; E):
function M M B(G = (S, T ; E))
M =
while E 6= do {
if u varf de grad 1 then e muchia incident
a cu u
else e o muchie incident
a cu un v
arf de grad maxim
M M {e}
se
sterg extremit
a
tile muchiei e din G
}
return M
a) Demonstrat
i c
a algoritmul returneaz
a cuplajul de cardinal maxim dac
a G este arbore.
b) Demonstrat
i c
a dac
a G are un unic cuplaj perfect
M0 , atunci algoritmul returneaz
a M0 .
c) Ar
atat
i c
a pentru cuplajul M returnat are loc
(G)
(2+2+2 = 6 puncte)
|M | 2 .
Problema 3. Fie G = (V, E) un graf conex
si c : E R
o funct
ie de cost cu valori reale asociate muchiilor.
a) Fie T0 un arbore part
ial al lui G cu proprietatea c
a
pentru orice muchie e E(T0) exist
a un arbore part
ial de

cost minim T al lui G astfel nc


at e E(T ). Rezult
a c
a
T0 este arbore part
ial de cost minim al lui G? (argumentat
i
r
aspunsul)
408

(b) Pentru T TG definim b(T ) = maxeE(T ) c(e). Se


dore
ste aflarea unui arbore T0 TG astfel nc
at b(T0) =
a aplic
am algoritmul lui Prim penminT TG b(T ). Dac
tru aflarea unui arbore part
ial de cost minim T , este
acesta o solut
ie pentru problema dat
a? (argumentat
i
r
aspunsul)
(2+2 = 4 puncte)

409

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 fi partit
ionat
a in (G) cuplaje.(2 puncte)
410

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)

411

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) Demonstrat
i c
a H este conex
si are diametrul cel mult

n 1. (2 puncte)

b)Demonstrat
i c
a pentru orice funct
ie de cost c pe mult
imea
muchiilor grafului G, mult
imea arborilor part
iali de cost
c minim induce un subgraf conex in H. (2 puncte)
Problema 2. Fie H = (V, E) un digraf
si ts E un arc

fixat al s
au. Se coloreaz
a toate arcele lui H cu galben,
ro
su
si verde arbitrar, cu singura condit
ie ca arcul ts s
a
fie galben (se poate intimpla ca s
a nu avem arce ro
sii
sau verzi). Demonstrat
i algoritmic c
a are loc exact una
din urmatoarele situat
ii:
i) exist
a un circuit in graful G(H) (nu se
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)
412

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 =
{b1, b2, ..., bn}
si F = {f1 , f2 , ..., fn}. Dac
a M este un cuplaj
perfect in Kn,n (fiecare 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 .
Un cuplaj perfect M al lui Kn,n se nume
ste stabil dac
a:
b B dac
a f <b M (b), atunci M (f ) <f b
si, de asemenea,
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)

413

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 eficient
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
flux maxim (pe o ret
ea convenabil definit
a). (3 puncte)
Problema 3. Digraful G = (V, E) descrie topologia interconectarii intr-o ret
ea de procesoare. Pentru fiecare
procesor v V se cunoa
ste inc
arcarea sa load(v) R+ .
Se cere s
a se determine (cu ajutorul unei probleme de
flux maxim) un plan de echilibrare static
a a inc
arc
arii
procesoarelor : se va indica pentru fiecare procesor ce
cantitate de inc
arcare va trimite
si la ce procesor astfel incit, in final, toate procesoarele s
a aib
a aceea
si
inc
arcare. (4 puncte)
414

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

c
3

4
3
1

t
10

d
5

(Etichetele arcelor reprezinta capacit


a
tile)
(4 puncte)

415

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 fiec


arui v
arf 3.

Intrebare: Are G un cuplaj perfect?

Demonstrat
i c
a PERF se reduce polinomial la
3PERF (4 puncte)

Problema 2. Demonstrat
i c
a nu exist
a nici
o permutare e1, e2, . . . , e10 a muchiilor grafului complet K5, astfel nc
at pentru orice i
{1, . . . , 9} muchiile ei
si ei+1 nu sunt adiacente
n K5
si, de asemenea, e1
si e10 nu sunt adiacente n K5. (2 puncte)
416

Problema 3. Un organizator al unei conferint


e trebuie s
a asigure
fet
e de mas
a (curate) pentru fiecare din cele D zile c
at dureaz
a
conferint
a.
Se cunoa
ste num
arul Mi al meselor de care e nevoie n ziua i a
conferint
ei (i = 1, D). Se consider
a c
a toate cele Mi fet
e de mas
a
se murd
aresc la sf
ar
situl zilei i (i = 1, D).
Organizatorul are de ales ntre a cump
ara fet
e de mas
a noi, la pret
ul
unitar p, sau, n dimineat
a zilei i, s
a trimit
a la cur
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
curate la nceputul zilei i + 1 la un cost unitar c1 ,
si serviciul lent
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 planificare 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 flux de
cost minim (justificare). (4 puncte)
Problema 4. O euristic
a natural
a pentru colorarea v
arfurilor unui
graf G = (V, E) este urm
atoarea:
a) Se alege o D-ordonare a lui G, adic
a o ordonare V = {vi1 , vi2 , . . . , vin }
astfel nc
at dG(vi1 ) dG (vi2 ) . . . dG(vin ).
b) Se coloreaz
a greedy v
arfurile: lui vi1 i se atribuie culoarea 1
si
apoi pentru fiecare v
arf vij , cu j = 2, . . . , n, se atribuie cea mai mic
a
culoare posibil
a (cel mai mic num
ar natural p cu proprietatea c
a nu
a fost atribuit drept culoare unuia dintre vecinii s
ai deja colorat
i).

417

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)

418

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 6= s ie
sirea

si c : E(G) R+ funct
ia de capacitate). Presupunem
(f
ar
a a restr
ange generalitatea !) c
a st
si ts nu sunt arce
n G. Se dispune
si de o funct
ie de m
arginire inferioar
a
m : E(G) R+ , satisf
ac
and m(e) c(e) pe orice arc
e al lui G. Numim flux legal n R orice flux x n R cu
proprietatea c
a x(e) m(e) e E(G).

a) Demonstrat
i c
a pentru orice flux legal x
si orice
sect
iune (S, T ) n R are loc
X
X
v(x)
c(ij)
m(ji).
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
P
c(sv) = uvE(G) m(uv);
- pentru v V (G) se adaug
a arcul vt de capacitate
P
c(vt) = vuE(G) m(vu);
- se adaug
a arcele st
si ts de capacitate c(st) = c(ts) =
;
- se define
ste c pe arcele ij ale lui G ca fiind c(ij) =
c(ij) m(ij).
419

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

c) Utiliz
and un flux legal de start (care se poate obt
ine
ca la b)), indicat
i cum se poate adapta algoritmul lui
Ford & Fulkerson pentru a obt
ine un flux legal de valoare
maxim
a ntr-o ret
ea n care pe fiecare arc este precizat
a
capacitatea
si marginea inferioar
a.
(2+2+2 puncte)

Problema 2. Dac
a H este un graf conex, A V (H)
o mult
ime nevid
a de v
arfuri ale sale
si w : E(H) 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
aP
A VT
si suma costurilor muchiilor
sale, s[T (H, A, w)] = eET w(e), este minim
a printre tot
i
arborii subgrafuri ale lui H care cont
in A.

a) Justificat
i c
a determinarea lui T (H, A, w) se poate
face n timp polinomial pentru cazul c
and A = V (H)
sau |A| 2.
420

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+ .
Consider
am
si graful complet Kn cu mult
imea de v
arfuri
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)

421

Setul de probleme 12
Problema 1. Fie v valoarea fluxului maxim in ret
eaua
R = (G, c, s, t). Demonstrat
i c
a exist
a k st-drumuri in G,
P1, ...., Pk (0 k |E(G)|),
si numerele reale nenegative

v1 , ..., vk , astfel incit x : E(G) R , definit pentru orice


arc ij prin xij = 0 + t:ijPt vt , este flux 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 : fiecare Bi este un subgraf bipartit complet al lui

Kn , orice dou
a grafuri Bi si Bj au mult
imile de muchii disjuncte
si i=1,k(A)E(Bi ) = E(Kn ). Ar
atat
i c
a orice GP-

descompunere 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)
422

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)

423

Setul de probleme 13
Problema 1. Consiliul municipal al unui or
a
sel a decis
s
a elimine blocajele de circulat
ie de pe str
azile acestuia prin introducerea sensului unic pe fiecare strad
a.
Desigur, va trebui ca ntre orice dou
a locat
ii s
a existe (m
acar) un drum de acces dup
a aceast
a decizie.
Dac
a reprezent
am graful str
azilor folosind noduri pentru
intersect
iile stradale
si muchii conect
and aceste noduri
corespunz
ator str
azilor, o situat
ie simplificat
a este dat
a
de urm
atoarea figur
a :

Desigur, graful real al str


azilor este mult mai complicat

si de aceea a fost angajat un expert (student la info)


care, analiz
andu-l, a observat c
a are proprietatea c
a este
2-conex (orice intersect
ie s-ar bloca, singurele locat
ii
afectate sunt cele de pe str
azile din acea intersect
ie)

si a propus urm
atorul algoritm de orientare a muchiilor
(fixarea sensului unic pentru fiecare strad
a):
424

1. Se alege un nod oarecare


si se execut
a o parcurgere
dfs etichet
and nodurile de la 0 la n1 (n e num
arul
de noduri din graf) n ordinea nt
alnirii lor;
2. Fiecare muchie (strad
a) este orientat
a de la nodul
cu etichet
a mai mic
a la nodul cu etichet
a mai mare
dac
a acea muchie face parte din arborele dfs construit,
si de la nodul cu etichet
a mai mare la nodul
cu etichet
a mai mic
a, n caz contrar.
Ar
atat
i c
a algoritmul funct
ioneaz
a corect pe graful din
figura de mai sus
si apoi demonstrat
i c
a algoritmul este
corect (digraful obt
inut este tare conex) pentru orice
graf 2-conex.
(1+3 puncte)

Problema 2. Demonstrat
i c
a orice graf G conex are
un subgraf indus H astfel nc
at :
1. H este conex;
2. |H| = 2|S| 1, unde S este o mult
ime stabil
a a
grafului H;
3. v V (G) V (H) w V (H) astfel nc
at vw E(G).
(2 puncte)
425

Problema 3. La sf
ar
situl unei zile de lucru, laborantul
a observat c
a a disparut un mouse din laborator, de
si la
verificarea de dimineat

a nu lipsea. Din registrul s


alii a
rezultat c
a n acea zi au intrat n laborator doar urm
atorii

sase student
i: Ana, Barbu, Costic
a, Dan, Elena
si Ion.
De asemenea, se
stie c
a fiecare din ei a stat n laborator
un interval de timp
si apoi a plecat (dar nu se cunosc
orele de venire sau plecare
si nici ordinea n care cei

sase au accesat laboratorul). Decanul i-a anchetat,


si a
obt
inut urm
atoarele m
arturii (sub jur
am
ant):
1. Ana a spus c
a i-a vazut n laborator pe Barbu
si Elena;
2. Barbu a spus c
a i-a vazut n laborator pe Ana
si Ion;
3. Costic
a a spus c
a i-a vazut n laborator pe Dan
si Ion;
4. Dan a spus c
a i-a vazut n laborator pe Ana
si Ion;
5. Elena a spus c
a i-a vazut n laborator pe Barbu
si Costic
a;
6. Ion a spus c
a i-a vazut n laborator pe Costic
a
si Elena.

Analiz
and r
aspunsurile, decanul (care stia teoria grafurilor)
a intuit c
a exact unul (hot
ul) dintre cei
sase student
i a
mint
it, apoi, folosind deduct
ia logic
a, l-a identificat
si
i-a cerut s
a aduc
a de urgent

a mouse-ul napoi pentru a


nu-l exmatricula.
S
tiind c
a decanul a asociat fiec
arui student un interval
de timp (notat, A,B,..., dup
a numele lor)
si c
a dintr-o
m
arturie X... spune c
a i-a v
azut pe Y...
si Z... a dedus
c
a intervalul X se intersecteaz
a cu Y
si Z, evident
iat
i
inconsistent
a din graful asociat intersect
iilor acestor intervale
si cum se poate depista hot
ul, n ipoteza c
a exact
unul dintre cei
sase student
i a mint
it.
(2+2 puncte)
426

Problema 4. Un grup de polit


i
sti
si desf
a
soar
a activitatea n 8 locat
ii a, b, . . . , h conectate prin str
azi cu
sens unic de circulat
ie, a
sa cum este descris n digraful
de mai jos. Se observ
a c
a n fiecare nod (locat
ie) intr
a
dou
a arce
si din fiecare ies dou
a arce. De asemenea se
observ
a c
a digraful corespunz
ator este tare conex.
a

S
eful polit
i
stilor a hot
ar
at s
a vopseasc
a str
azile ro
su
si
oranj astfel nc
at din fiecare nod s
a plece un arc ro
su

si un arc oranj. Scopul acestei decizii a fost ca atunci


c
and ntr-o locat
ie oarecare se nt
ampl
a o infract
iune,
s
a-i adune operativ pe tot
i polit
i
stii n acel nod al digrafului transmit

andu-le tuturor prin sistemul lor de radiorecept


ie mesajul Adunarea
si un cuv
ant din {r, o}

(cuv
ant ce depinde doar de noduln care loc infract
iunea).
427

La primirea mesajului fiecare polit


ist
si noteaz
a cuv
antul
primit
si l folose
ste drept algoritm de deplasare astfel:
din nodul n care se afl
a pleac
a pe strada ro
sie sau
pe strada oranj, dup
a cum e prima liter
a (r sau o)
din cuv
antul primit. Apoi, daca n-a ajuns la locul de
adunare (pe care-l recunoa
ste dup
a prezent
a
sefului),
alege strada indicat
a de a doua liter
a a cuv
antului
si a
sa
mai departe.
Descriet
i (ntr-un pseudocod prietenos) un algoritm care
sa depisteze o vopsire ro
su-oranj a arcelor digrafului
si,
corespunz
ator acesteia, a c
ate unui cuv
ant de rutare
pentru fiecare nod de adunare ( sau s
a decid
a c
a nu
exist
a solut
ie).
Pentru digraful din figur
a exist
a solut
ii! Descriet
i una
din ele
si argumentat
i c
a merge (se poate implementa
algoritmul descris, sau se poate folosi o abordare try and
error).
(2+2 puncte)

428

Setul de probleme 14
Problema 1. In problema P2 - a determinarii drumurilor de cost minim de la un v
arf dat, s, la toate
celelalte ale unui digraf G = (V, E) - se
stie c
a funct
ia
de cost asociat
a arcelor satisface a : E {0, 1, . . . , C},
unde C este constant
a ntreag
a (adic
a nu depinde de
n = |V | sau de m = |E|).
S
a se adapteze algoritmul lui Dijkstra pentru aceast
a
situat
ie, astfel nc
at complexitatea timp s
a fie O(n +
m). Se vor descrie structurile de date folosite
si modul
(argumentare !) n care se obt
ine complexitatea liniar
a.
(2+2 puncte)
Problema 2. Pentru o instant

a C a problemei 2SAT
construim multigraful GC = (V ; E) ale c
arui muchii sunt
colorate R(o
su)
si B(leu), astfel:
1. V ; R ; B ;
2. for C C do {
if C = x x then {V V {x , x };R R {x x }};
if C = x x then {V V {x , x };B B {x x }};
if C = x x then
{V V {x , x , xC }; R R {x xC }; B B {xC x }};
if C = x x then
{V V {x , x , xC }; R R {x xC }; B B {xC x }};
}
3. E R B; output GC = (V ; E).
429

Observ
am c
a V cont
ine mult
imea X a variabilelor booleene
care apar n 2-clauzele lui C
si pentru fiecare 2-clauz
a
C C compus
a dintr-un literal pozitiv
si unul negativ
(clauz
a mixt
a) se adaug
a un v
arf nou la V . Notat
ia
R B semnific
a faptul c
a muchiile e R B au multiplicitate 2 [extremitat
ile lui e sunt unite printr-o muchie
R(o
sie)
si una B(leu)].
Demonstrat
i c
a C este satisfiabil
a dac
a
si numai dac
a
exist
a S, T V astfel nc
at: S T = , S T = V , nu
exist
a muchii R(o
sii) cu ambele extremit
a
ti n S
si nu
exist
a muchii B(leu) cu ambele extremit
a
ti n T .
(2 +2 puncte)
Problema 3.
Fie G = (V, E) un graf conex
si c :
E R. Pentru un arbore part
ial oarecare T = (V, E )
al lui G,
si dou
a v
arfuri oarecare v, w V , se noteaz
a
w unicul drum de la v la w
w)
cu v
n T
si cu E(v
T
T
mult
imea muchiilor acestuia. Demonstrat
i c
a arborele
part
ial T = (V, E ) este arbore part
ial de cost minim
dac
a
si numai dac
a

w) are loc c(e) c(e ).


e = vw E \ E , e E(v
T
(1+1 puncte)

430

Problema 4. Fie G = (V, E) un graf conex f


ar
a punt
i

si c : E R. Fie T = (V, E ) un arbore part


ial al lui G de

cost minim
si e E o muchie oarecare a sa. T e are
exact dou
a componente conexe cu mult
imile de v
arfuri
V1
si V2. Muchia de cost minim (diferit
a de e) printre
toate muchiile lui G cu o extremitate n V1
si cealat
a n
V2 se noteaz
a cu repT (e) (deoarece e nu e punte n G,
repT (e) exist
a !).
a) Demonstrat
i c
a dac
a T e arbore part
ial de cost minim
n G
si e este o muchie oarecare a lui T atunci T1 =
ial de cost minim n
T e + repT (e) este arbore part

G e (T1 se obt
ine din T scot

and muchia e
si ad
aug
and
muchia repT (e) ).
b) Fie k N astfel nc
at 2 k < |V |
si T1 , . . . , Tk arbori
part
iali ai lui G astfel nc
at c(T1 ) c(T2 ) . . . c(Tk )

si pentru orice alt arbore part


ial T al lui G avem c(T )
c(Tk ) (T1 , . . . , Tk sunt primii cei mai mici arbori part
iali
ai lui G n raport cu costul c).
Fie T un arbore part
ial de cost minim n G. Pentru
fiecare muchie e a lui T consider
am ponderea w(e) =
am cele |V | 1 muchii ale lui
c(repT (e)) c(e). Sort

T cresc
ator n raport cu ponderile w. Fie S mult
imea
format
a din ultimile |V | k muchii din acest
sir.
Demonstrat
i c
a S E(Ti) i {1, . . . , k}.
(2+2 puncte)
431

Setul de probleme 15
Problema 1. Demonstrat
i c
a num
arul cuplajelor perfecte ale unui arbore este 0 sau 1
si c
a un arbore are
un cuplaj perfect dac
a
si numai dac
a prin ndep
artarea
oric
arui v
arf se obt
ine o p
adure cu exact un arbore de
ordin impar.
(2+2 puncte)

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


ea
si (Si , Ti) (i =
1, 2) sect
iuni de capacitate minim
a ale ei. Demonstrat
i
c
a
si (S1 S2, T1 T2)
si (S1 S2, T1 T2) sunt sect
iuni
de capacitate minim
a n R.
(3+1 puncte)

Problema 3. Fie G = (S, T ; E) un graf bipartit


si M un
cuplaj de cardinal maxim n G. Consider
am urm
atorele
mult
imi de v
arfuri:
1. P = {v ST |w E(M )
si un drum alternat (relativ la M n G)
de lungime par
a de la w la v};
2. I = {v ST |w E(M )
si un drum alternat (relativ la M n G)
de lungime impar
a de la w la v};
3. N = {v S T | nu w E(M )
si un drum alternat (relativ la
M n G ) de la w la v}.

432

Demonstrat
i c
a :
a) Mult
imile P ,I
si N sunt disjuncte dou
a c
ate dou
a
si
sunt acelea
si pentru orice cuplaj de cardinal maxim M .
b)
In orice cuplaj de cardinal maxim al lui G fiecare v
arf
din I este cuplat cu un v
arf din P
si fiecare v
arf din N
este cuplat cu un alt v
arf din N . Cardinalul maxim al
unui cuplaj al grafului este |I| + |U2 | .
(2+2 puncte)

Problema 4.
O firm
a de soft dispune de n programatori, P1, P2, . . . , Pn, pentru executarea a m lucr
ari,
L1, L2, . . . , Lm . Se cunoa
ste pentru fiecare programator
Pi lista Li de lucr
ari pe care le poate executa
si num
arul
si al lucr
arilor din Li pe care le poate termina ntr-o
s
apt
am
an
a (si |Li|). Fiecare lucrare poate fi executat
a de m
acar un programator.
S
a se descrie cum se poate determina num
arul minim de
s
apt
am
ani n care se pot termina toate lucr
arile, folosind
fluxurile n ret
ele.
(2 puncte)

433

Setul de probleme 16
Problema 1.
Fie G = (V, E) un graf cu n v
arfuri
{v1 , . . . , vn }
si c : E R+ o funct
ie de capacitate nenegativ
a, care asociaz
a fiec
arei muchii e capacitatea c(e).
Se nume
ste sect
iune n G orice partit
ie cu dou
a clase
(S, T ) a lui V . Capacitatea sect
iunii (S, T ) este c(S, T ) =
P
iune minim
a n G este o sect
iune
eE, |eS|=1 c(e). O sect
(S0 , T0) astfel nc
at
c(S0 , T0) =
(S,T )

min
sect
iune n

c(S, T ).
G

a) S
a se arate c
a se poate determina n timp polinomial
o sect
iune minim
a n graful G rezolv
and un num
ar polinomial de probleme de flux maxim pe ret
ele convenabil
alese.
b) Ar
atat
i c
a dac
a G = Cn (graful circuit de ordin n 3)
cu toate muchiile de capacitate 1, atunci exist
a n(n1)
2
sect
iuni de capacitate minim
a.
(2+2 = 4 puncte)
Problema 2. In continuarea notat
iilor de la problema
1, definim pentru orice pereche i, j {1, . . . , n}, i 6= j,
ci,j =

(S,T )

min
sect
iune n G cu

viS

si

c(S, T ).
vj T

a)Demonstrat
i c
a pentru orice
sir i1, i2, . . . , ik de k 3
elemente distincte din {1, . . . , n} are loc
ci1 , ik min{ci1 , i2 , ci2 , i3 , . . . , cik1 , ik }.

434

b) Se consider
a graful Kn cu mult
imea de v
arfuri {1, . . . , n}

si funct
ia de pondere pe muchiile sale c definit
a mai
sus (not
am c
a ci, j = cj, i). Fie T un arbore part
ial de
pondere maxim
a al lui Kn (n raport cu ponderea c ).
Demonstrat
i c
a i, j {1, . . . , n}, i 6= j, dac
a P este

unicul drum de la i la j n T , atunci


ci, j = min c (e).
e P

Observat
ie: Rezult
a c
a exist
a un arbore cu mult
imea de v
arfuri
V , cu ponderi pe muchii astfel nc
at, pentru a determina capacitatea minim
a a unei sect
iuni n graful G care separ
a dou
a virfuri,
determin
am muchia de pondere minim
a de pe drumul ce une
ste
cele dou
a v
arfuri n arbore.
(2+3 = 5 puncte)

Problema 3.
Se consider
a o competit
ie sportiv
a ntre n echipe
{e1 , . . . , en}, n care fiecare echip
a disput
a a 1 meciuri cu fiecare dintre celelalte n 1 echipe (deci, fiecare
echip
a va juca a(n 1) meciuri n total). Orice meci se
termin
a cu victoria uneia dintre cele dou
a echipe participante (nu exist
a remize). Se dore
ste s
a se decid
a dac
a
este posibil ca, la finalul competit
iei, fiecare echip
a ei
s
a c
astige un num
ar de ci meciuri (vectorul de ntregi
c[1 . . . n] este intrarea problemei de decizie).
Ar
atat
i ca problema se poate rezolva n timp polinomial cu ajutorul
fluxurilor pe o ret
ea convenabil definit
a.
(3 puncte)

Problema 4. In ret
eaua R = (G, s, t, c), toate capacit
a
tile nenule sunt numere ntregi pozitive pare.
Demonstrat
i c
a exist
a un flux x de valoare maxim
a cu
proprietatea c
a pe orice arc, dac
a fluxul este nenul atunci
el este un num
ar pozitiv par.
(2 puncte)
435

Setul de probleme 17
Problema 1.
Fie G = (S, T ; E) un graf bipartit cu
n = |V (G)| v
arfuri
si m = |E| muchii.
a) Demonstrat
i c
a m

n2
.
4

b) Demonstrat
i c
a, dac
a Bnm este matricea de incident

a
a lui G, atunci orice submatrice p
atrat
a C a lui B are
proprietatea c
a det(C) {1, 0, 1}.
c) Se orienteaz
a arbitrar muchiile lui G
si se obt
ine di~
graful G.
Demonstrat
i c
a exist
a K V (G) = S T
astfel nc
at K e mult
ime stabil
a n G
si oricare ar fi
~
v V (G)K, exist
a u K cu proprietatea c
a uv E(G).
(2+2+2 = 6 puncte)

Problema 2.
Fie G = (V, E) un graf de ordin n
si
n
s, t V astfel nc
at dG (s, t) > 2 . Demonstrat
i c
a exist
a
v V {s, t} cu proprietatea c
a orice drum de la s la
t n graful G trece prin v. Descriet
i un algoritm de
complexitate timp O(n + |E|) care s
a determine acest
v
arf v.
(2+2 = 4 puncte)

436

Problema 3. a) Modificat
i algoritmul BFS astfel nc
at
pentru un graf G = (V, E) dat
si s V s
a determine
pentru orice v
arf v V num
arul drumurilor de lungime
minim
a de la s la v, n timpul O(|V | + |E|).
b) Aceea
si problem
a pentru cazul n care G este digraf!
(2+2 = 4 puncte)

437

Setul de probleme 18
Problema 1. Fie G = (V, E) un graf conex cu n v
arfuri

si m muchii
si fie c : E R>0 o funct
ie de cost pe muchiile sale.
a) Fie T = (V, ET ) un arbore part
ial al lui G cu proprietatea c
a pentru orice muchie e ET exist
a un arbore

at e ET .
part
ial de cost minim T = (V, ET ) astfel nc
Adev
arat sau fals? : T este arbore part
ial de cost
minim (pentru r
aspunsul adev
arat dat
i o demonstrat
ie,
pentru r
aspunsul fals dat
i un contraexemplu).
b) Fie R
si S doi arbori part
iali ai lui G, R 6= S. Cum
se poate construi un
sir de lungime minim
a de arbori
part
iali T0 , T1 , . . . , Tk astfel nc
at T0 = R, Tk = S
si fiecare
arbore Ti (i 1) se obt
ine din precedentul, Ti1 , prin

stergerea unei muchii


si ad
augarea alteia? Care este
complexitatea timp a construct
iei?
c) Pentru orice arbore part
ial T = (V, ET ) al lui G se define
ste costul
au ca fiind produsul costurilor muchiilor
Q s
sale: c(T ) =
c(e). Descriet
i un algoritm c
at mai efieET

cient care s
a determine T , arbore part
ial al lui G, astfel
nc
at
c(T ) =
max
c(T ).
T arbore part
ial al luiG

(2+2+2 = 6 puncte)
438

Problema 2.
decizie:
AGM

Consider
am urm
atoarea problem
a de

Input: G = (V, E) graf, k N.


Question: Exist
a un arbore part
ial al T al lui G
cu (T ) k ?

Ar
atat
i c
a AGM P.

(2 puncte)

Problema 3. Fie G = (V, E) un graf 3-regulat, conex

si f
ar
a punt
i.
a) Fie uv E o muchie oarecare a lui G ca n figura de
mai jos. Se elimin
a cele dou
a v
arfuri u
si v, iar vecinii
lor se conecteaz
a prin muchii a
sa cum este indicat n
figur
a. Demonstrat
i c
a m
acar unul din grafurile G1uv sau
G1uv este 3-regulat, conex
si f
ar
a punt
i. Se noteaz
a cu

G acest graf.
a

u
sau
v

1
G uv

2
G
uv

b) Ar
atat
i c
a dac
a G are un cuplaj perfect M , atunci
M se poate transforma ntr-un cuplaj perfect al lui G.
c) Deducet
i c
a pentru orice graf 3-regulat, conex
si f
ar
a
punt
i se poate construi un cuplaj perfect. Ce complexitate timp are construct
ia, dac
a G are n v
arfuri ?
(2+2+2 = 6 puncte)
439

Setul de probleme 19
Problema 1. Se consider
a ret
eaua R = (G, c, s, t) cu
digraful G = (V, E) av
and n v
arfuri
si m arce, c : E Z+

si C Z+, C = maxeE c(e).


a) Demonstrat
i c
a valoarea maxim
a a unui flux n ret
eaua
R este cel mult m C.
b) Ar
atat
i c
a x flux n R, dat K Z+ , se poate depista
un drum de cre
stere P de capacitate rezidual
a (P ) cel
put
in K (dac
a el exist
a), n timpul O(m).
c) Consider
am urm
atorul algoritm
SC-MAX-FLOW(R)
C = maxeE c(e)
x0
// x este fluxul curent din ret
ea
K 21+log C
while K 1 do {
while x are un dr. de cre
st. P cu (P ) K do {
x x (P ) }
K K/2 }
return x
1. Demonstrat
i c
a algoritmul SC-MAX-FLOW(R) de
mai sus construie
ste un flux x de valoare maxim
a n R.
2. Demonstrat
i c
a, dup
a fiecare iterat
ie a buclei while
exterioare, valoarea maxim
a a unui flux n R este cel
mult v(x) + m K.

3. Demonstrat
i c
a pentru fiecare valoare a lui K, num
arul
iterat
iilor buclei while interioare nu dep
a
se
ste 2m. Deducet
i
2
c
a algoritmul are complexitatea O(m log C).
(2+2+1+2+2 = 9 puncte)
440

Problema 2.
Consider
am urm
atoarea problem
a de
decizie:

MIN-SECT
IUNE-UNICA
Input: R = (G, c, s, t), ret
ea.
Question: Exist
a n R o unic
a sect
iune de capacitate
minim
a?
P. (2 puncte)
Ar
atat
i c
a MIN-SECT
IUNE-UNICA
Problema 3. a) Fie G = (V, E) un graf
si v V un
v
arf cu gradul dG (v) = p 4. Fie NG(v) = {u1, . . . , up}.
Construim graful H astfel: (1) se
sterg din G muchiile
vu1, . . . , vup; (2) se adaug
a la G circuitul C2p cu v
arfurile
1
2p
v , . . . , v ; (3) se adaug
a la graful obt
inut muchiile v 2i1 ui
pentru i {1, . . . , p},
si muchia vv 2p (vezi figura de mai
jos). Demonstrat
i c
a (H) = (G) + p.
4
v

v2

v 2p

u1

u2

up

v 2p-1

v3

v1

u1

up

u2

b) Fie SM3 problema de decizie obt


inut
a din SM (vezi
pag. 283 din curs) prin restrict
ionarea instant
ei la un
graf cu gradul maxim cel mult 3. Demonstrat
i c
a SM
SM3.
(1+2 = 3 puncte)
441

Setul de probleme 20
Problema 1. Fie G = (V, E) un graf cu V = {1, . . . , n}.
Consider
am funct
ia f : V V definit
a de
f (v) = min{u|u V, dG (v, u) 2}.
a) Demonstrat
i c
a dac
a exist
a vw E(G) astfel nc
at
f (v) 6= f (w) atunci G cont
ine graful P4 ca subgraf indus.
b) Demonstrat
i c
a dac
a G este P4-free atunci dou
a
v
arfuri oarecare u
si v sunt n aceea
si component
a conex
a
dac
a
si numai dac
a f (u) = f (v). (2+2 = 4 puncte)
Problema 2. Numim graf bicolor perechea (G, m),
unde
G = (V (G), E(G)) este un graf, iar m : E(G) {alb, verde}
este o funct
ie care asociaz
a fiec
arei muchii e E(G) o
culoare m(e) {alb, verde}. Graful bicolor (G, m) este
verzui dac
a n orice circuit al lui G num
arul muchiilor
verzi este par.
a) Demonstrat
i c
a dac
a (Kn , m) este verzui atunci exist
a

mult
imile A
si B de v
arfuri astfel nc
at V (Kn) = AB
(reuniune disjunct
a)
si pentru orice muchie e = uv
E(Kn ) avem:
m(e) =

alb
verde

dac
a u, v A sau u, v B
altfel.

442

b) Demonstrat
i c
a dac
a (G, m) este verzui
si n = |G|
atunci se pot ad
auga muchii grafului G, extinz
and colorarea m la aceste noi muchii, astfel nc
at s
a obt
inem
graful bicolor verzui (Kn , m).
c) Descriet
i un algoritm care primind la intrare graful
bicolor (G, m) determin
a n timpul O(|V (G)| + |E(G)|)
dac
a este sau nu verzui.
(2+2+2 = 6 puncte)
Problema 3. Exist
a aplicat
ii n care se d
a un digraf
G = (V, E)
si a : E(G) R+
si trebuie s
a r
aspundem
repetat la ntreb
ari de tipul: Care este drumul minim
dintre s
si t? (s, t V (G), s 6= t)

Pentru situat
ia c
and G este un digraf mare, se propune
aplicarea algoritmului lui Dijkstra (costurile fiind nenegative) dar bidirect
ional: se construie
ste G inversul lui
G, n care orice arc (i, j) E(G ) are costul aij = aji;
se aplic
a apoi succesiv c
ate un pas al algoritmului lui
Dijkstra pentru G, s
si functia de cost a
si apoi un pas

pentru G , t
si funct
ia de cost a ; la depistarea unui v
arf
u marcat definitiv (introdus n S) de cele dou
a instant
e
ale algoritmului lui Dijkstra, se transform
a drumul de la

t la u din G depistat de a doua instant

a ntr-un drum
D1 n G de la u la t,
si se returneaz
a drumul de la s la u
depistat de prima instant

a si drumul D1 .
Dat
i un contraexemplu pentru algoritmul propus!
(2 puncte)
443

Problema 4.
Un graf interval este definit de o mult
ime finit
a

si nevid
a de intervale de pe axa real
a. Pentru
fiecare interval avem un v
arf n graful interval

si dou
a v
arfuri sunt adiacente dac
a intervalele
corespunz
atoare lor au intersect
ia nevid
a.
Descriet
i un algoritm care primind la intrare
n intervale (nchise) cu extremit
a
tile numere
ntregi din intervalul [1..2n] determin
a n timpul
O(n) componentele conexe ale grafului interval
definit de acestea.
(2 puncte)

444

Setul de probleme 21
Problema 1. Fie G = (V, E) un graf conex cu n v
arfuri

si m muchii. Fiecare muchie e E are asociat un cost


real c(e), iar costurile muchiilor sunt distincte.
a) Descriet
i un algoritm care s
a decid
a n timpul O(n +
m) dac
a, pentru o muchie dat
a e0 E, exist
a un arbore
part
ial de cost minim al lui G care s
a cont
in
a muchia e0.
b) Argumentat
i corectitudinea algoritmului propus. (2+2=4
puncte)

Problema 2.
Pentru graful conex G = (V, E) cu n
v
arfuri, m muchii
si funct
ia de cost c : E R, se
cunoa
ste lista muchiilor (cu costurile aferente)
si un arbore part
ial de cost minim T = (V, ET ). Arborele T este
reprezentat de vectorul parent cu n componente, n care
pentru orice v V {s} avem parent[v] = v
arful dinaintea lui v de pe unicul drum din T de la v
arful s la v, iar
parent[s] = s (s este un v
arf oarecare, fixat). Se dore
ste
s
a se actualizeze lista muchiilor
si arborele T la operat
iile
de ad
augare
si de
stergere a unei muchii. Se cere s
a se
proiecteze algoritmi de complexitate O(n + m) pentru
fiecare din aceste operat
ii (cu justificarea corectitudinii

si a complexit
a
tii timp).
Mai precis, ace
sti algoritmi au:
a) La intrare o muchie e = uv nou
a
si costul ei, iar la
ie
sire noua list
a de muchii (E {e})
si vectorul parent
reprezent
and un arbore part
ial de cost minim n G + e.
445

b) La intrare o muchie e = uv existent


a n graful G, iar
la ie
sire noua list
a de muchii (E {e})
si vectorul parent
reprezent
and un arbore part
ial de cost minim n G e
(dac
a acest arbore part
ial mai exist
a; altfel se returneaz
a
mesajul c
a graful nu mai este conex).
(2+2 = 4 puncte)
Problema 3.
Fie T un arbore cu un num
ar par de
v
arfuri care nu are cuplaj perfect. Demonstrat
i c
a exist
a n T un v
arf v0 cu proprietatea c
a sterg
and v0 din
arborele T (
si toate muchiile incidente cu v0) se obt
ine
o p
adure cu m
acar doi arbori cu un num
ar impar de
v
arfuri.
(2 puncte)

Problema 4. Un cuplaj M al unui graf G se nume


ste
cuplaj tare dac
a subgraful indus n G de mult
imea v
arfurilor
saturate de M este graful |M |K2. Proiectat
i un algoritm
de complexitate O(n) pentru g
asirea unui cuplaj tare de
cardinal maxim ntr-un arbore cu n v
arfuri. Argumentat
i
corectitudinea acestui algoritm.
(2+2= 4 puncte)

446

Setul de probleme 22
Problema 1.
Fie G un graf cu proprietatea c
a nu
are circuite impare disjuncte. Demonstrat
i c
a G este
5-colorabil.
(2 puncte)

Problema 2. Graful G = (V, E) cu n v


arfuri
si m muchii
modeleaz
a o ret
ea de comunicat
ie bidirect
ional
a: n
fiecare v
arf este plasat un utilizator care schimb
a mesaje
cu ceilalt
i utilizatori folosind muchiile incidente cu v
arful
n care este localizat (un sistem de rutare asociat ret
elei
va asigura ajungerea mesajelor la destinatari). Intr-un
v
arf special s V se afl
a un utilizator care trimite spamuri. Pentru fiecare muchie {u, v} E a grafului se
cunoa
ste costul c({u, v}) al instal
arii unui filtru care s
a
blocheze orice spam ce s-ar putea transmite pe muchia
{u, v} (de la u la v sau de la v la u). Se dore
ste ca o
mult
ime A V {s} de utilizatori s
a fie protejat
a de
spamurile trimise de utilizatorul din s.
Se cere s
a se proiecteze un algoritm cu timp de lucru
polinomial care s
a determine o mult
ime de muchii E E
pe care s
a se plaseze filtrele care sa protejeze utilizatorii
din A
si s
a aib
a cost minim (suma costurilor muchiilor din
E s
a fie minim
a printre toate mult
imile ce pot proteja
A). Justificare.
(2+2 = 4 puncte)
447

Problema 3. Un nucleu ntr-un digraf G = (V, E) este


o mult
ime S de v
arfuri cu proprietatea c
a S nu cont
ine
v
arfuri adiacente
si pentru orice v
arf u V S exist
a
v S astfel nc
at (v, u) E. Fie problema de decizie:
:
NUCLEU
INSTANT
A
G = (V, E) digraf.
INTREBARE:
Are G un nucleu?
Demonstrat
i c
a urm
atoarea construct
ie ofer
a o reducere polinomial
a a problemei SAT la problema NUCLEU
(SAT N U CLEU ).
Dat
a o instant

a F a lui SAT construim digraful G astfel:


- pentru fiecare clauz
a C a lui F ad
aug
am la G un 31 ;
1
3
3
3
2
2
2
1
1
circuit vC , (vC , vC ), vC , (vC , vC ), vC , (vC , vC ), vC
- pentru fiecare variabil
a x care apare n formula F
ad
aug
am la G un 2-circuit vx , (vx , vx ), vx , (vx , vx ), vx ;
- pentru fiecare pereche (l, C) unde l este un literal
(x sau x) care apare n clauza C ad
aug
am la G arcele
3
1 ), (v , v 2 ), (v , v ) .
(2+2=4 puncte)
(vl , vC
l C
l C

Problema 4.
Fiecare student dintr-o mult
ime S de
n > 0 student
i opteaz
a pentru o submult
ime de 4 cursuri
opt
ionale dintr-o mult
ime C de k > 4 cursuri opt
ionale.
Se cere s
a se descrie un algoritm care s
a determine
n timp polinomial o alocare a student
ilor la cursurile
opt
ionale astfel nc
at fiecare student s
a fie alocat la
exact 3 cursuri opt
ionale (din cele patru pentru care a
optat)
si fiecare curs opt
ional s
a aib
a repartizat cel mult
3n
i (dac
a o astfel de alocare exist
a).
k student
Justificare.
(2+2= 4 puncte)
448

Setul de probleme 23
Problema 1. Demonstrat
i c
a pentru orice graf orientat
cu m
acar dou
a v
arfuri, G = (V, E), se poate construi n
timp polinomial (n raport cu num
arul de v
arfuri), o
bipartit
ie (S, T ) a lui V ( S T = V , S T = , S, T 6= )
.
astfel nc
at {st E|s S, t T } |E|
4
(2+2 = 4 puncte)

Problema 2.
Un arbore orientat, T~ , este un digraf
obt
inut prin orientarea arbitrar
a a muchiilor unui arbore
T . Dac
a T~ este un arbore orientat, o in-frunz
a a lui
~
~
T este un v
arf v V (T ) cu gradul interior 0
si gradul
exterior 1 (d
= 0 d+
= 1)
si o out-frunz
a a lui T~ este
~
T
T~
un v
arf v V (T~ ) cu gradul interior 1
si gradul exterior

+
0 (d
am urm
atorul algoritm:
~ = 1 d ~ = 0). Consider
T

T un a r b o r e o a r e c a r e ;
T~ o o r i e n t a r e a r b i t r a r a l u i T ;
while T~ are mai mult de un v
arf do
elimina din T~ ori toate in-frunzele ori toate out-frunzele.

Demonstrat
i c
a f (T~ ), num
arul iterat
iilor while din algoritmul de mai sus, satisface urm
atoarele inegalit
a
ti:


diam(T )/2 f (T~ ) diam(T ).

(2+2 = 4 puncte)
449

Problema 3. Pentru un graf G = (V, E) se consider


a

si gradul mediu maxim:


gradul mediu: ad(G) = 2|E(G)|
|V (G)|
mad(G) = max{ad(H) : H subgraf indus al lui G}.
Fie k 3 un num
ar ntreg. Demonstrat
i c
a dac
a un
graf G are num
arul cromatic mai mare dec
at k
si gradul
mediu maxim este cel mult k, atunci G are un subgraf
indus k-regulat
((G) > k mad(G) k A V (G) a. . [A]G este k-regulat).
(2 puncte)

Problema 4. Problema 4. Fie G = (V, E) digraf, V =


{1, . . . , n}, s V
si a : E R, astfel nct C circuit n G
avem a(C) > 0. Se consider
a tablourile de ntregi u[1..n]

0
dac
a i=s

si inainte[1..n] init
ializate astfel: u[i] =
dac
a i 6= s

si inainte[i] = 0, pentru orice i {1, . . . , n}. Fie try


urm
atoarea procedur
a:
try(e = ij E)


if u[i]+c(e) < u[j] then u[j] u[i]+c(e); inainte[j] i

a) Demonstrat
i c
a dup
a orice secvent

a (finit
a) de apeluri
ale procedurii try, dac
a u[j] < , atunci exist
a un drum
P n G de la s la j de cost a(P ) = u[j].
b) Fie P = (v0 , v0v1 , v1 , v1 v2, . . . , vk1 , vk1 vk , vk ), un drum
de cost minim de la v0 = s la vk = j n G.
Fie secvent
a (finit
a) de apeluri ale procedurii try try(e1),
try(e2), . . ., try(en) astfel nc
at arcele drumului P apar
n secvent

a n ordinea lor de parcurgere (exist


a indicii
450

1 t1 < t2 < . . . < tk n astfel nc


at et1 = v0 v1 , . . . , etk =
vk1 vk ).
Demonstrat
i c
a dup
a o astfel de secvent

a de apeluri
avem u[j] = a(P )
si {j, inainte[j], inainte[inainte[j]], . . . , s}
sunt v
arfurile unui drum de cost minim de la s la j.
(2+2= 4 puncte)

451

Setul de probleme 24
Problema 1.
Un graf G = (V, E) de ordin par se
nume
ste critic dac
a nu are cuplaj perfect, dar pentru
orice muchie e E(G), graful G + e are cuplaj perfect.
3
De exemplu, grafurile K1 K
si K1,3 sunt grafuri critice
noteaz
cu patru v
arfuri (
a reuniunea disjunct
a a dou
a
grafuri).
a) Demonstrat
i c
a singurele grafuri critice de ordin 4
3
sunt K1 K
si K1,3 .
b) Determinat
i toate grafurile critice de ordin 10.
Indicat
ie. Se poate folosi teorema lui Tutte.
(2+2 = 4 puncte)
ste
Problema 2. In graful conex G = (V, E) se cunoa
c(e) R, costul fiec
arei muchii e E,
si un arbore part
ial
T0 = (V, ET0 ) al s
au. Se consider
a urm
atoarele proceduri:

try+(e E)
if e 6 ET0 then
{ fie C circuitul unic din T0 + e
if f muchie a circuitului C cu c(e) < c(f )
then
T0 (T0 f ) + e }

452

try (e E)
if e ET0
{ fie V1, V2 mult. v
arf. comp. conexe ale lui T0 e

si f o muchie de cost minim printre toate muchiile


dintre V1
si V2.
if c(f ) < c(e) then
T0 (T0 e) + f } .
Presupunem c
a toate costurile muchiilor sunt distincte

si c
a T este un arbore part
ial de cost minim.
a) Demonstrat
i c
a dac
a se aplic
a try + pentru o secvent

a
de muchii distincte, aranjate cresc
ator dup
a cost
si n

care apar toate muchiile lui T , atunci arborele init


ial T0
este transformat n T .
b) Demonstrat
i c
a dac
a se aplic
a try pentru o secvent

a
de muchii distincte, n care apar toate muchiile arborelui
init
ial T0 , atunci arborele init
ial T0 este transformat n
T .
(2+2 = 4 puncte)
Problema 3. Fie C o clas
a de grafuri care cont
ine toate
grafurile complete (n1 Kn C). Dac
a G = (V, E) este
un graf cu proprietatea c
a G 6 C, numim C-extensie
minimal
a a lui G orice graf H = (V, E ) cu E E
si

H C, dar F = (V, E ) graf cu E E E ) este


astfel nc
at F 6 C.
Presupunem c
a dispunem de un algoritm cu timp de lucru polinomial Sandw care, primind la intrare dou
a grafuri G1 = (V, E1 )
si G2 = (V, E2 ) cu E1 E2, returneaz
a
453

r
aspunsul da
si un graf G3 = (V, E3 ) cu E1 E3 E2

si G3 C, dac
a un astfel de graf G3 exist
a. Altfel,
returneaz
a r
aspunsul nu.
Demonstrat
i c
a se poate folosi acest algoritm pentru
a determina n timp polinomial pentru un graf G =
(V, E) 6 C dat o C-extensie minimal
a a sa.
(3 puncte)

Problema 4. Fie G = (V, E) un graf K1,3 -free.


Demonstrat
i c
a exist
a S V o mult
ime stabil
a maximal
a
n raport cu incluziunea cu proprietatea c
a, pentru orice
mult
ime de v
arfuri T V cu proprietatea c
a v V T :
NG (v) T 6= , avem |T | |S|.
(3 puncte)

454

Setul de probleme 25
Problema 1.
a) Adev
arat sau Fals?
Dac
a ntr-o ret
ea R = (G, s, t, c) capacit
a
tile
arcelor sunt distincte, atunci (n R) fluxul maxim
de la s la t este unic.
Argumentat
i r
aspunsul!
b) Descriet
i un algoritm cu timp de lucru polinomial
care s
a decid
a dac
a ntr-o ret
ea dat
a fluxul maxim de la
intrare la ie
sire este unic (argumentat
i corectitudnea
si
complexitatea timp).
(2+2 = 4 puncte)
Problema 2. Demonstrat
i c
a urm
atoare problem
a este
NP-complet
a.
INT
Date: n, m N (n, m 1), A Zmn, b Zm1

Intrebare: Exist
a x Zn1 astfel nc
at Ax b ?
(Precizare asupra notat
iilor: Dac
a p
si q sunt numere
pq
naturale nenule, Z
noteaz
a mult
imea matricilor cu p
linii
si q coloane cu elemente numere ntregi; n particular
p1
Z
sunt vectori coloan
a cu p elemente ntregi; dac
a x

si y sunt doi vectori cu elemente ntregi, atunci x y


dac
a relat
ia are loc pentru fiecare dou
a componente
xi
si yi.) Indicat
ie: se poate ncerca SM INT.
(2+2 = 4 puncte)
455

Problema 3. Un hipergraf k-uniform este o pereche


H = (V, E), unde V este o mult
ime finit
a
si nevid
a, k
este un num
ar ntreg, k 2, iar E este o submult
ime a
V
mult
imii p
art
ilor cu k elemente ale lui V ( E k ; e E
este o submult
ime de k elemente din V ). Se observ
a
c
a un hipergraf 2-uniform este un graf. Spunem c
a un
hipergraf k-uniform este simplu dac
a exist
a c : V
{1, . . . , k} astfel nc
at pentru orice v, w V , v 6= w, dac
a
exist
a e E astfel nc
at v, w e atunci c(v) 6= c(w).
Consider
am urm
atoarea problem
a de decizie:
k-Simplu
Date: H un hipergraf k-uniform.

Intrebare: Este H simplu ?


a) Demonstrat
i c
a problema 3-Simplu este NP-complet
a.
b) Ar
atat
i c
a problema 2-simplu este din P.
(2+2=4 puncte)
Problema 4. Fie S
si T dou
a mult
imi finite, nevide
si
disjuncte. Pentru fiecare x S T este dat un num
ar
ntreg pozitiv a(x). Se cere s
a se decid
a dac
a exist
a
un graf bipartit G = (S T, E) astfel ca pentru orice
v S T s
a avem dG (v) = a(v). In caz afirmativ, se vor
returna muchiile grafului (S
si T sunt cele dou
a clase ale
bipartit
iei lui G).
Ar
atat
i c
a problema se poate rezolva n timp polinomial
ca o problem
a de flux maxim pentru o ret
ea convenabil
definit
a.
(2 puncte)
456

Setul de probleme 26
Problema 1.
a) Ar
atat
i c
a dac
a M este un mers nchis impar ntr-un
digraf D, atunci M cont
ine un circuit impar n D.
b) Demonstrat
i c
a graful suport al unui digraf tare conex
care nu are circuite impare este un graf bipartit.
(2+2 = 4 puncte)
Problema 2.
S-a propus urm
atorul algoritm (cu timp de lucru polinomial) pentru determinarea num
arului de stabilitate (G)
al unui graf G:
GreedyStab(G)
determin
a un v
arf de grad minim v0 n G ;
if V (G) = {v0 } NG (v0) then r e t u r n 1
else r e t u r n

1 + GreedyStab G ({v0 } NG (v0))

a) Ar
atat
i c
a algoritmul propus poate gre
si oric
at de
mult: n N exist
a un graf G astfel nc
at (G)
GreedyStab(G) = n.
b) Demonstrat
i c
a

GreedyStab(G)

vV (G)

1
1 + dG (v)

si c
a dac
a avem egalitate atunci GreedyStab(G) = (G).
(2+2= 4 puncte)
457

Problema 3. Fie G = (V, E) un digraf, X o multime

finit
a
si c : E 2X o funct
ie care asociaz
a fiec
arui arc
e = vw E o submult
ime a lui X: c(vw) X. Funct
ia
c poate fi extins
a la drumurile lui G, consider
and penS
tru orice drum P al lui G, c(P ) = eE(P ) c(e) (n
particular, dac
a E(P ) = adic
a P este un v
arf
avem c(P ) = ). Pentru orice v, w V , not
a m Pv,w =
arul
{P |P drum n G de la v la w}. Not
am cu A num
de elemente ale mult
imii A, iar # este un element care
nu apart
ine mult
imii X. Consider
am urm
atoarea problem
a:

P: Dat digraful G = (V, E), funct


ia c
si s V , s
a se

determine
pentru
fiecare
v V , un drum Psv astfel



) = min{ c(P ) : P P }.
nc
at c(Psv
s,v
Adev
arat sau Fals?
problema P.

Urm
atorul algoritm rezolv
a

1. u[s] ; parent[s] 0 ; S {s} ;


for v V S do
if sv E then { u[v] c(sv) ;
parent[v] s }
else { u[v] X {#} ;
parent[v] 1 } ;
2. while S 6= V do
{ find v V S s.t.

u[v ] = min{ u[v] : v V S} ;

458

S S {v } ;
for v V S do




if v v E & u[v] > u[v ] c(v v)
then
{ u[v] u[v ] c(v v)
; parent[v] v }

(dac
a r
aspunsul este Adev
arat se va da o demonstrat
ie;
dac
a r
aspunsul este Fals se va da un contraexemplu)
(3 puncte)

Problema 4.
Fie G = (V, E) un graf cu |V | = n, |E| = m, reprezentat
cu ajutorul listelor de adiacent

a. O ordonare a v
arfurilor
lui G este o aplicat
ie injectiv
a : V {1, 2, . . . , n}
((v) = i are semnificat
ia c
a v
arful v se afl
a pe locul
i n ordonarea ). este o ordonare lexicografic
a dac
a
pentru orice dou
a v
arfuri x, y V cu (x) < (y), dac
a
mult
imea D{x,y} = {z V |(z) < (x)
si z este adiacent cu
exact unul dintre x
si y} este nevid
a, atunci z0 D{x,y} cu
si z0y 6 E.
(z0 ) = minzD{x,y} (z) satisface z0x E
a) Ar
atat
i c
a algoritmul de mai jos construie
ste o ordonare lexicografic
a:

Lexicographic(G)
init
ializeaz
a lista L de mult
imi av
and o singur
a mult
ime: V ;
(fiecare multime din L se reprezint
a ca o list
a dublu nl
ant
uit
a)
for i := 1 to n do {
v := primul v
arf al primei mult
imi din L ;

sterge v din acea mult


ime ;
(v) := i ;
for each Lj L do
Lj Lj NG (v) urmat
a de Lj NG (v) ;

sterge din L mult


imile vide }
b) Argumentat
i c
a algoritmul se poate implementa n timpul O(n +
m).
(1 +2 puncte)

459

Setul de probleme 27
Problema 1.
bipartit atunci

Demonstrat
i c
a dac
a G este un graf
(G) = (G).
(3 puncte)

Problema 2.
Fie n N, n 3. Demonstrat
i c
a
num
arul arborilor part
iali ai grafului complet Kn , care
nu cont
in o muchie fixat
a e E(Kn ), este (n 2)nn3 .
(3 puncte)
Problema 3.
Ana
si Barbu se joac
a pe un graf G,
aleg
and alternativ v
arfuri distincte v0 , v1, . . . astfel nc
at,
pentru i > 0, vi este adiacent cu vi1 . Pierde juc
atorul
care nu mai poate alege un v
arf. Demonstrat
i c
a dac
a
Ana ncepe jocul, atunci ea are o strategie c
a
stig
atoare
(adic
a indiferent de c
at de bine joac
a Barbu, ea c
a
stig
a)
dac
a
si numai dac
a graful G nu are un cuplaj perfect.
Argumentat
i c
a, pentru un graf dat, problema de a decide dac
a Ana are o strategie c
a
stig
atoare (atunci c
and
ea ncepe jocul) este din NP.
(1+1+1 puncte)

460

Problema 4.
Fie H = (V, E) un graf. Dac
a vV
si r N, not
am cu
SH (v, r) sfera de raz
a r cu centrul n v: SH (v, r) = {u
V : distH (u, v) r}. Consider
am urm
atorul algoritm de
partit
ionare a unui graf G dat n clustere sferice.

Algorithm 1 Partit
ionarea n clustere a unui graf G dat.
> 2 este un parametru real dat.
1: while V (G) 6= do
2: fie v V (G);
3: r := 0;
4: while |SG(v, r + 1)| > |SG (v, r)| do
5:

r := r + 1

6: end while
7: makeCluster(SG (v, r))

// SG (v, r) este noul cluster

8: G := G SG (v, r)
9: end while

461

a) Ar
atat
i c
a Algoritmul 1 construie
ste clustere de raz
a
cel mult log n.
b) In procedura makeCluster(SG (v, r)), pentru fiecare
v
arf u V (G) SG(v, r) cu proprietatea c
a exist
a w
SG (v, r) astfel nc
at wu E(G), se memoreaz
a exact o
astfel de muchie
si se nume
ste muchie intercluster.
Demonstrat
i c
a num
arul muchiilor intercluster este cel
mult ( 1)n.


c) Pentru k {1, . . . , log n }, s
a se determine o alegere
1
corespunz
atoare a lui (k) astfel ca s
a avem O(n1+ k )
muchii intercluster.
(2 +2+1 puncte)

462

Setul de probleme 28
Problema 1.
Fie G = (V, E) un digraf. Dac
a X V , not
am cu
+

(X) = {xy E|x X, y V X}


si cu (X) = + (V
X). + (v)
si (v) sunt prescurt
ari pentru + ({v})
si

({v}).
Numim circulat
ie n G o funct
ie f : E R cu proprietatea c
a
X
X
f (e) =
f (e), pentru orice v V.
e + (v)

e (v)

Fie l, u : E R+ dou
a funct
ii cu proprietatea c
a l(e)
u(e) pentru orice arc e E. Demonstrat
i c
a exact una
din urm
atoarele afirmat
ii este adev
arat
a:
(a) Exist
a o circulat
ie f n G astfel nc
at l(e) f (e)
u(e), e E.
(b) Exist
a X V astfel nc
at
X
u(e) <
e + (X)

l(e).

e (X)

(2+2 puncte)
463

Problema 2.

O component
a conex
a a unui graf
se nume
ste e-par
a dac
a are un num
ar par de muchii
(n particular, v
arfurile izolate sunt componente e-pare).
Not
am cu eh(G) num
arul componentelor conexe e-pare
ale grafului G.
a) Demonstrat
i c
a dac
a F = (V, E) este o p
adure, atunci
eh(F ) |V | (mod 2).
Fie T = (V, E) un arbore cu un num
ar de v
arfuri impar
mai mare sau egal cu 3.
b) Demonstrat
i c
a dac
a eh(T v) {0, 2}, v V , atunci
L(T ) graful reprezentativ al muchiilor lui T are exact
un cuplaj perfect.
c) Demonstrat
i c
a dac
a L(T ) are exact un cuplaj perfect,
atunci eh(T v) {0, 2}, v V .
(1+1+1 puncte)

Problema 3. Consider
am urm
atoarea problem
a de
decizie:
Intrare: G = (V, E) digraf
si p N.

Intrebare: Exist
a A V astfel nc
at |A| p
si G A
nu are circuite?

Demonstrat
i c
a dac
a SM este problema mult
imii stabile
maxime (notele de curs, pag. 267), atunci SM P .
(1+1+1 puncte)
464

Problema 4.
Fie D = (d1, d2, . . . , dn ) {0, 1, . . . , n 1}n . Construim
graful MD astfel:
Pentru i {1, . . . , n} consider
am mult
imile Ri
si Si:

{r1,2 , . . . , r1,n }
Ri = {ri,1 , . . . , ri,i1 , ri,i+1 , . . . , ri,n }

{r , . . . , r
n,1
n,n1 }
Si =

{si,1, . . . , si,n1di }

dac
a i = 1,
dac
a 1 < i < n,
dac
a i = n.

dac
a di = n 1,
dac
a di < n 1,

Subgraful indus de Ri Si n MD este



dac
a di = n 1
Nn1
[Ri Si]MD =
dac
a di < n 1.
Kn1,n1di
Mult
imea muchiilor grafului MD este reuniunea muchiilor subgrafurilor de mai sus, la care se adaug
a
toate muchiile {ri,j , rj,i} pentru i, j {1, . . . , n}
si
i 6= j.
Demonstrat
i c
a exist
a un graf G = ({1, . . . , n}, E) astfel
nc
at di este gradul v
arfului i n G, i {1, . . . , n}, dac
a

si numai dac
a graful MD are un cuplaj perfect.
(2+2 puncte)
465

Apendice.

Probleme,Algoritmi,Complexitate
Vom considera o problem
a (computat
ional
a)
ca fiind 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 fiecare 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 fi r
aspunsul
(la ntrebarea pus
a de P), iar forma uzual
a de
prezentare a problemei va fi:
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?
466

Un alt tip de probleme care apar frecvent sunt


cele de c
autare : mult
imea O cont
ine pentru
fiecare i I m
acar o solut
ie acceptabil
a n raport cu un anumit criteriu precizat, iar problema cere g
asirea unei astfel de solut
ii.
O clas
a special
a de astfel de probleme este
cea a problemelor de optimizare, care sunt de
maximizare sau minimizare.
Exemple:
Drum

Intrare: G un graf, a, b dou


a v
arfuri ale lui G.
Ie
sire: P un drum n G de la a la b (dac
a ).

DrMin

Intrare: G graf, a, b v
arfuri n G,
o funct
ie de lungime a muchiilor lui G.

Ie
sire: P un drum n G de la a la b cu suma
a, printre
lungimilor muchiilor minim
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
a.
dintre cele dou
a clase maxim
467

Oric
arei probleme de optimizare i se poate asocia o problem
a de decizie (care ne va da informatii
asupra dificult
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 fi rezolvate cu ajutorul calculatorului
problemele sunt codificate.
Vom considera o mult
ime finit
a fixat
a numit
a alfabet, mult
imea tuturor cuvintelor
peste .
468

Obiectele care apar n descrierea unei probleme (numere rat


ionale, grafuri, funct
ii, matrici etc.) vor fi reprezentate cu ajutorul unor
antului w se va
cuvinte w . Lungimea cuv
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?
a de decizie o funct
ie
Vom considera problem
P : {da, nu}.
Limbajul asociat problemei P este
P 1(da) = {w|w
si P (w) = da}.
469

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 6 L : A(w) = nu.
Limbajul L este acceptat de algoritmul
a L este acceptat de
A n timp polinomial dac
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
n timp polinomial dac
a k N astfel nc
at
pentru orice w algoritmul A evalueaz
a
A(w) = da, dac
a w L
si A(w) = nu, dac
a
w 6 L, n timpul O(|w|k ).
Prefer
am

un mod informal de prezentare a not


iunilor
de algoritm
si timp de execut
ie
470

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 limbajul L = P 1(da) satisface L P. Se noteaz
a
aceasta (cam abuziv) P P.
De exemplu, problema DrM IN -D este rezolvabil
a n timp polinomial dac
a funct
ia de lungime
(specificat
a n intrarea ei) este cu valori nenega se permit
si valori negative, atunci
ative. Dac
nu se cunoa
ste nici o demonstrat
ie a apartenent
ei DrM in-D P (
si nici nu se crede c-ar
a
exista una). Apartenent
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 dificil s
a
se arate
si incluziunea invers
a, deci P = P .
a P P atunci
si \ P P.
2. Se verific
a u
sor c
a dac
471

Verificare n timp polinomial.


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

NP:

NP = {L | A algoritm de verificare
cu timp de lucru polinomial a..

L = {x | y , k N a. .
|y| = O(|x|k )
si A(x, y) = da}
}.

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

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.

Justificarea 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 verificat de A n timp polinomial.

Din definit
iile de mai sus ar fi fost mai normal s
a not
am

VP (verificabil polinomial). Sintagma Nedeterminist


Polinomial se justific
a dac
a am considera algoritmi nedeiei este astfel nc
at
termini
sti n care controlul execut
dup
a fiecare pas este posibil s
a se execute unul oarecare dintre pa
sii specificat
i ntr-o mult
ime finit
a de pa
si
succesori. Un astfel de algoritm accept
a un cuv
ant de
intrare dac
a este posibil
a o execut
ie care s
a conduc
a
la rezultatul da. Se poate ar
ata c
a aceasta definit
ie
a accept
arii nedeterministe este echivalent
a cu cea de
verificare dat
a mai sus, n care certificatul este utilizat
pentru efectuarea alegerilor corecte ale pa
silor urm
atori
ai unei execut
ii a algoritmului nedeterminist.
473

NP noteaz
a clasa problemelor de decizie pentru care r
aspunsurile afirmative au certificate
care pot fi folosite pentru a demonstra succint
(n timp polinomial) corectitudinea lor.
Intuitiv, NP este clasa tuturor problemelor de
decizie pentru care se poate verifica un r
aspuns
pozitiv (da) rapid dac
a ni se d
a o solut
ie.
De exemplu, pentru problema M axCut-D un r
aspuns
afirmativ are drept certificat o partit
ie (S , T ) a mult
imii
v
arfurilor grafului (iar proprietatea c
a suma lungimilor
muchiilor cu o extremitate n S
si cealalt
a n T nu
dep
a
se
ste pragul k se face n timp polinomial). Deci,

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?


474

Cum s-ar putea justifica un r


aspuns da la o
a prezent
am un drum
problem
a U nDrum? Dac
anume drept certificat, el nu ne asigur
a c
a nu
mai exist
a
si altele. O demonstrat
ie succint
a
(graful e mare) pare a nu exista. Deci nu
stim
dac
a 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 fiecare v
arf al s
au?

Observat
ie. P NP co-NP.
475

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
a.
F care calculeaz
a f , algoritm de reducere polinomial

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-dificil (engl. NP-hard)


dac
a L NP are loc L L.
a
Limbajul L este NP-complet dac
L NP
si L este NP-dificil.
476

Terminologia se transfer
a pentru probleme de decizie:

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

Teorem
a Dac
a P o problem
a oarecare 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 dificile 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:
477

NP-hard

P
NP
NP-complete

Se obi
snuie
ste s
a se spun
a c
a o problem
a de optimizare
este NP-dificil
a, dac
a problema de decizie asociat
a este
a
sa.
Pentru ca s
a ne aliniem la definit
iile precedente, vom
a oarecare P (nu neaparat de decizie)
spune c
a o problem
este NP-dificil
a dac
a existent
a unui algoritm polinomial
pentru P implic
a P = NP.
Comentariu metaforic: Saying that a problem is NP-hard is
like saying If I own a dog, then it can speak fluent English. You
probably 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
fluent English. So the statement If I own a dog, then it can speak
fluent English has a natural corollary: No one in their right mind
should believe that I own a dog! Likewise, if a problem is NPhard, no one in their right mind should believe it can be solved in
polynomial time. [Jeff Erickson, Univ. of. Illinois]
478

Singura clas
a de complexitate pentru care nu am sugerat
un exemplu este cea a problemelor NPcomplete. Primul
om care a demonstrat existent
a unei astfel de probleme
atat c
a SAT NP, unde
este Cook, care n 1971 a ar

SAT
Instant

a: U = {u1, . . . , un} o mult


ime finit
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.

479

Apartenent
a lui SAT la NP e clar
a, un certificat pentru r
aspunsul da este o atribuire t0 care
poate fi verificat
a n timp polinomial.
O demonstrat
ie c
a orice limbaj din NP se reduce polinomial la SAT necesit
a o abordare formal
a not
iunilor de
algoritm
si timp de execut
ie (pe care le-am considerat
aici la nivel intuitiv)
si o omitem.

3SAT este restrict


ia lui SAT n care fiecare
clauz
a Ci are exact trei literali (ki = 3), un
literal vij fiind, a
sa cum este descris mai sus, o
variabil
a sau negat
ia ei.
Se poate ar
ata u
sor c
a SAT 3SAT
si deci se
a (apartenent
a
obt
ine c
a 3SAT este NP-complet
la NP e clar
a fiind o restrict
ie a lui SAT care e
din NP, iar tranzitivitatea relat
iei mpreun
a
cu teorema lui Cook termin
a demonstrat
ia).
480

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
a astfel:
NP-complet
a se procedeaz
1. Se arat
a c
a L = P 1(da) satisface L NP.
a un limbaj L despre care
stim
2. Se selecteaz
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/
481