Documente Academic
Documente Profesional
Documente Cultură
GRAFURILOR
C. Croitoru
2014-2015
I.
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;
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
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
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
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).
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
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
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
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
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)
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
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
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}|.
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:
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
10
G
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
c
e
c
d
e
d
g
f
Graful initial
Line-graful sau
26
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
-Dac
a V (G)V (G) = atunci G G = (V (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 = G G.
29
G+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
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
omega
3
omega
2
omega
4
omega
2
omega
5
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
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.
Planar
Planar
Planar
K5 neplanar
35
De
si problema
PLAN
Intrare:
G un graf.
Intrebare: Este G planar ?
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
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
Unilateral
conex
Tare conex
Conex
41
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
10
2
11
5
7
3
9
4
2
Graf Eulerian
Graf hamiltonian
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:
8. Matrici asociate.
Dac
a G = ({v1, . . . , vn}, {e1, . . . , em}) este un
graf, atunci
Matricea de adiacent
dac
a vi
si vj snt adiacente
altminteri.
Matricea de incident
1
0
dac
a vi
si ej snt incidente
altminteri.
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
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
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.
50
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
52
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.
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 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
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
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)
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}.
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
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)
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
A1: t1
A8: t8
0
A5: t5
0 0
End
A2: t2
Start
A9: t9
A6: t6
A3: t3
A10:t10
A7: t7
max
i=1
pixi |
n
X
i=1
Problema, de
si interesant
a n unele aplicat
ii
(de exemplu la nc
arcarea vapoarelor ntr-un
port) a fost aleas
a pentru a pune n evident
a
leg
atura dintre metoda program
rii dinamice (discrete)
si problemele de drum minim ntr-un digraf.
Consider
am G = (V, E) un digraf cu
V = {s} V1 V2 . . . Vn {t}, unde
Vi = {i0, i1, . . . , ib} este asociat obiectului i, i =
1, n.
Arcele lui G snt:
65
s10
si s1a1 cu a(s10 ) = 0
si a(s1a1 ) = p1.
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
Dac
a j ai 0 atunci
avem
si arcul
(i 1)jai ij cu a (i 1)jai ij = pi.
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 !
Rezolvarea problemei P2
Teorem
a. 1. Fie G = (V, E) digraf, V =
{1, . . . , n}, s V
si a : E R, astfel nct
(I)
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
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.
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
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
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
i S
i V \ S
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
// 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 }
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
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
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).
+
-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
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 + 2m + p) + p.
si teorema e demonstrat
a.
92
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 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
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
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
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)
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 )
(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,38
(Cooppersmith, Winograd 1987)).
..........................................
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 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
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
()
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
115
Y
X
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
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
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
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
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
L
lant
L
i
i
i i = 1, m
P + = i=1,mL+
i
+
L+
lant
L
i
i
i i = 1, m.
+
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
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
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
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 ,
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
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:
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
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)
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:
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
si numerotarea precizat
a pentru muchii) arborii
generat
i sunt urm
atorii 16 :
5
3
1
1
2
1
2
31
{T [1], . . . , T [i 1]}
Fie v = E[j, 1]
si w = E[j, 2].
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
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:
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
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
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
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
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
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
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
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
n-1
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
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
(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:
ca aceast
a ultim
a implementare este practic liniar
a (n
raport cu m).
166
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}.
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 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
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
C3
s2
s3
D2
s1
sm
Dk
Cm
s1
C1
s2
C2
s3
C3
sm
Cm
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
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 ).
e
f
d
c
h
i
j
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 |
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,
Lem
a. 1. Fie M, N MG, |M | = r, |N | = s
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
():
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
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
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
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
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
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,
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 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
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)
4
3,2
3,1
1,0
1,0
1,1
2,1
2,2
3
2,2
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
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)
X X
iS jT
(xij xji).
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)
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
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
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)).
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
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
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
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
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.
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
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
a, care cont
ine arcele ij E.
Definit
ie. Fie x un preflux n R
si d o funct
ie de
distant
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
Consider
am urm
atoarele proceduri
procedure pompeaz
a (i);
// i este un v
arf diferit de s, t
{
alege ij A(i) ij admisibil;
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
Dac
a naintea execut
iei unei iterat
ii a lui while,
d e funct
ie de distant
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.)
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
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
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
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;
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,
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
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
V
1
++
1
1
++
1
++
1
1
++
1
t
1
1
1
1
++
S
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
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
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
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.
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
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
O (
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
aij xij .
i,j
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
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
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}
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
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
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.
264
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
SAT
Instant
ij
i = 1, m, unde
Intrebare: Exist
a o atribuire t : U {A, F } a. . t(C) = A ?
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.
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
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
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}.
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 .
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 .
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
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
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
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
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
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
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
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
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:
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 }).
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
(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)
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
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.
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
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
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
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
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
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.
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};
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
-
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
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
- 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
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
t2i+1
t 2i+2
y
i+1
y
i
x
t 2i
t 2i-1
-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
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
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.
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
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
d(H0 ).
m
).
m
(1 +
Cum
(m1)
)d(H0 ).
m
ine
21 se obt
d(HA )
)
m
3m1
d(H0 )
2m
+ d(H0 ) =
pentru n 3.
332
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
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
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.
337
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
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
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
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
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
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
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
F 3 = 3f = 3(m n + 2),
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
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
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 }.
v =u
1
v = v
n
353
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
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
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.
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)
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
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
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).
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
Consider
am deci c
a n1 = |D| > 2
3 n.
2 pen
Dac
a vom g
asi un separator de tipul 1
3
3
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
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
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
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
T (n) =
O(1)
n) (O( n) + 2T ( 2n ))
O(
O(n) + 2
3
dac
a n c;
dac
a n > c.
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)
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
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
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.
maxim
a a unui drum de lungime minim
a intre dou
a virfuri ale grafului.
Dou
a virfuri care sunt extremit
a
tile
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
3.
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
381
Setul de probleme 2
Problema
1.
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
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
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
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
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.
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
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)
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.
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
maxim de mult
imi st-inevitabile disjuncte dou
a cite dou
a
3.
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
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
(1+3 = 4 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
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)
(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
disjunct
ia a doi literali Ci = vi wi , literalii reprezentind
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.
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
= min{ a(C)
; C circuit in D }
b(C)
(4 puncte)
Problema
3.
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
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
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)
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
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
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
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
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.
(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
b)Ar
atat
i c
a pentru orice arbore cu n virfuri, dat prin
listele de adiacent
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
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
dac
a A S |NG(A)| |A| k. (2 puncte)
Problema 2.
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
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
T la S sunt ro
sii sau galbene.
(2 puncte)
412
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
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
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
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 ?
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
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
maxim
a v. (4 puncte)
Problema
2.
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-
n 1. (4 puncte)
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
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 :
si a propus urm
atorul algoritm de orientare a muchiilor
(fixarea sensului unic pentru fiecare strad
a):
424
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
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
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
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
(cuv
ant ce depinde doar de noduln care loc infract
iunea).
427
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
430
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 )
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)
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
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
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
Ar
atat
i c
a AGM P.
(2 puncte)
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+
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
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
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
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
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 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
si inainte[1..n] init
ializate astfel: u[i] =
dac
a i 6= s
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 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 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
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
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)
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
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)
Intrare: i I.
Intrebare: descriere ... ?
Exemplu:
Compus Intrare: n N n 2.
Intrebare: Exist
a p, q N p, q 2
si n = pq?
457
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.
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 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
Clasa de complexitate
P:
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
462
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.
463
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.
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
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.
Exemplu de problem
a din co-NP:
NeHam Intrare: G un graf.
Observat
ie. P NP co-NP.
466
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.
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:
468
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]
469
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
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.
470
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.
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.
http://www.nada.kth.se/~viggo/problemlist/
472