Sunteți pe pagina 1din 194

ALGORITMICA GRAFURILOR

Săptămâna 1

C. Croitoru

croitoru@info.uaic.ro
FII

October 1, 2012

1 / 43
OUTLINE

1 Descrierea cursului
2 Interesul penru grafuri ı̂n Informatică

3 Elemente introductive de complexitate

4 Problemele pentru seminarul 1

2 / 43
DESCRIEREA CURSULUI

Pagina cursului
http://thor.info.uaic.ro/˜ croitoru/ag/

3 / 43
DESCRIEREA CURSULUI

Pagina cursului
http://thor.info.uaic.ro/˜ croitoru/ag/

Obiective
Studenţii vor fi familiarizaţi cu noţiunile şi rezultatele de bază ale Teoriei
Algoritmice a Grafurilor, care vor fi aplicate ı̂n proiectarea de algoritmi
eficienţi pentru diverse probleme de optimizare combinatorică.

4 / 43
DESCRIEREA CURSULUI

Pagina cursului
http://thor.info.uaic.ro/˜ croitoru/ag/

Obiective
Studenţii vor fi familiarizaţi cu noţiunile şi rezultatele de bază ale Teoriei
Algoritmice a Grafurilor, care vor fi aplicate ı̂n proiectarea de algoritmi
eficienţi pentru diverse probleme de optimizare combinatorică.

Tematică Generală
Clase de Complexitate, Vocabular al Teoriei Grafurilor, Probleme de
drum(parcurgeri, drumuri minime, conexiune), Arbori parţiali de cost
minim (union-find, complexitate amortizată), Cuplaje, Fluxuri, Reduceri
polinomiale pentru probleme de decizie pe grafuri, Abordări ale
problemelor NP-dificile, Grafuri Planare.

5 / 43
DESCRIEREA CURSULUI
Competenţe acumulate
Utilizarea grafurilor ca limbaj de modelare formală. Cunoaşterea
algoritmilor de bază pentru problemele clasice pe grafuri.
Recunoaşterea complexităţii de calcul pentru probleme de
optimizare.

6 / 43
DESCRIEREA CURSULUI
Competenţe acumulate
Utilizarea grafurilor ca limbaj de modelare formală. Cunoaşterea
algoritmilor de bază pentru problemele clasice pe grafuri.
Recunoaşterea complexităţii de calcul pentru probleme de
optimizare.

Metode de predare
Prezentari video ale slide-urilor (conţinând notele de curs) disponibile in
format pdf la inceputul semestrului.
http://thor.info.uaic.ro/˜ croitoru/ag/ag 12-13 allinone.pdf

7 / 43
DESCRIEREA CURSULUI
Competenţe acumulate
Utilizarea grafurilor ca limbaj de modelare formală. Cunoaşterea
algoritmilor de bază pentru problemele clasice pe grafuri.
Recunoaşterea complexităţii de calcul pentru probleme de
optimizare.

Metode de predare
Prezentari video ale slide-urilor (conţinând notele de curs) disponibile in
format pdf la inceputul semestrului.
http://thor.info.uaic.ro/˜ croitoru/ag/ag 12-13 allinone.pdf

Tematica seminariilor
Fiecare seminar dezbate câteva probleme (unele dintre ele dificile !)
pentru a aprofunda subiectele introduse la curs. Toate problemele sunt
postate la ı̂nceputul semestrului astfel ı̂ncât studenţii interesaţi să caute
soluţii originale sau să studieze probleme similare ı̂n bibliografia ı̂nrudită.
8 / 43
DESCRIEREA CURSULUI

Bibliografie
CROITORU C., Tehnici de bază ı̂n optimizarea combinatorie,
Editura Univ. Al. I. Cuza Iasi, Iasi,1992.
CROITORU C., Introducere in proiectarea algoritmilor
paraleli, Editura Matrix Rom, Bucuresti, 2002.
TOMESCU I., Probleme de combinatorică şi teoria grafurilor,
Editura did. şi ped., Bucuresti,1981.
DIESTEL R., Graph Theory, Electronic Edition.
CORMEN T.H., Leiserson C.E., Rivest R.L., Stein C.,
Introduction to Algorithms,MIT Press 2001.

9 / 43
DESCRIEREA CURSULUI

Bibliografie
CROITORU C., Tehnici de bază ı̂n optimizarea combinatorie,
Editura Univ. Al. I. Cuza Iasi, Iasi,1992.
CROITORU C., Introducere in proiectarea algoritmilor
paraleli, Editura Matrix Rom, Bucuresti, 2002.
TOMESCU I., Probleme de combinatorică şi teoria grafurilor,
Editura did. şi ped., Bucuresti,1981.
DIESTEL R., Graph Theory, Electronic Edition.
CORMEN T.H., Leiserson C.E., Rivest R.L., Stein C.,
Introduction to Algorithms,MIT Press 2001.

Suplimentar
http://thor.info.uaic.ro/˜ croitoru/ag/resurse bibliografice (optionale)

10 / 43
DESCRIEREA CURSULUI

EVALUARE
Punctajul minim de promovare: 50 puncte.

11 / 43
DESCRIEREA CURSULUI

EVALUARE
Punctajul minim de promovare: 50 puncte.
FORME:
Activitatea de la seminar (prezenţa, participare la dezbateri):
0-18 puncte.
Teme pentru acasă (3 teme, ı̂n săptămânile 5, 9,13), maxim 14
puncte fiecare: 0-42 puncte.
Testul final scris (open books): 0-60 puncte.

12 / 43
DESCRIEREA CURSULUI

EVALUARE
Punctajul minim de promovare: 50 puncte.
FORME:
Activitatea de la seminar (prezenţa, participare la dezbateri):
0-18 puncte.
Teme pentru acasă (3 teme, ı̂n săptămânile 5, 9,13), maxim 14
puncte fiecare: 0-42 puncte.
Testul final scris (open books): 0-60 puncte.

Nota finală
Studenţii care au obţinut minim 50 puncte, sunt sortaţi descrescător
dupa punctajul final şi clasificaţi dupa regulile ETCS cu adaptările
precizate de FII.

Bonus: Seminar Special.


13 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

A nice visualization by Akshay Java of network analysis of Twitter.


14 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Interest in scale-free networks started in 1999 with work by


Albert-László Barabási and colleagues at the University of Notre
Dame. 15 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

World.png

A small-world network is a type of mathematical graph in which


most nodes are not neighbors of one another, but most nodes can
be reached from every other by a small number of hops or steps.
16 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Konfidi – Trust Networks with PGP and RDF.


17 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Graph-based knowledge representation formalisms: Bayesian


Networks (BNs), Semantic Networks (SNs), Conceptual Graphs
(CGs), Formal Concept Analysis (FCA), CP-nets, GAI-nets, etc. 18 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Argumentation Frameworks.

19 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Environmental Sensor Networks (ESN), Object Sensor Networks


(OSN) or Body Sensor Network (BSN) operate a variety of
different protocols for the specific application environment.
20 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Shot.png

Graph-based Data Basis.


21 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Visualization systems.
22 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Madrid-Metro.
23 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

A set of such triples is called an RDF graph.

24 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Utilizing ASP for Generating and Visualizing Argumentation


Frameworks.
25 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

26 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

?
a

27 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

NO
a

28 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

29 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

30 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

YES

31 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

a e

c f

32 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

b
?
a e

c f

33 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

b
YES
a e

EXTENSION
c f

34 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ

Visualizing a FCA lattice.


35 / 43
ELEMENTE INTRODUCTIVE DE COMPLEXTATE

(ag 12-13 allinone.pdf, primul capitol)

P:
Clasa problemelor (de decizie) pentru care exista algoritmi
determinişti cu timp polinomial de rezolvare.

NP:
Clasa problemelor (de decizie) pentru care exista algoritmi
nedeterminişti cu timp polinomial de rezolvare.

P ⊆ NP (Incluziune strictă ?)

36 / 43
ELEMENTE INTRODUCTIVE DE COMPLEXTATE

Problema P se reduce polinomial la problema Q, dacă orice intrare


a problemei P se poate transforma ı̂n timp polinomial ı̂ntr-o intrare
a problemei Q, astfel ı̂ncât rezolvând Q pe această intrare se obţine
răspunsul (corect) pentru P.

Definiţie
Problema de decizie P se numeşte NP-dificilă (NP-hard) dacă orice
problemă din NP se reduce polinomial la P.

Definiţie
Problema de decizie P se numeşte NP-completă dacă este
NP-dificilă şi ı̂n plus aparţine la NP.

37 / 43
PROBLEMELE PENTRU SEMINARUL 1
1
Fie a, b ∈ N. Demonstraţi că na = O(nb ) dacă şi numai dacă
a ≤ b. Demonstraţi că na = O(e n ) şi că nu are loc e n = O(na )
(e este baza logaritmului natural).

2
Argumentaţi o evaluare de tipul T (n) = Θ(.) pentru timpul de
executie a algoritmului:

Sumă Triplă (n)


s←0
for i = 1, n do
for j = i, n do
for k = j, n do
s ←s +1

38 / 43
PROBLEMELE PENTRU SEMINARUL 1

3
Considerăm următoarele două funcţii:

F(n)
if (n = 1) return true
else return G (n − 1)

G(n)
if (n = 1) return false
else return F (n − 1)

Stabiliţi şi argumentaţi valorile F (2012) şi G (2013).

39 / 43
PROBLEMELE PENTRU SEMINARUL 1
4
Pentru ı̂nmulţirea a două numere ı̂ntregi se poate folosi algoritmul descris
mai jos prin două exemple. Se observă că operaţiile efectuate sunt doar
ı̂nmulţirea cu doi, ı̂mpărţirea ı̂ntreagă la doi şi adunarea numerelor ı̂ntregi.

48 × 17 29 × 135
48 17 29 135
24 34 14 270
12 68 7 540
6 136 3 1080
3 272 1 2160
1 544 ==========
============== 3915
816
(se adună numerele de pe coloana 2 care au pe coloana 1 numere impare)
Scrieţi o funcţie recursivă pentru produsul a două numere ı̂ntregi care să
corespundă acestui algoritm şi demonstraţi-i corectitudinea. Stabiliţi
complexitatea timp T (n) pentru această funcţie (n este numărul biţilor
necesari reprezentării binare a fiecăruia dintre cei doi factori).
40 / 43
PROBLEMELE PENTRU SEMINARUL 1

5
a) Înfăşurătoarea convexă a n puncte Pi (xi , yi ), i = 1, n din plan,
este cel mai mic poligon convex (ı̂n raport cu incluziunea) care
conţine toate cele n puncte. Demonstraţi că dacă dispunem de un
algoritm care să determine vârfurile ı̂nfăşurătoarei convexe a n
puncte date cu complexitatea timp T (n) atunci putem sorta un
vector ı̂ntreg n-dimensional ı̂n timpul T (n).

b) Daţi două exemple de algoritmi de sortare. Ce complexitate au ?

41 / 43
PROBLEMELE PENTRU SEMINARUL 1
6
Numim pin un arbore cu măcar trei noduri cu proprietatea că
unicul vecin al oricărei frunze (nod cu un singur vecin) are exact
doi vecini. Pentru un arbore T cu cel puţin trei noduri, notăm cu
pin(T ) subarborele lui T care este pin şi are număr maxim de
noduri.
Descrieţi un algoritm care, pentru T dat, construieşte pin(T ).

Arborele T
Arborele T

Un pin Pin(T)
Pin(T)

42 / 43
ÎNTREBĂRI ?
Mulţumesc!

43 / 43
ALGORITMICA GRAFURILOR
Săptămâna 2

C. Croitoru

croitoru@info.uaic.ro
FII

October 8, 2012

1 / 10
OUTLINE

1 Vocabular al teoriei grafurilor


(ag 12-13 allinone.pdf pag. 17 −→ )

2 Problemele pentru seminarul 2

2 / 10
Vocabular-Definiţia unui graf

Mulţimi stabile
SM Intrare: G un graf, k ∈ N.
Intrebare: Există S mulţime stabilă ı̂n G ,
cu |S| ≥ k?

NP-completă (Karp, 1972).

3 / 10
Vocabular-Definiţia unui graf

Mulţimi stabile
SM Intrare: G un graf, k ∈ N.
Intrebare: Există S mulţime stabilă ı̂n G ,
cu |S| ≥ k?

NP-completă (Karp, 1972).

Cuplaje
P2 Intrare: G un graf.
Ieşire: ν(G ) şi un ”martor”:
M cuplaj ı̂n G , cu |M| = ν(G ).

Polinomial rezolvabilă ( Edmonds, 1965).

4 / 10
Vocabular-Definiţia unui graf

Colorarea vârfurilor
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?

Este NP-completă chiar pentru k = 3.

5 / 10
Vocabular-Definiţia unui graf

Colorarea vârfurilor
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?

Este NP-completă chiar pentru k = 3.

Colorarea muchiilor
P4 Intrare: G un graf.
Ieşire: χ0 (G ) şi un ”martor”: o χ0 (G )-colorare
a muchiilor lui G .

Este NP-completă chiar dacă e uşor aproximabilă.

6 / 10
Vocabular-Definiţia unui graf

Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?

Nu se ştie dacă e din P dar nici nu s-a arătat că e NP-completă.

7 / 10
Vocabular-Definiţia unui graf

Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?

Nu se ştie dacă e din P dar nici nu s-a arătat că e NP-completă.

Izomorfism
SISO Intrare: G , H grafuri.
Intrebare: Are G un subgraf G 0 astfel ca G 0 ∼
= H?

Este NP-completă.

8 / 10
Vocabular

1 Variaţii ı̂n definiţia unui graf


2 Grade
3 Subgrafuri
4 Operaţii cu grafuri
5 Clase de grafuri
6 Drumuri şi circuite
7 Conexiune
8 Matrici asociate
9 Structuri de date

9 / 10
Problemele pentru seminarul 2

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problema 1, Setul 1
2 Problema 2, Setul 1
3 Problema 4, Setul 1
4 Problema 4, Setul 7”
5 Problema 2, Setul 3”
6 Problema 1, Setul 8’

10 / 10
ALGORITMICA GRAFURILOR
Săptămâna 3

C. Croitoru

croitoru@info.uaic.ro
FII

October 15, 2012

1 / 11
OUTLINE

1 Vocabular al teoriei grafurilor


(ag 12-13 allinone.pdf pag. 50 −→ 67)

2 Probleme de drum ı̂n (di)grafuri


(ag 12-13 allinone.pdf pag. 68 −→ 72 )

3 Problemele pentru seminarul 3

2 / 11
Vocabular

1 Variaţii ı̂n definiţia unui graf


2 Grade
3 Subgrafuri
4 Operaţii cu grafuri
5 Clase de grafuri
6 Drumuri şi circuite
7 Conexiune
8 Matrici asociate
9 Structuri de date

3 / 11
Probleme de drum

1 Parcurgeri sistematice

BFS

DFS

Componente conexe, tari conexe !!! (pentru examen; algoritmică


uşoară !!!)

4 / 11
Problemele pentru seminarul 3
Acesta este un seminar special, cu probleme foarte uşoare, având ca
singur scop fixarea unor noţiuni.

1
Fie G1 , G2 , G3 trei grafuri. Se ştie că G1 ∼
6 G2 şi că G2 ∼
= 6 G3 .
=

6 G3 ? (justificare)
Rezultă că G1 =

2
Sunt cele două grafuri desenate mai jos izomorfe ? (justificare)

5 / 11
Problemele pentru seminarul 3

3
Demonstraţi că dacă un graf conex G are exact un circuit atunci
|G | = |E (G )|.

4
Determinaţi numărul de stabilitate al grafului desenat mai jos.
(justificare)

5
Fie G un graf conex cu |G | > 1 si fără vı̂rfuri de grad 1.
Demonstraţi că |E (G )| ≥ n.
6 / 11
Problemele pentru seminarul 3
6
Fie G = (V , E ) un graf conex cu |G | ≥ 2. Demonstraţi că există
un vârf v0 ∈ V astfel ı̂ncât G − v0 este conex.

7
Este posibil ca numărul arborilor parţiali ai unui graf să fie 1? Dar
2 ? (justificare)

8
Să se determine L(L(G )), unde graful G este:

7 / 11
Problemele pentru seminarul 3
9
Dacă G este graful desenat mai jos, este L(G ) –graful
reprezentativ al muchiilor sale– hamiltonian? (justificare)

10
Precizaţi numărul cromatic (argumentare) al complementarului
grafului de mai sus.

11
Precizaţi numărul de conexiune (argumentare) al grafului de la
problema 9.
8 / 11
Problemele pentru seminarul 3
12
Este graful următor autocomplementar ? (argumentare)

13
Are graful de mai sus doi arbori parţiali fără muchii comune?
(argumentare)

14
Stabiliţi numărul arborilor parţiali ai complementarului grafului de
la problema 12. (argumentare)
9 / 11
Problemele pentru seminarul 3
15
Stabiliţi cardinalul maxim al unei multimi stabile din graful
K2 × G , unde G este tot graful de la problema 12.

16
Dacă G este graful desenat mai jos, este L(G ) –graful
reprezentativ al muchiilor sale– hamiltonian? (justificare)

17
Pentru graful G desenat mai sus să se determine numărul cromatic
χ(G ) (argumentare).
10 / 11
Problemele pentru seminarul 3

18
Este graful de la problema 16 izomorf cu complementarul său ?
(justificare)

19
Determinaţi numărul de conexiune al grafului de la problema 16.
(justificare)

20
Determinaţi diametrul grafului de la problema 16. (justificare)

21
Determinaţi χ 0 (G ), indicele cromatic al grafului de la problema 16.
(justificare)

11 / 11
ALGORITMICA GRAFURILOR
Săptămâna 4

C. Croitoru

croitoru@info.uaic.ro
FII

October 22, 2012

1 / 13
OUTLINE

1 Probleme de drum ı̂n (di)grafuri


(ag 12-13 allinone.pdf pag. 73 −→ . . . )

2 Problemele pentru seminarul 4

2 / 13
Probleme de drum
Drumuri de cost minim

P1 Date G digraf;a : E (G ) → R; s, t ∈ V (G ),s 6= t.


∗ ∈ D , astfel ı̂ncı̂t
Să se determine Dst st

a(Dst ) = min{a(Dst ) | Dst ∈ Dst }.

P2 Date G digraf; a : E (G ) → R; s ∈ V (G ).
Să se determine Dsi∗ ∈ Dsi ∀i ∈ V (G ), a.ı̂.
a(Dsi∗ ) = min{a(Dsi ) | Dsi ∈ Dsi }.

P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.
3 / 13
Drumuri de cost minim

Rezolvarea problemei P2

Teorema 1. Fie G = (V , E ) digraf, V = {1, . . . , n}, s ∈ V şi


a : E → R, astfel ı̂ncı̂t

(I ) ∀C circuit ı̂n G , a(C ) > 0.

Atunci (u1 , . . . , un ) este o soluţie a sistemului


(
us = 0
(∗) ui = min(uj + aji ) ∀i 6= s.
j6=i

dacă şi numai dacă


∀i ∈ V , ∃Dsi∗ ∈ Dsi astfel ı̂ncı̂t a(Dsi∗ ) = ui şi
a(Dsi∗ ) = min{a(D) | D ∈ Dsi }.

4 / 13
Drumuri de cost minim

Rezolvarea problemei P2 dacă G este digraf fără circuite

O numerotare aciclică a (vârfurilor) digrafului G = (V , E ) este


un vector ord[v ] v ∈ V , (cu interpretarea ord[v ] = numărul de
ordine al vârfului v ) a. ı̂.

∀vw ∈ E ⇒ ord[v ] < ord[w ].

G este un digraf fără circuite dacă şi numai dacă admite o


numerotare aciclică .

Sortare topologică O(n + m).

Rezolvarea sistemului (∗) prin substituţie.

5 / 13
Drumuri de cost minim
Rezolvarea problemei P2 dacă ∀ij ∈ E (G ) avem aij ≥ 0 !!!
Algoritmul lui Dijkstra

1. S ← {s}; us ← 0; ı̂nainte[s] ← 0;
for i ∈ V \ {s} do
{ ui ← asi ; ı̂nainte[i] ← s }
// după aceste iniţializări (D) are loc
2. while S 6= V do
{
determină 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 ∗ }
}

Complexitatea timp a algoritmului, ı̂n descrierea dată este O(n2 ) .


6 / 13
Drumuri de cost minim

Algoritmul lui Dijkstra

Este posibilă organizarea unor cozi cu prioritate (de exemplu


heap-urile) pentru obţinerea unui algoritm cu complexitatea
O(m log n) (unde m = |E |) Johnson ,1977).

Cea mai bună implementare se obţine utilizând heap-uri


Fibonacci, ceea ce conduce la o complexitate timp de
O(m + n log n) (Fredman şi Tarjan, 1984).

7 / 13
Drumuri de cost minim

Rezolvarea problemei P2 ı̂n cazul general.


Algoritmul lui Bellman, Ford, Moore (∼ 1960)

1. us1 ← 0; for i ∈ V \ {s} do ui1 ← asi ;


// evident (BM) are loc
2. for m := 1 to n − 2 do
for i := 1 to n do
uim+1 ← min uim , minj6=i (ujm + aji )


Complexitatea O(n3 ), dacă determinarea minimului din pasul 2


necesită O(n) operaţii.

Testarea ı̂n O(n3 ) a existenţei unui circuit C de cost negativ ı̂n


digraful G !

8 / 13
Problemele pentru seminarul 4

1 Problema 1, Setul 3”
2 Problema 3, Setul 6
3 3-4 probleme din lista următoare :)

9 / 13
Probleme pentru seminarul 4
1
Să se construiască o funcţie care să recunoască un turneu. La intrare
aceasta va primi un digraf G = ({1, ..., n}, E ) reprezentat cu ajutorul
listelor de adiacenţă şi va returna true sau false. Complexitatea timp?.

2
Să se construiască o funcţie care primind la intrare un digraf
G = ({1, ..., n}, E ) reprezentat cu ajutorul listelor de adiacenţă să
returneze inversul lui G reprezentat cu ajutorul listelor de adiacenţă.
Complexitatea timp trebuie să fie O(n + |E |).

3
Se consideră un graf G = ({1, ..., n}, E ) reprezentat cu ajutorul matricii
de adiacenţă. Mulţimea de n − 1 muchii A este astfel ca T = (V , A) este
arbore parţial al lui G . Construiţi un algoritm care să listeze circuitele care
se formează prin adăugarea muchiilor din E − A la T . Reprezentarea lui
T trebuie să permită depistarea fiecărui astfel de circuit ı̂n timpul O(n).
10 / 13
Probleme pentru seminarul 4
4
Să se construiască o funcţie care să determine gradul maxim al unui vârf
al unui graf. La intrare aceasta va primi un graf G = ({1, ..., n}, E )
reprezentat cu ajutorul listelor de adiacenţă şi va returna ∆(G ). Stabiliţi
complexitatea timp a algoritmului folosit.

5
Construiţi o funcţie care primind la intrare graful G = (V , E ) reprezentat
cu ajutorul listelor de adiacenţă şi k, un număr ı̂ntreg pozitiv, returnează
graful G (k) cu aceeaşi mulţime de virfuri ca şi G , ı̂n care două virfuri
distincte sunt adiacente dacă şi numai dacă ı̂n graful iniţial sunt conectate
printr-un drum de lungime cel mult k. Care este complexitatea timp?

6
Graful conex G = (V , E ) cu n vârfuri şi m muchii, este reprezentat cu
ajutorul listelor de adiacenţă. Daţi un algoritm care să construiască ı̂n
timpul O(n + m) listele de adiacenţă ale unui arbore parţial al lui G .
11 / 13
Probleme pentru seminarul 4
7
Fie G = (V , E ) un graf cu ordinul |V | ≥ 2 şi T = (V , ET ) un arbore
parţial al lui G , dat de tabloul (p[v ])v ∈V , unde p[v ] este părintele lui v ı̂n
T : vârful dinaintea lui v de pe drumul unic de la o rădăcină fixată r , la v ,
ı̂n T (p[r ] = r ). Daţi un algoritm care să determine, ı̂n timpul O(|V |), un
vârf v0 pendant (frunză) ı̂n T şi apoi demonstraţi că G − v0 este conex.

8
Digraful G = (V , E ) este dat prin listele de adiacenţă. Să se decidă ı̂n
O(|V | + |E |) dacă se pot ordona vârfurile sale: vi1 , . . . , vi|V | , astfel ı̂ncât
dacă vij apare ı̂n lista de adiacenţă a lui vik atunci k < j.

9
Fie T = ({1, . . . , n}, ET ) un arbore (n ≥ 2), dat de tabloul (p[v ])v ∈V ,
unde p[v ] este părintele lui v ı̂n T : vârful dinaintea lui v de pe drumul
unic de la o rădăcină fixată r , la v , ı̂n T (p[r ] = r ). Descrieţi un algoritm
care să construiască , ı̂n timpul O(n), listele de adiacenţă ale lui T .
12 / 13
Probleme pentru seminarul 4

10
Se consideră un graf G = (V , E ) (V = {1, . . . , n}), izomorf cu graful
circuit (cu cel puţin 3 vârfuri), G ∼
= Cn . Fiecare muchie e ∈ E are asociat
un cost real c(e). Aceste informaţii sunt disponibile ı̂n tablourile dreapta
şi cost de dimensiune n cu semnificaţia: dreapta[v ] = vecinul din dreapta
al lui v , iar costul muchiei {v , dreapta(v )} este cost[v ]. Descrieţi un
algoritm cât mai eficient pentru aflarea unui arbore parţial al lui G de
cost minim.

11
Se consideră un graf G = (V , E ) (V = {1, . . . , n}), reprezentat cu
ajutorul listelor de adiacenţă. Se ştie că graful are gradul minim δ(G )
mărginit de o constantă c ∈ N. Descrieţi un algoritm cu complexitatea
timp O(n) pentru determinarea lui δ(G ) şi a unui vârf v0 ∈ V cu gradul
ı̂n G egal cu δ(G ).
13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 5

C. Croitoru

croitoru@info.uaic.ro
FII

October 29, 2012

1 / 14
OUTLINE

1 Probleme de drum minim


(ag 12-13 allinone.pdf pag. 117 −→ 124 )

2 Probleme de conexiune
(ag 12-13 allinone.pdf pag. 124 −→ 149 )

3 Problemele pentru seminarul 5

4 Prezentarea temei pentru acasă

2 / 14
Probleme de drum minim
Rezolvarea problemei P3
P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.

3 / 14
Probleme de drum minim
Rezolvarea problemei P3
P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.

O(n4 )
Iterarea algoritmului lui Bellman-Ford pentru s = 1, n

4 / 14
Probleme de drum minim
Rezolvarea problemei P3
P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.

O(n4 )
Iterarea algoritmului lui Bellman-Ford pentru s = 1, n

O(n3 )
Iterarea algoritmului lui Dijkstra, după preprocesare!

5 / 14
Probleme de drum minim
Rezolvarea problemei P3
P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.

O(n4 )
Iterarea algoritmului lui Bellman-Ford pentru s = 1, n

O(n3 )
Iterarea algoritmului lui Dijkstra, după preprocesare!

O(n3 log n)
Înmulţiri matriciale!

6 / 14
Probleme de drum minim
Rezolvarea problemei P3
P3 Date G digraf; a : E (G ) → R.
Să se determine Dij∗ ∈ Dij ∀i, j ∈ V (G ), a.ı̂.
a(Dij∗ ) = min{a(Dij ) | Dij ∈ Dij }.

O(n4 )
Iterarea algoritmului lui Bellman-Ford pentru s = 1, n

O(n3 )
Iterarea algoritmului lui Dijkstra, după preprocesare!

O(n3 log n)
Înmulţiri matriciale!

O(n3 )
Algoritmul lui Floyd-Warshal
7 / 14
Rezolvarea problemei P3
Algoritmul lui Floyd-Warshal

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“
}
8 / 14
Probleme de conexiune

Teorema lui Menger

Fie G = (V , E ) (di)graf şi X , Y ⊆ V . Atunci numărul maxim de


XY -drumuri disjuncte este egal cu cardinalul minim al unei
mulţimi XY -separatoare.

Fie G = (V , E ) un (di)graf şi s, t ∈ V , astfel ı̂ncı̂t s 6= t, st ∈/ E.


Există k drumuri intern disjuncte de la s la t ı̂n G dacă şi numai
dacă ı̂ndepărtı̂nd mai puţin de k vı̂rfuri diferite de s şi t, ı̂n
(di)graful rămas există un drum de la s la t.

9 / 14
Probleme de conexiune

Consecinţă Un graf G este p-conex dacă G = Kp sau


∀st ∈ E (G ) există p drumuri intern disjuncte de la s la t ı̂n G .

Determinarea numărului k(G ) de conexiune a grafului G (cea mai


mare valoare a lui p pentru care G este p-conex) se reduce la
determinarea lui
min p({s}, {t}; G )
st∈E (G )

(care se poate obţine ı̂n timp polinomial.)

10 / 14
Probleme de conexiune

Teorema lui König

Dacă G = (S, R; E ) este un graf bipartit, atunci cardinalul maxim


al unui cuplaj este egal cu cardinalul minim al unei mulţimi de
vı̂rfuri incidente cu toate muchiile grafului.

Consecinţă: Dacă G e graf bipartit, atunci :

ν(G ) = |G | − α(G ).

11 / 14
Probleme de conexiune

Teorema lui Hall

Dacă A = (Ai ; i ∈ I ) este o familie de submulţimi ale lui S, o


funcţie rA : I → S cu proprietatea că rA (i) ∈ Ai , ∀i ∈ I se numeşte
funcţie de reprezentare pentru familia A. În acest caz,
(rA (i); i ∈ I ) formează un sistem de reprezentanţi ai familiei A.

Dacă funcţia de reprezentare rA este injectivă atunci rA (I ) ⊆ S se


numeşte sistem de reprezentanţi distincţi ai familiei A, sau
transversală.

Teorema lui Hall Familia A = (Ai ; i ∈ I ) de submulţimi ale lui S


admite o transversală dacă şi numai dacă

(H) |A(J)| ≥ |J| ∀J ⊆ I .

12 / 14
Probleme de conexiune

Structura grafurilor p-conexe

Teorema lui Dirac


Dacă G = (V , E ) este un graf p-conex p ≥ 2, atunci prin orice p
vı̂rfuri ale sale trece un circuit.

Teorema lui Erdös şi Chvatal


Fie G un graf p-conex. Dacă α(G ) ≤ p atunci G este hamiltonian.

13 / 14
Problemele pentru seminarul 5

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problema 4, Setul 3”
2 Problema 2, Setul 4
3 Problema 3, Setul 5
4 Problema 1, Setul 4’
5 Problema 4, Setul 4’
6 Problema 1, Setul 6

14 / 14
ALGORITMICA GRAFURILOR
Săptămâna 6

C. Croitoru

croitoru@info.uaic.ro
FII

November 5, 2012

1 / 12
OUTLINE

1 Arbori (ag 12-13 allinone.pdf pag. 150 −→ 182 )

2 Problemele pentru seminarul 6

2 / 12
Arbori

Teoreme de caracterizare
Teoremă. Fie G = (V , E ) un graf.
Următoarele afirmaţii sı̂nt echivalente:
(i) G este arbore (este conex şi fără circuite).
(ii) G este conex şi este minimal cu această proprietate.
(iii) G este fără circuite şi este maximal cu această proprietate.

Teoremă. Următoarele afirmaţii sı̂nt echivalente pentru un graf


G = (V , E ) cu n vı̂rfuri:
(i) G este arbore.
(ii) G este conex şi are n − 1 muchii.
(iii) G este fară circuite şi are n − 1 muchii.
(iv) G = Kn pentru n = 1, 2 şi G 6= Kn pentru n ≥ 3 şi adăugarea
unei muchii la G produce exact un circuit.

3 / 12
Arbori

Generarea arborilor parţiali ai unui graf


generare-arbori-parţiali(int i);
// se generează toţi arborii parţiali ai lui G
avı̂nd drept prime i − 1 muchii,elementele
T (1), . . . , T (i − 1)
ale tabloului E (ordonate crescător).
variabile locale:
j ∈ {1, . . . m}; S, listă de vı̂rfuri; x ∈ V ;

if i = n then
// {T (1), . . . , T (n − 1)} formează un
arbore parţial ;
prelucrează T ( listează, memorează etc.)

4 / 12
Arbori
Generarea arborilor parţiali ai unui graf (continuare)
else
if i = 1 then
for j := 1 to dG (v0 ) do
{ T [i] ← j;
A:
generare-arbori-parţ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-parţiali(i + 1);
B: }
5 / 12
Arbori

Numărarea arborilor parţiali ai unui graf


Fie G = (V , E ) un multigraf cu V = {1, 2, . . . , n}.
Cosiderăm A = (aij )n×n matricea de adiacenţă a lui G (aij =
multiplicitatea muchiei ij dacă ij ∈ E , altfel 0).
Fie D = diag (dG (1), dG (2), ..., dG (n)).

Matricea L[G ] = D − A se numeşte matricea de admitanţă a


multigrafului G sau matricea Laplace a lui G .

Teoremă (Kirchoff-Trent; Matrix Tree Theorem)


Dacă G este un multigraf cu mulţimea de vı̂rfuri {1, . . . , n} şi L[G ]
matricea Laplace, atunci
|TG | = det(L[G ]ii ) ∀i ∈ {1, . . . , n}.
L[G ]ij notează minorul lui L[G ] obţinut prin ı̂ndepărtarea liniei i şi
coloanei j.
Corolar TKn = nn−2 (Cayley).

6 / 12
Arbori
Arbori parţiali de cost minim.
(P1) Date G = (V , E ) graf şi c : E → R (c(e) – costul muchiei e), să se
determine T ∗ ∈ TG astfel ı̂ncı̂t
c(T ∗ ) = min{c(T ) | T ∈ TG },
P
unde c(T ) = e∈E (T ) c(e).
Algoritm generic
Iniţial, T 0 = (T10 , T20 , . . . , Tn0 ), Ti0 = ({i}, ∅), i = 1, n ( V = {1, 2, . . . , n}).
În pasul k ( k = 0, n − 2), din familia T k = (T1k , T2k , . . . , Tn−k k
) de n − k
k
arbori a.ı̂ V (Ti )i=1,n−k este partiţie a lui V , se construieşte T k+1 :
- se alege Tsk unul din arborii familiei T k .
- dintre muchiile lui G cu o extremitate ı̂n Tsk şi cealaltă ı̂n V − V (Tsk ),
se alege una de cost minim, e ∗ = vs vj ∗ unde vj ∗ ∈ V (Tjk∗ ).
- T k+1 = (T k \ {Tsk , Tjk∗ }) ∪ T , unde T este arborele obţinut din Tsk şi
Tjk∗ la care adăugăm muchia e ∗ .
Teoremă. Dacă G = (V , E ) este un graf conex cu V = {1, 2, . . . , n}
atunci T1n−1 construit de algoritmul descris mai sus este arbore parţial de
cost minim.
7 / 12
Arbori
Algoritmul lui Prim (implementare Dijkstra )
Arborele Tsk va fi ı̂ntotdeauna arborele cu cele mai multe vı̂rfuri
dintre arborii familiei curente.
La fiecare pas k > 0 avem un arbore Ts = (Vs , Es ) cu k + 1 vı̂rfuri,
ceilalţi n − k − 1 avı̂nd cı̂te un singur vı̂rf.
Fie α[1..n] cu componente
 din V şi β[1..n] cu componente reale a.ı̂. :
∀j ∈ V − Vs , β j = c(α[j]j) = min{c(ij) | i ∈ Vs , ij ∈ E }

1. Vs :← {s}; (s ∈ V , oarecare )
Es ← ∅;
for v ∈ V \ {s} do { α[v ] := s; β[v ] := c(sv )};
2. while Vs 6= V do
{ determină 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 ∗ }
} 8 / 12
Arbori
Algoritmul lui Kruskal
În metoda generală se va alege la fiecare pas drept arbore Tsk unul din
cei doi arbori cu proprietatea că sı̂nt ”uniţi” printr-o muchie de cost
minim printre toate muchiile cu extremităţile pe arbori diferiţi.
Dacă notăm cu T = E (T k ), atunci algoritmul poate fi descris astfel:
1. Sortează E = (e1 , e2 , . . . , em ) astfel ı̂ncı̂t:
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 ++ }
Pasul 1 necesită O(m log n) operaţii.
Pentru realizarea eficientă a testului din pasul 2 va fi necesar să
reprezentăm la fiecare pas k, V (T1k ), V (T2k ), . . . , V (Tnk ) şi să testăm
dacă muchia ei curentă are ambele extremităţi ı̂n aceeaşi mulţime.
Se vor folosi pentru reprezentarea acestor mulţimi, arbori (care nu sı̂nt ı̂n
general subarbori ai lui G ).
9 / 12
Arbori
Union-Find - Tarjan
pred[1..n]:

pred[v ]= vı̂rful dinaintea lui v de pe drumul la v de la rădăcina


arborelui care memorează mulţimea la care aparţine v ;
pred[v ] = 0 ⇔ v este rădăcina arborelui;
pred[v ] < 0 ⇔ v este rădăcină a unui arbore şi −pred[v ] este
cardinalul mulţimii memorate ı̂n el”.

Adăugăm ı̂n pasul 1 iniţializarea 1.3 şi modificăm pasul 2 al algoritmului


astfel:

1.3 for v ∈ V do pred[v ] ← −1;


2. while i ≤ m do
{ fie ei = vw ;
x ← find(v ); y ← find(w );
if x 6= y then { union(x, y ); T ← T ∪ {ei } }
i ++ }
10 / 12
Arbori
Union-Find - Tarjan
Procedura union şi funcţia find sunt:

procedure union(v , w : V );
//v şi w sunt rădăcini, variabila locală ı̂ntreagă 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 }

function find(v : V ); //variabile ı̂ntregi locale i, j, k;


i ← v;
while pred[i] > 0 do i ← pred[i];
j ← v;
while pred[j] > 0 do
{ k ← pred[j]; pred[j] ← i; j ← k; }
return i
Complexitatea pasului 2 este O(m· α(m, n)), unde α(m, n) este
inversa funcţiei lui Ackermann.
11 / 12
Problemele pentru seminarul 6

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problema 1, Setul 13
2 Problemmele 1,2,4 Setul 5
3 Problema 1, Setul 7
4 Problemele 1,2 Setul 17

12 / 12
ALGORITMICA GRAFURILOR
Săptămâna 7

C. Croitoru

croitoru@info.uaic.ro
FII

November 12, 2012

1/9
OUTLINE

1 Cuplaje (ag 12-13 allinone.pdf pag. 183 −→ 211 )

2 Problemele pentru seminarul 7

2/9
Cuplaje
Problema cuplajului maxim
Fie G = (V , E ) un (multi)graf. Dacă A ⊆ E şi v ∈ V , vom nota dA (v )
gradul vı̂rfului v ı̂n graful parţial < A >G .
Se numeşte cuplaj (sau mulţime independentă de muchii) al grafului
G , orice mulţime M de muchii cu proprietatea că dM (v ) ≤ 1, ∀v ∈ V .
Notaţie: MG = {M | M ⊆ E , M cuplaj ı̂n G }.
M ∈ MG , v ∈ V :
Dacă dM (v ) = 1, atunci v se numeşte saturat de cuplajul M.
S(M): mulţimea vı̂rfurilor saturate de cuplajul M ı̂n graful G .
Dacă dM (v ) = 0, atunci v se numeşte expus faţă de cuplajul M.
E(M): mulţimea vı̂rfurilor expuse faţă de cuplajul M.
Problema ”cuplajului maxim”:
P1 Dat G = (V , E ) un graf, să se determine M ∗ ∈ MG astfel ı̂ncı̂t
|M ∗ | = max{|M| | M ∈ MG }.

Vom nota ν(G ) = max{|M| | M ∈ MG }.


3/9
Cuplaje

Problema cuplajului maxim


Definiţie. Se numeşte acoperire (a vı̂rfurilor cu muchii) ı̂n graful G orice
mulţime F ⊆ E de muchii cu proprietatea că dF (v ) ≥ 1 ∀v ∈ V .
FG = {F | F ⊆ E , F acoperire ı̂n G } notează familia acoperirilor
grafului G .
FG 6= ∅ ⇔ G nu are vı̂rfuri izolate (atunci, măcar E este o acoperire).
Problema acoperirii minime este:
P2 Dat G = (V , E ) un graf, să se determine F ∗ ∈ FG astfel ı̂ncı̂t
|F ∗ | = min{|F | | F ∈ FG }.
Teorema 1. (Norman-Rabin 1959)Fie G = (V , E ) un graf fără vı̂rfuri
izolate, de ordin n. Dacă M ∗ este un cuplaj de cardinal maxim ı̂n G , iar
F ∗ o acoperire de cardinal minim ı̂n G , atunci

|M ∗ | + |F ∗ | = n.

Dem. P1 echivalentă polinomial cu P2

4/9
Cuplaje

Grafuri bipartite
Teoremă. (Hall, 1935) Fie G = (R, S; E ) un graf bipartit. Există
un cuplaj care saturează vârfurile lui R dacă şi numai dacă

|NG (A)| ≥ |A| ∀A ⊆ R.

Teoremă. (Konig,1930) Fie G = (R, S; E ) un graf bipartit.


Cardinalul maxim al unui cuplaj este egal cu numărul minim de
vârfuri prin ı̂ndepărtarea cărora se obţine graful nul:

ν(G ) = n − α(G )

5/9
Cuplaje
Cuplaje perfecte
Un cuplaj M ı̂n graful G astfel ı̂ncât S(M) = V (G ) se numeşte
cuplaj perfect sau 1-factor.
Pentru un graf oarecare H notăm cu q(H) numărul componentelor
conexe de ordin impar ale lui H.
Teoremă. (Tutte, 1947) Un graf G = (V , E ) are un cuplaj
perfect dacă şi numai dacă

(T ) q(G − S) ≤ |S| ∀S ⊆ V .

Berge (1958) a generalizat această teoremă stabilind că

1
ν(G ) = (|V (G )| − maxS⊆V (G ) [q(G − S) − |S|] ).
2
6/9
Cuplaje
Problema cuplajului maxim
Fie G = (V , E ) un graf şi M ∈ MG un cuplaj al său.
Definiţie: Se numeşte drum alternat al lui G relativ la cuplajul M
orice drum P : v0 , v0 v1 , v1 , . . . , vk−1 , vk−1 vk , vk a. ı̂.
∀i = 1, k − 1 {vi−1 vi , vi vi+1 } ∩ M 6= ∅.
Vom desemna prin P mulţimea muchiilor drumului P.
Definiţie: Se numeşte drum de creştere al lui G relativ la cuplajul M
un drum alternat cu extremităţile vı̂rfuri distincte, expuse relativ la
cuplajul M.
Teoremă.(Berge 1959) Un cuplaj M este de cardinal maxim ı̂n graful G
dacă şi numai dacă nu există ı̂n G drumuri de creştere relativ la M.
Strategie de construire a unui cuplaj de cardinal maxim:

a) fie M un cuplaj oarecare a lui G (eventual M = ∅);


b) while ∃P drum de creştere relativ la M do
M ← M∆P

7/9
Cuplaje
Problema cuplajului maxim
Hopcroft, Karp (1973)

0. M ← ∅;
1. repeat
Determină P o familie maximală (⊆)
de drumuri minime de creştere;
for P ∈ P do M ← M∆P
until P = ∅.

Complexitatea O( nA) unde A este timpul găsirii familiei P.
Hopcroft şi Karp au arătat cum se poate implementa pasul 1 pentru un
graf bipartit, astfel ı̂ncı̂t A = O(m + n): ⇒ algoritm O(mn1/2 ) pentru
aflarea unui cuplaj de cardinal maxim ı̂ntr-un graf bipartit.
Pentru un graf oarecare, structurile de date necesare obţinerii aceleeaşi
complexităţi sı̂nt mult mai elaborate şi au fost descrise de Micali şi
Vazirani 1980.
8/9
Problemele pentru seminarul 7

Se vor discuta (cel puţin) patru probleme dintre cele date la tema
1 şi la seminarul 6 (nediscutate săptămâna trecută.)

9/9
ALGORITMICA GRAFURILOR
Săptămâna 9

C. Croitoru

croitoru@info.uaic.ro
FII

November 26, 2012

1 / 16
OUTLINE

1 Fluxuri (ag 12-13 allinone.pdf pag. 212 −→ . . . )

2 Problemele pentru seminarul 9

3 Prezentarea temei pentru acasă

2 / 16
Fluxuri
Problema fluxului maxim
Numim reţea (de transport) cu intrarea s şi ieşirea t, 4-uplul
R = (G, s, t, c) unde: - G = (V , E ) este un digraf,
- s, t ∈ V ; s 6= t; dG+ (s) > 0; dG− (t) > 0,
- c : E → R+ ; c(e) este capacitatea arcului e.

(n ∈ N∗ ) şi |E(| = m. Extindem funcţia c la


V = {1, 2, . . . , n}
c(ij) dacă ij ∈ E
c : V × V → R+ prin c((i, j)) = = cij .
0 dacă ij ∈
/E

Numim flux ı̂n reţeaua R = (G , s, t, c) o funcţie x : V × V → R, a.ı̂.:


(i) 0 ≤ xij ≤ cij ∀ij ∈ V × V
X X
(ii) xji − xij = 0 ∀i ∈ V − {s, t}.
j∈V j∈V
Dacă ij ∈ E atunci xij se numeşte fluxul (transportat)pe arcul ij. Evident, condiţia (i) cere ca fluxul pe orice arc
să fie nenegativ şi subcapacitar, iar condiţia (ii) (legea de conservare a fluxului) cere ca suma fluxurilor pe arcele
care intră ı̂n vı̂rful i să fie egală cu suma fluxurilor pe arcele care ies din vı̂rful i.

3 / 16
Fluxuri

Problema fluxului maxim


Definiţie: Dacă x este un flux ı̂n reţeaua R = (G , s, t, c), se numeşte
valoarea fluxului x numărul
X X
v (x) = xjt − xtj .
j∈V j∈V

v (x) este fluxul net care ajunge ı̂n ieşirea reţelei şi este egal cu fluxul net
care iese din intrarea reţelei.

Problema fluxului maxim:

Dată R = (G , s, t, c) o reţea, să se determine un flux de valoare maximă.

4 / 16
Fluxuri

Problema fluxului maxim


Definiţie. Dacă P este un drum ı̂n G , multigraful suport al digrafului G ,
şi e = vi vj este o muchie a lui P atunci: dacă e corespunde arcului vi vj al
lui G , e se numeşte arc direct al drumului P; dacă e corespunde arcului
vj vi al lui G , atunci e se numeşte arc invers.

Definiţie. Fie R = (G , s, t, c) şi x flux ı̂n R. Se numeşte C-drum (ı̂n R


relativ la fluxul x) un drum D ı̂n G cu proprietatea că ∀ij ∈ E (D) :
xij < cij dacă ij este arc direct,
xji > 0 dacă ij este arc invers.
Dacă D este un C-drum şi ij ∈ E (D), ( capacitatea reziduală a lui ij
cij − xij dacă ij arc direct ı̂n D
(relativ la C-drumul D) este r (ij) =
xji dacă ij arc invers ı̂n D .
Capacitatea reziduală a drumului D este r (D) = mine∈E (D) r (e).

Definiţie. Se numeşte drum de creştere a fluxului x, ı̂n reţeaua


R = (G , s, t, c), un C-drum de la s la t.

5 / 16
Fluxuri
Problema fluxului maxim
Lema 1. Dacă D este un drumNde creştere a fluxului x ı̂n reţeaua
R = (G , s, t, c), atunci x 1 = x r (D) definit prin

xij
 dacă ij ∈
/ E (D)
1
xij = xij + r (D) dacă ij ∈ E (D), ij arc direct ı̂n D

xij − r (D) dacă ji ∈ E (D), ji arc invers ı̂n D

este flux ı̂n R şi v (x 1 ) = v (x) + r (D).


Observăm că dacă x admite un drum de creştere atunci x nu este
flux de valoare maximă.

Definiţie. Se numeşte secţiune ı̂n reţeaua R = (G , s, t, c), o partiţie


(S, T ) a lui V cu s ∈ S şi t ∈ T . Capacitatea secţiunii (S, T ) este
XX
c(S, T ) = cij
i∈S j∈T

(suma capacităţilor arcelor de la S la T ).


6 / 16
Fluxuri
Problema fluxului maxim
Lema 2. Daca x este un flux ı̂n R = (G , s, t, c) şi (S, T ) este o secţiune
a reţelei, atunci XX
v (x) = (xij − xji ).
i∈S j∈T

(valoarea fluxului este egală cu fluxul net ce trece prin orice secţiune.)

Teorema 1. (Teorema drumului de creştere)


Un flux x este de valoare maximă ı̂ntr-o reţea R, dacă şi numai dacă, nu
există drumuri de creştere a fluxului x ı̂n reţeaua R.

Teorema 2. (Teorema fluxului intreg)


Dacă toate capacităţile sı̂nt ı̂ntregi, atunci există un flux de valoare
maximă cu toate componentele ı̂ntregi (flux ı̂ntreg de valoare maximă).

Teorema 3. ( Ford-Fulkerson, 1956)


Valoarea maximă a unui flux ı̂n reţeaua R = (G , s, t, c) este egală cu
capacitatea minimă a unei secţiuni a reţelei.
7 / 16
Fluxuri

Problema fluxului maxim


Algoritmul lui Ford şi Fulkerson pentru aflarea unui flux de valoare
maximă
Se va folosi un procedeu de etichetare a vı̂rfurilor reţelei, ı̂n vederea
depistării drumurilor de creştere a fluxului curent x. Dacă nu există
drumuri de creştere, fluxul va fi de valoare maximă.
Eticheta atribuită unui vı̂rf j ∈ V are trei componente (e1 , e2 , e3 ) unde e1 ∈ V ∪ {0} ; e2 ∈ {direct, invers} ;
e3 ∈ R+ şi au urmatoarea semnificaţie:
- dacă e2 = direct şi e1 = i atunci ∃ un C-drum P de la s la j cu ultimul arc ij, arc direct şi r (P) = e3 ;
- dacă e2 = invers şi e1 = i atunci ∃ un C-drum P de la s la j cu ultimul arc ij, arc invers şi r (P) = e3 .

Iniţial, se etichetează sursa s cu eticheta (0, ., ∞). Celelalte vı̂rfuri primesc etichetă prin ”cercetarea” vı̂rfurilor
deja etichetate:

Dacă i este un vı̂rf etichetat, atunci ∀j ∈ V


Dacă j neetichetat, ij ∈ E şi xij < cij atunci
j se etichetează e = (i, direct, min(e3 [i], cij − xij ));
Dacă j neetichetat, ji ∈ E şi xji > 0 atunci
j se etichetează e = (i, invers, min(e3 [i], xji )).

8 / 16
Fluxuri
Algoritmul lui Ford şi Fulkerson
1: Se alege x = (xij ) flux iniţial (de ex. fluxul nul);
Se etichetează s cu (0, ., ∞)
2: while (∃ vı̂rfuri etichetate necercetate) do
{ ”alege” un vı̂rf etichetat şi necercetat i;
etichetare(i);
if (t a primit etichetă) then
{ modifică fluxul pe drumul dat de etichete;
şterge toate etichetele;
etichetează s cu (0, ., ∞)
}
}
3: S ← {i|i ∈ V , i are etichetă}
T ←V −S
x este flux de valoare maximă
(S, T ) este secţiune de capacitate minimă.

Algoritmul are complexitatea O(mv ), unde v este valoarea fluxului


maxim iar m = |E |.
9 / 16
Fluxuri
Modificarea lui Edmonds & Karp a alg. lui Ford & Fulkerson
Numim drum minim de creştere a fluxului x ı̂n reţeaua R, un drum de
creştere de lungime minimă printre toate drumurile de creştere.
Fie x un flux oarecare ı̂n reţeaua R. Definim şirul de fluxuri x k ı̂n R astfel:

x 0 ← x; N
x k ← x k−1 r (Pk−1 ), Pk este drum minim de creştere
relativ la x k−1 ; k = 1, 2, . . .

Teorema 4. (Edmonds, Karp) Dacă x = x 0 este un flux oarecare ı̂n


reţeaua R, atunci şirul de fluxuri x 1 , x 2 , . . . obţinut din x 0 prin creşteri
succesive pe drumuri minime de creştere, are cel mult mn 2 elemente (ı̂n cel
mult mn 2 creşteri succesive, se obţine un flux care nu admite drumuri de
creştere).
Teorema 5. (Edmonds- Karp 1972)Dacă se modifică algoritmul lui Ford
şi Fulkerson cu precizarea alegerii bfs a vı̂rfurilor etichetate ı̂n vederea
cercetării, atunci, fluxul maxim se obţine ı̂n timpul O(m2 n) .

10 / 16
Problemele pentru seminarul 9

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problema 1, Setul 11
2 Problemele 1,3,4 Setul 10
3 Problema 1, Setul 11’
4 Problema 4 Setul 7
5 Problema 1, Setul 7”

11 / 16
TEMA

Problema 1.
Fie G = (V , E ) un graf conex cu n vârfuri şi m muchii. Fiecare
muchie e ∈ E are asociat un cost real c(e), iar costurile muchiilor
sunt distincte.

a) Descrieţi un algoritm care să decidă ı̂n timpul O(n + m) dacă,


pentru o muchie dată e0 ∈ E , există un arbore parţial de cost
minim al lui G care să conţină muchia e0 .

b) Argumentaţi corectitudinea algoritmului propus.

(2+2=4 puncte)

12 / 16
TEMA
Problema 2.
Pentru graful conex G = (V , E ) cu n vârfuri, m muchii şi funcţia de cost
c : E → R, se cunoaşte lista muchiilor (cu costurile aferente) şi un arbore
parţ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ârful dinaintea lui v de pe unicul drum din T de la vârful s
la v , iar parent[s] = s (s este un vârf oarecare, fixat). Se doreşte să se
actualizeze lista muchiilor şi arborele T la operaţiile de adăugare şi de
ştergere a unei muchii. Se cere să se proiecteze algorimi de complexitate
O(n + m) pentru fiecare din aceste operaţii (cu justificarea corectitudinii
şi a complexităţii timp). Mai precis, aceşti algoritmi au:
a) La intrare o muchie e = uv nouă şi costul ei, iar la ieşire noua listă de
muchii (E ∪ {e}) şi vectorul parent reprezentând un arbore parţial de
cost minim ı̂n G + e.
b) La intrare o muchie e = uv existentă ı̂n graful G , iar la ieşire noua
listă de muchii (E − {e}) şi vectorul parent reprezentând un arbore
parţial de cost minim ı̂n G − e (dacă acest arbore parţial mai există; altfel
se returnează mesajul că graful nu mai este conex). (2+2 = 4 puncte)
13 / 16
TEMA

Problema 3.
Fie T un arbore cu un număr par de vârfuri care nu are cuplaj
perfect. Demonstraţi că există ı̂n T un vârf v0 cu proprietatea că
stergând v0 din arborele T (şi toate muchiile incidente cu v0 ) se
obţine o pădure cu măcar doi arbori cu un număr impar de vârfuri.
(2 puncte)

14 / 16
TEMA

Problema 4.
Un cuplaj M al unui graf G se numeşte cuplaj tare dacă subgraful
indus ı̂n G de mulţimea vârfurilor saturate de M este graful |M|K2 .
Proiectaţi un algoritm de complexitate O(n) pentru găsirea unui
cuplaj tare de cardinal maxim ı̂ntr-un arbore cu n vârfuri.
Argumentaţi corectitudinea acestui algoritm.
(2+2= 4 puncte)

15 / 16
TEMA

Soluţiile se primesc
miercuri 5 decembrie ı̂ntre orele 12 şi 14, la cabinetul C-402

Precizări
Este ı̂ncurajată asocierea ı̂n echipe formate din 2 studenţi care
să realizeze ı̂n comun tema.
Depistarea unor soluţii copiate ı̂ntre echipe diferite conduce la
anularea punctajelor tuturor acestor echipe.
Nu e nevoie să se rescrie enunţul problemelor. Nu uitaţi să
treceţi numele şi grupele din care fac parte membrii echipei la
ı̂nceputul lucrarii.
Este ı̂ncurajată redactarea latex a soluţiilor.
Nu se primesc soluţii prin e-mail.
16 / 16
ALGORITMICA GRAFURILOR
Săptămâna 10

C. Croitoru

croitoru@info.uaic.ro
FII

December 3, 2012

1 / 13
OUTLINE

1 Fluxuri (ag 12-13 allinone.pdf pag. 239 −→ . . . )

2 Problemele pentru seminarul 10

2 / 13
Problema fluxului maxim
Algoritmi de tip preflux
Se numeşte preflux ı̂n reţeaua R, o funcţie x : E → R astfel ı̂ncı̂t
(i) 0 ≤ xij ≤ cij ∀ij ∈ E

X X
(ii) ∀i 6= s ei = xji − xij ≥ 0.
j:ji∈E j:ij∈E
Numărul ei i ∈ V − {s, t} se numeşte excesul din vı̂rful i. Dacă
i ∈ V − {s, t} şi ei > 0 atunci i se numeşte nod activ. Dacă ij ∈ E xij
va fi numit fluxul pe arcul ij.

Dacă ı̂n reţeaua R nu există noduri active, atunci prefluxul x este flux
de la s la t ı̂n R de valoare et . Ideea algoritmulor de tip preflux: se
porneşte cu un preflux ı̂n R şi se transformă prin modificări ale fluxului
pe arce ı̂ntr-un flux care nu admite drumuri de creştere.

Reprezentarea digrafului G cu ajutorul listelor de adiacenţă. Totuşi, vom


considera că dacă ij ∈ E atunci şi ji ∈ E (altminteri, adăugăm arcul
ji cu capacitate 0).
3 / 13
Problema fluxului maxim
Algoritmi de tip preflux
x preflux ı̂n R, ij ∈ E . Capacitatea reziduală a arcului ij este
rij = cij − xij + xji
(reprezentı̂nd fluxul adiţional ce poate fi ”trimis” de la nodul i la nodul j
utilizı̂nd arcele ij şi ji).
A ”trimite” flux de la i la j ı̂nseamnă să creştem fluxul pe arcul ij sau să
micşorăm fluxul pe arcul ji.
Se numeşte C-drum ı̂n R relativ la prefluxul x, un drum al lui G ale cărui
arce au capacitatea reziduală pozitivă.
Se numeşte funcţie de distanţă ı̂n R relativ la prefluxul x, o funcţie
d : V → Z+ care satisface
(D1) d(t) = 0

(D2) ∀ij ∈ E , rij > 0 ⇒ d(i) ≤ d(j) + 1


P C-drum relativ la prefluxul x ı̂n R de la i la t ⇒ d(i) ≤ lg(P) (arcele
lui P au capacitate reziduală pozitivă şi se aplică (D2)).
Rezultă că d(i) ≤ τi (lungimea minimă a unui C-drum de la i la t). 4 / 13
Problema fluxului maxim

Algoritmi de tip preflux


Fie x un preflux ı̂n R şi d o funcţie de distanţă relativ la x. Un arc ij ∈ E
se numeşte admisibil dacă
rij > 0 ∧ d(i) = d(j) + 1.
Dacă R este o reţea, considerăm iniţializare procedura care construieşte
ı̂n O(m) un preflux x şi o funcţie de distanţă d corespunzătoare acestuia:
procedure iniţ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
Alegerea lui d(s) = n are interpretarea:”nu există C-drum de la s la t
ı̂n R relativ la x” (altfel, ar trebui ca lungimea acestuia să fie ≥ n).
Dacă, ı̂n algoritmii de tip preflux vom păstra acest invariant, atunci cı̂nd
x va deveni flux, va rezulta că nu admite drumuri de creştere şi deci x va
fi de valoare maximă.
5 / 13
Problema fluxului maxim
Algoritmi de tip preflux
procedure pompează (i);
// i este un vârf diferit de s, t
alege ij ∈ A(i) ij admisibil;
”trimite” δ = min(ei , rij ) unităţi de flux de la i la j
Dacă δ = rij avem o pompare saturată, altfel pomparea e nesaturată.
procedure reetichetare (i);
// i este un vârf diferit de s, t
d(i) ← min{d(j) + 1 | ij ∈ A(i) ∧ rij > 0}

Schema generală a unui algoritm de tip preflux este:


iniţializare;
while ∃ noduri active ı̂n R do
{ selectează un nod activ i;
if ∃ arce admisibile ı̂n A(i)
then pompează(i)
else reetichetare(i) }
6 / 13
Problema fluxului maxim

Algoritmi de tip preflux


Lemă Algoritmul de tip preflux, de mai sus, are ca invariant ”d este
funcţie de distanţă relativ la prefluxul x”. La fiecare apel al lui
reetichetare(i), d(i) creşte strict.

Lemă Dacă pe parcursul algoritmului, i0 este un nod activ, atunci există


un C-drum de la i0 la s, ı̂n R, relativ la prefluxul curent x.

Corolar 1. ∀i ∈ V d(i) < 2n.


Corolar 2. Numărul total de apeluri ale procedurii reetichetare este mai
mic decı̂t 2n2 .
Corolar 3. Nr. total de pompări saturate este ≤ nm.

Lemă (Goldberg şi Tarjan 1986) Numărul pompărilor nesaturate este cel
mult 2n2 m.

Lemă La terminarea algoritmului x este flux de valoare maximă.

7 / 13
Problema fluxului maxim

Algoritmi de tip preflux


Algoritmul lui Ahuja şi Orlin (1988) – cu o metodă de scalare, va
mărgini numărul pompărilor nesaturate de la O(n2 m) la O(n2 log U).
Capacităţile sunt ı̂ntregi, maxij∈E (1 + cij ) = U. Fie d log2 Ue = K .
Ideia algoritmului:
Se vor executa K + 1 etape. Pentru fiecare etapă p, cu p luı̂nd succesiv
valorile K , K − 1, . . . , 1, 0 vor fi ı̂ndeplinite următoarele condiţii:
(a) - la ı̂nceputul etapei p, ∀ i satisface ei ≤ 2p
(b) - ı̂n timpul etapei p se utilizează procedurile pompare-etichetare ı̂n
vederea eliminării nodurilor active cu ei ∈ (2p−1 , 2p ].
Din alegerea lui K , ı̂n etapa iniţială (p = K ) condiţia (a) este satisfăcută
şi deci, dacă (b) va fi invariant al algoritmului, după K + 1 etape,
excesele nodurilor vor fi ≤ 12 .
Dacă, toate transformările datelor vor păstra integritatea exceselor, va
rezulta că excesul oricărui nod este 0, şi, deci, dispunem de un flux de
valoare maximă (datorită proprietăţilor funcţiei distanţă d(i)).
8 / 13
Problema fluxului maxim
Algoritmul Ahuja-Orlin
iniţializare;
K ← dlog2 (U)e ; ∆ ← 2K +1 ;
for p = K , K − 1, . . . , 0 do
{ construieşte L(p); ∆ ← ∆2
while L(p) 6= ∅ do
{ fie i primul element din L(p); parcurge lista A(i) din locul curent
pı̂nă se determină un arc admisibil sau se depistează sfı̂rşitul ei;
if ij este arcul admisibil găsit then
{ δ ← min(ei , rij , ∆ − ej );
ei ← ei − δ; ej ← ej + δ;
”trimite” δ unităţi de flux de la i la j;
if ei ≤ ∆2 then şterge i din L(p);
if ej > ∆2 then adaugă j ca prim nod ı̂n L(p) }
else // s-a depistat sfı̂rşitul listei
{ şterge i din L(p); parcurge toată lista A(i) pentru calculul lui
d(i) = min{d(j) + 1; ij ∈ A(i) ∧ rij > 0}; introdu i ı̂n L(p);
pune pointerul curent al listei A(i) la ı̂nceput }
}
9 / 13
Problema fluxului maxim

Algoritmul Ahuja-Orlin

Lemă. Numărul pompărilor nesaturate este cel mult 8n2 ı̂n fiecare
etapă a scalării, deci O(n2 log U) ı̂n total.

Teoremă. (Ahuja-Orlin 1988) Algoritmul de tip preflux cu scalarea


exceselor are complexitatea O(nm + n2 log U).

10 / 13
Aplicaţii combinatorii
Aflarea cuplajului maxim şi a stabilei maxime ı̂ntr-un graf bipartit.
V V
1 2
++
1
1 1
++
1
++ t
1
s 1
1
1
++ 1
1
++

Dacă x = (xij ) este un flux cu componente ı̂ntregi ı̂n R atunci se observă


că mulţimea de arce {ij | i ∈ V1 , j ∈ V2 ∧ xij = 1} induce ı̂n graful G
bipartit un cuplaj M(x). În plus, v (x) este cardinalul cuplajului M(x).
Reciproc, orice cuplaj din G induce o mulţime de arce neadiacente ı̂n G1 ;
dacă pe fiecare astfel de arc ij (i ∈ V1 , j ∈ V2 ) se consideră fluxul xij
egal cu 1 şi de asemenea xsi = xjt = 1, şi luı̂nd fluxul x = 0 pe orice alt
arc, atunci fluxul construit are valoarea |M|.
Rezolvı̂nd problema fluxului maxim pe reţeaua R se determină (pornind
de la fluxul nul) ı̂n O(nm + n2 log n) un cuplaj de cardinal maxim ı̂n
graful bipartit G .
11 / 13
Aplicaţii combinatorii

Aflarea cuplajului maxim şi a stabilei maxime ı̂ntr-un graf bipartit.


Fie (S, T ) secţiunea de capacitate minimă ce se obţine ı̂n O(m), din
fluxul maxim aflat. Avem, c(S, T ) = ν(G ) (max-flow
V
min-cut).
V 2
1
++ T
1
1 1
++
1
++ t
1
s 1
1
1
++ 1
1
++

S
Cum ν(G ) < ∞, rezultă că punı̂nd Si = S ∩ Vi şi Ti = T ∩ Vi (i = 1, 2),
avem: |T1 | + |S2 | = ν(G ), iar X = S1 ∪ T2 este mulţime stabilă ı̂n
graful G (pentru a avea c(S, T ) < ∞).
În plus, |X | = |V1 − T1 | + |V2 − S2 | = n − ν(G ).
Rezultă că X este stabilă de cardinal maxim, ı̂ntrucı̂t n − ν(G ) = α(G )
(teorema lui König).

12 / 13
Problemele pentru seminarul 10

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problemele 4,2 Setul 11
2 Problemele 1,4 Setul 16
3 Problema 2, Setul 15
4 Problema 2 Setul 18
5 Problema 1, Setul 19

13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 11

C. Croitoru

croitoru@info.uaic.ro
FII

December 10, 2012

1 / 13
OUTLINE

1 Fluxuri (ag 12-13 allinone.pdf pag. 260 −→ 280 )

2 Problemele pentru seminarul 11

2 / 13
Aplicaţii combinatorii ale fluxurilor

Recunoaşterea secvenţelor digrafice.


Date (di+ )i=1,n şi (di− )i=1,n , există un digraf G cu n vı̂rfuri astfel
ı̂ncı̂t G = ({1, . . . , n}, E ) şi dG+ (i) = di+ şi dG− (i) = di− ∀i = 1, n ?

P 0 ≤+di P
Dacă +
≤ n − 1 şi 0 ≤ di− ≤ n − 1 ∀i = 1, n şi
− + −
i=1,n di = i=1,n di = m (unde, m = |E |, iar di , di ∈ Z),
construim reţeaua bipartită:
1 1’
-
+ 2 2’ d1
d1 1
-
+ d2
d2
t
1
s 1

dn+ dn
-
1
n n’

Răspunsul este da dacă şi numai dacă ı̂n această reţea, există un flux
ı̂ntreg de valoare maximă m.

3 / 13
Aplicaţii combinatorii ale fluxurilor
Determinarea numărului de muchie-conexiune al unui graf.
Fie G = (V , E ) un graf. Pentru s, t ∈ V , s 6= t, definim:
-pe (s, t) = nr. maxim de drumuri cu muchii disjuncte ce unesc s şi t.
-ce (s, t) = cardinalul minim al unei mulţimi de muchii, prin ı̂ndepărtarea
căreia din graf, ı̂ntre s şi t nu mai există drumuri.
Construim din G digraful G1 , ı̂nlocuind fiecare muchie cu o pereche de
arce simetrice. Considerăm c : E (G1 ) → Z+ , c(e) = 1, ∀e ∈ E (G1 ).
Fie x 0 un flux ı̂ntreg de valoare maximă ı̂n R = (G1 , s, t, c).
t
t

s
s

Fluxul pe arcele groase


este 1, pe cele subtiri 0.

Rezultă că v (x 0 ) = pe (s, t). Dacă (S, T ) e secţiune de capacitate


minimă, avem c(S, T ) = v (x 0 ) = ce (s, t).
Corolar G conex:
λ(G ) = min ce (s, t). (∗)
s,t∈V (G )
s6=t 4 / 13
Aplicaţii combinatorii ale fluxurilor

Determinarea numărului de muchie-conexiune al unui graf.


n(n−1)
Pentru a afla λ(G ) ar trebui să rezolvăm cele 2 probleme de
flux din (∗).

Dacă fixăm un vı̂rf s0 şi rezolvăm n − 1 probleme de flux cu


t ∈ V − s0 se va obţine ı̂n mod necesar o pereche s0 , t0 pentru care
c(s0 , t0 ) = λ(G ).

Rezultă: ı̂n O(n· (nm + n2 c)) = O(n2 m) se pot determina λ(G )


şi o mulţime separatoare de muchii de cardinal minim ı̂n G .

5 / 13
Aplicaţii combinatorii ale fluxurilor
Determinarea numărului de conexiune al unui graf.
G = (V , E ) este un graf şi s, t ∈ V , s 6= t, st ∈ /E
-p(s, t) = numărul maxim de st−drumuri cu mulţimile de vı̂rfuri
disjuncte (cu excepţia extremităţilor),
-c(s, t) = cardinalul minim al unei mulţimi de vı̂rfuri st− separatoare,
Teorema lui Menger ⇒
p(s, t) = c(s, t) (∗)

Numărul de conexiune k(G


) al grafului G este
n − 1
 dacă G = Kn
k(G ) = min c(s, t) 6 Kn
dacă G = (∗∗)
 s,t∈V

st ∈E
/
Fie G1 = (V (G1 ), E (G1 )) digraful construit din G astfel:
-∀v ∈ V considerăm av , bv ∈ V (G1 ) şi av bv ∈ E (G1 );
- ∀vw ∈ E considerăm bv aw , bw av ∈ E (G1 ).
Definim c : E (G1 ) → Z+ prin (
1 dacă e = av bv
c(e) =
∞ altfel.
6 / 13
Aplicaţii combinatorii ale fluxurilor
Determinarea numărului de conexiune al unui graf.
Considerăm reţeaua R = (G1 , bs , at , c). Exemplu:

b1
a t
1 t a1
bt

s 2

S
a a2
s

bs b2

Arcele groase au capacitate


infinit, cele subtiri 1.

x 0 flux ı̂ntreg de la bs la at ı̂n R de valoare maximă ⇒ v(x0 ) = p(s, t).


(S, T ) o secţiune ı̂n R a.ı̂. v (x 0 ) = c(S, T ). ⇒
c(s, t) = |A0 | = c(S, T ) = v (x0 ) = p(s, t), unde A0 este o mulţime de
vı̂rfuri st− separatoare de cardinal minim.
Pentru a determina k(G ) determinăm minimul din (**) prin rezolvarea a
|E (G )| probleme de flux. Se poate construi un algoritm de complexitate
O(m(nm + n2 log n)).
7 / 13
Fluxuri

Flux de cost minim.


Fie R = (G , s, t, c) o reţea şi x un flux de la s la t ı̂n R.
Considerăm a : E → R o funcţie de cost care asociază fiecărui arc ij ∈ E
a(ij) = aij costul (transportului unei unităţi de flux) pe arcul ij. Costul
fluxului x se defineşte ca fiind
X
a(x) = aij xij .
i,j
Problema fluxului de cost minim
Dată R o reţea, v ∈ R+ şi a : E → R funcţie de cost, să se determine x 0
flux ı̂n R astfel ı̂ncı̂t
a(x 0 ) = min{a(x) | x flux ı̂n R, v (x) = v }.

Problema simplă a atribuirii Se dispune de n lucrători şi n lucrări. Costul


atribuirii lucrătorului i la lucrarea j este aij (i, j ∈ {1, . . . , n}). Să se
atribuie fiecare dintre cele n lucrări la cı̂te un lucrător, astfel ı̂ncı̂t
costul total al atribuirii să fie minim.

8 / 13
Flux de cost minim
Problema atribuirii.
1,a 11
1 1
1,0
1,0
2
1,0 2 1,0
s 1,a ij
1,0 1,0 t
j
i

1,0 1,0

n n
1,a n1

Un flux ı̂ntreg de valoare n şi de cost minim, oferă soluţia problemei


atribuirii.
Problema simplă a transporturilor (Hitchcock-Koopmans): O marfă
disponibilă ı̂n depozitele D1 , . . . , Dn ı̂n cantităţile d1 , . . . , dn este solicitată
ı̂n centrele de consum C1 , C2 , . . . , Cm ı̂n cantităţile c1 , c2 , . . . , cm . Se
cunoaşte costul aij al transportului unei unităţi de marfă de la depozitul
Di la centrul de consum Cj (∀i ∈ {1, . . . , n}, ∀j ∈ {1, . . . , m}). Se cere
să se stabilească un plan de transport care să satisfacă toate
cererile şi să aibă costul total minim
9 / 13
Flux de cost minim
Problema transporturilor
P P
DacăP i=1,n di ≥ j=1,m cj , un flux de cost minim şi de valoare
v = i=1,m ci ı̂n reţeaua următoare, rezolvă problema.
oo ,a 11
D1 C1
d1, 0 c ,0
C2 1
d2, 0 D2 c ,0
2
s o o ,a ij c j, 0 t
Cj
d i, 0 Di

d n, 0 c ,0
m
Dn Cm
o o ,a n1

Definiţie. Fie x un flux ı̂n R = (G , s, t, c) şi a : E → R o funcţie de cost.


P C-drum ı̂n R relativ la fluxul x, ⇒ costul drumului P este
X X
a(P) = aij − aji .
ij∈P ij∈P
ij direct ij invers

Dacă C este un C-drum ı̂nchis, a(C ) se calculează după aceeaşi formulă,


după stabilirea unui sens de parcurgere a lui C .
10 / 13
Flux de cost minim

Soluţia problemei fluxului de cost minim.


Dacă P este drum de creştere relativ la fluxul x, atunci x 1 = x
N
r (P)
este un flux de valoare v (x 1 ) = v (x) + r (P) şi de cost a(x) + r (P)· a(P).
Dacă C este un C-drum ı̂nchis relativ la x, atunci x 1 = x
N
r (C ) este un
flux de valoare v (x 1 ) = v (x) şi de cost a(x 1 ) = a(x) + r (C )· a(C ).
Dacă a(C ) < 0 atunci x 1 este un flux de aceeaşi valoare ca şi x, dar
de cost strict mai mic.
Teoremă. Un flux de valoare v este de cost minim dacă şi numai dacă
nu admite C-drumuri ı̂nchise de cost negativ.
Teoremă. Dacă x este un flux de valoare v şi de cost minim iar P0 este
un drum de creştere, astfel ı̂ncı̂t
) = min{a(P) | Pdrum de creştere relativ la x},
a(P0N
atunci x 1 = x r (P0 ) este un flux de valoare v (x 1 ) = v + r (P0 ) şi de
cost minim.

11 / 13
Flux de cost minim
Algoritm generic de rezolvare a problemei fluxului de cost minim.
Algoritm generic de rezolvare a problemei fluxului de cost minim

0: Se consideră x = (xij ) un flux cu valoarea v 0 ≤ v ;


{x poate fi fluxul nul sau un flux y determinat
cu ajutorul algoritmului de flux maxim şi apoi
v
considerı̂nd x = ( v (y ) y )}
1: while (∃ circuite de pondere < 0 relativ la aij ) do
{ determină un astfel de circuit;
modifică fluxul pe acest circuit }
2: while v (x) < v do
{ aplică un algoritm de drum minim ı̂n raport cu
ponderile aij pentru depistarea unui
C-drumNP de cost minim;
x ←x min(r (P), v − v (x)) }

Complexitatea pentru pasul 2 este O(n3 v ), dacă se pleacă de la fluxul


nul. Se poate dovedi că pasul 1 se poate implementa astfel ca numărul
iteraţiilor să fie O(nm2 logn).
12 / 13
Problemele pentru seminarul 11

Se vor discuta (cel puţin) patru probleme dintre următoarele:


1 Problema 1 Setul 11”
2 Problema 1 Setul 12
3 Problema 4, Setul 15
4 Problema 3 Setul 11’
5 Problema 2, Setul 16

13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 12

C. Croitoru

croitoru@info.uaic.ro
FII

December 17, 2012

1 / 11
OUTLINE

1 Reduceri polinomiale pentru probleme de decizie pe


grafuri (ag 12-13 allinone.pdf pag. 281 −→ 320 )

2 Problemele pentru seminarul 12

2 / 11
Reduceri polinomiale
Stabila maximă.
SM
Instanţă : G = (V , E ) graf şi k ∈ N.
Intrebare: Există S mulţime stabilă ı̂n G a. ı̂. |S| ≥ k ?
Teoremă. (Karp 1972) 3SAT ∝ SM.
Exemplu: U = {u1 , u2 , u3 , u4 };
C = (u1 ∨ u3 ∨ u4 ) ∧ (u 1 ∨ u2 ∨ u4 ) ∧ (u2 ∨ u 3 ∨ u4 ); k = 4 + 3 = 7.
- - - -
u1 u1 u u2 u u3 u u4
2 3 4

a 23 a 33
a 13

a a a 21 a 22 a a 32
11 12 31

3 / 11
Reduceri polinomiale
Colorarea vârfurilor.
COL
Instanţă: G = (V , E ) graf şi p ∈ N∗ .
Intrebare: Există o p-colorare a vârfurilor lui G ?
v
1

Lemă. Fie H graful:


v
2 v
4

v
3
a) Dacă c este o 3-colorare a lui H astfel ı̂ncı̂t
c(v1 ) = c(v2 ) = c(v3 ) = a ∈ {1, 2, 3} atunci c(v4 ) = a.
b) Fie c : {v1 , v2 , v3 } → {1, 2, 3} a.ı̂. c({v1 , v2 , v3 }) 6= {a}.
Atunci c poate fi extinsă la o 3-colorare a lui H cu c(v4 ) 6= a.
Vom desemna (pentru simplitate) graful H astfel:
v
1

v
v 4
2 h

v 4 / 11
Reduceri polinomiale
Colorarea vârfurilor.
Teoremă. 3SAT ∝ COL.
Exemplu: U = {u1 , u2 , u3 , u4 } ,
C = (u 1 ∨ u2 ∨ u3 ) ∧ (u1 ∨ u3 ∨ u 4 ) ∧ (u 2 ∨ u3 ∨ u4 )
Graful G va fi (p = 3):
b

- - - -
u1 u1 u2 u u u3 u u
2 3 4 4

h1 h2 h3

a1 a2 a3

5 / 11
Reduceri polinomiale

Probleme hamiltoniene.
Definiţie: Fie G = (V (G ), E (G )) un (di)graf. Un circuit C al lui G se
numeşte circuit hamiltonian dacă V (C ) = V (G ). Un drum deschis D al
lui G se numeşte drum hamiltonian dacă V (D) = V (G ). Un (di)graf
care are un circuit hamiltonian se numeşte (di)graf hamiltonian.Un
(di)graf care are un drum hamiltonian se numeşte (di)graf trasabil.

Teoremă. (Nash-Williams 1969) Problemele următoare sı̂nt polinomial


echivalente:
CH : Dat G graf. Este G hamiltonian ?
TR : Dat G graf. Este G trasabil ?
DCH: Dat G digraf. Este G hamiltonian ?
DTR: Dat G digraf. Este G trasabil ?
BCH: Dat G graf bipartit. Este G hamiltonian ?

6 / 11
Reduceri polinomiale
Probleme hamiltoniene.
CH ∝ TR vo
x
vo
y
z

N (vo) N (vo)
G G

G H

TR ∝ CH

G+K1
DCH ∝ CH
bv aw
v w av b
w

x bx

ax

bb
a ba aa
b a b

D G 7 / 11
Reduceri polinomiale
Probleme hamiltoniene.
Teoremă. (Karp 1972) SM ∝ CH.
Pentru orice muchie a grafului G (intrare ı̂n SM) asociem graful
v (v,e,1) (v,e,2) (v,e,3) (v,e,4) (v,e,5) (v,e,6)

u (u,e,1) (u,e,2) (u,e,3) (u,e,4) (u,e,5) (u,e,6)

Singurele posibilităţi de traversare de către un circuit hamiltonian al lui H


a vı̂rfurilor din Ge0 sı̂nt (a) (b) şi (c) indicate ı̂n figura următoare:
a b

8 / 11
Reduceri polinomiale
Probleme hamiltoniene.

u
e1 e ep
2

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

a a
1 k
Exemplu:
a2

1 3
2
4

1 3 3
1
a1
2 4 2 4

2 2

4 4
9 / 11
Problema comisului voiajor
Algoritmi de aproximare.
CV Dat n ∈ Z+ (n ≥ 3) şi d : E (Kn ) → R+ , să se determine H0
circuit hamiltonian ı̂n graful complet Kn cu d(H0 ) minim printre toate
circuitele hamiltoniene ale lui Kn .
Algoritmi A, care pentru datele unei probleme CV vor oferi ı̂n timp
polinomial (ı̂n raport cu n) un circuit hamiltonian HA , care va aproxima
soluţia optimă H0 .
Măsuri ale eficienţei unei astfel de ”euristici” A pot fi considerate
numerele:
d(HA )
RA (n) = sup
d:E (Kn )→R+ d(H0 )
d(H0 )6=0

RA = sup RA (n).
n≥3

Teoremă. Dacă există un algoritm aproximativ A cu timp de lucru


polinomial pentru CV, astfel ı̂ncı̂t RA < ∞, atunci CH se poate rezolva ı̂n
timp polinomial.
P 6= NP ⇒ nu există algoritm aproximativ A polinomial cu RA < ∞.
10 / 11
Problemele pentru seminarul 12

11 / 11
ALGORITMICA GRAFURILOR
Săptămâna 13

C. Croitoru

croitoru@info.uaic.ro
FII

January 14, 2013

1 / 14
LA MULŢI ANI!

2 / 14
OUTLINE

1 Abordări ale unor probleme NP-dificile pe grafuri


(ag 12-13 allinone.pdf pag. 325 −→ 353 )

2 Problemele pentru seminarul 13

3 Prezentarea temei pentru acasă

3 / 14
Abordări ale problemelor NP-dificile
Colorarea vârfurilor unui graf
Algoritmul greedy de colorare Fie G = (V , E ), cu V = {1, 2, . . . , n} şi
π o permutare a lui V . Se construieşte colorarea c ce utilizează χ(G , π)
culori, c : {1, 2, . . . , n} −→ {1, 2, . . . , χ(G , π)}.
- c(π1 ) ← 1; χ(G , π) ← 1; S1 ← {π1 };
- for i ← 2 to n do
- { j ← 0;
- repeat
- j ← j + 1;
- fie v primul vârf (cf. ordonării π), din Sj a. ı̂. πi v ∈ E (G );
- if v există then first(πi , j) ← v
- else { first(πi , j) ← 0; c(πi ) ← j; Sj ← Sj ∪ {πi } }
- until first(πi , j) = 0 or j = χ(G , π);
- if first(πi , j) 6= 0 then
- { c(πi ) ← j + 1;
- Sj+1 ← {πi };
- χ(G , π) ← j + 1;
- }
- }
4 / 14
Abordări ale problemelor NP-dificile

Colorarea vârfurilor unui graf


Algoritmul Dsatur { Degree of Saturation}
Acest algoritm ( Brélaz, 1979 ) este o metodă secvenţială dinamică de
colorare.
Ideea este de colora vârfurile pe rând, alegând de fiecare dată vârful cu un număr maxim de constrângeri privitoare

la culorile disponibile acestuia.Această abordare este ı̂ntr-un fel opusă primeia (cea geedy) deoarece se aleg vârfuri
care formează “clici” mari ı̂n raport cu vârfurile deja alese (spre deosebire de mulţimi stabile mari ı̂n cazul greedy).
Dacă G este un graf şi c o colorare parţială a vârfurilor lui G , definim
gradul de saturaţie al unui vârf v , notat dsat (v ), ca fiind numărul de
culori diferite din vecinătatea acestuia.
- ordonează vârfurile ı̂n ordinea descrescătoare a gradelor lor;
- atribuie unui vârf de grad maxim culoarea 1;
- while există vârfuri necolorate do
- { alege un vf. necol. cu gr. de satur. maxim; dacă acesta
- nu-i unic, alege un vf. de grad maxim ı̂n subgr.necolorat;
- colorează vârful ales cu cea mai mică culoare posibilă;
- }
Algoritmul DSatur garantează găsirea numărului cromatic pentru
grafurile bipartite.

5 / 14
Abordări ale problemelor NP-dificile
Problema comisului voiajor
O euristică populară pentru problemele ı̂n care funcţia de distanţă satisface inegalitatea triunghiulară, este dată de
Christofides. Spre deosebire de cazul general când nu se poate spera la o euristică polinomială A cu RA finită, dacă
P 6= NP, ı̂n acest caz se poate demonstra următoarea
Teoremă. ( Christofides,1973) Fie CV cu d satisfăcı̂nd
∀v , w , u ∈ V (Kn ) distincte d(vw ) ≤ d(vu) + d(uw ). Există un algoritm
aproximativ A pentru CV care satisface RA = 23 şi are timp de lucru
polinomial.
1 Se determină T 0 mulţimea muchiilor unui arbore parţial de cost
minim ı̂n K n (costul muchiei e fiind d(e) ).Algoritmul lui Prim.
2 Se determină M 0 un cuplaj perfect ı̂n subgraful indus de vı̂rfurile de
grad impar ale arborelui T 0 şi de cost minim. Alg. lui Edmonds.
3 Se consideră multigraful obţinut din < T 0 ∪ M 0 >Kn , prin duplicarea
muchiilor din T 0 ∩ M 0 . Există un parcurs Eulerian ı̂nchis, cu
vı̂rfurile (vi1 , vi2 , . . . , vi1 ). Eliminı̂nd apariţiile multiple a unui vı̂rf, cu
excepţia primului şi ultimului, se obţine un circuit hamiltonian HA ı̂n
Kn cu muchiile HA = (vj1 vj2 , vj2 vj3 , . . . , vjn vj1 ) ( O(n2 ) operaţii).
6 / 14
Abordări ale problemelor NP-dificile

Metode care imită natura


Metaeuristica simulated annealing.
Inspirată din termodinamică, inventată independent de Kirkpatrick,
Gelatt şi Vechi ı̂n 1983 şi de Černy ı̂n 1985.
Probabilitatea de creştere a energiei scade odată cu temperatura:
dE
Pr (E + dE ) = Pr (E ) · e − kT

Călirea simulată este o metodă computaţională care imită modul natural


de determinare a unei configuraţii care minimizează energia unui sistem.

Atunci cnd se doreşte minimizarea unei funcţii f : D → R, vom interpreta


domeniul de definiţie al funcţiei, D, ca fiind mulţimea configuraţiilor
posibile ale sistemului, iar funcţia f ca fiind energia acestuia. O variabilă
fictivă T , asociată procesului de căutare, va juca rolul temperaturii iar
constanta lui Bolzmann va fi considerată 1.

7 / 14
Abordări ale problemelor NP-dificile
Algoritm de călire simulată
1. Plan de călire: - temperatura iniţială Tstart ; configuraţia iniţială xstart ∈ D;
- temperatura finală Tmin ; o funcţie de reducere lentă a temperaturii decrease (T);
- nr. maxim de ı̂ncercări de ı̂mbunătăţire a soluţiei la fiecare prag de temperatură attempts
- nr. maxim de schimbări ale soluţiei la fiecare prag de temperatură changes.
2. T ← Tstart ; xold ← xstart
while T > Tmin do
{ na ← 0; nc ← 0
while na < attempts and nc < changes do
{ generează o soluţie nouă xnew ; na + +;
∆E ← f (xold ) − f (xnew );
If ∆E < 0 then { xold ← xnew ; nc + +}
else
{ generează q ∈ (0, 1) un nr. aleator
∆E
if q < e − T then { xold ← xnew ; nc + +} } }
decrease(T ) }
3. return xold
Pentru problema comisului voiajor, se porneşte cu un tur ales aleator, iar soluţiile vecine se obţin cu 2-move. Se

poate lua Tstart = O( n), attempts = 100n, changes = 10n, decrease(T ) = 0.95T şi Tmin = O(1).
8 / 14
Problemele pentru seminarul 13

1 Problema 4 Setul 11’


2 Problema 2 Setul 18
3 Problema 2, Setul 19
4 Problema 3 Setul 19
5 Problema 2, Setul 16

9 / 14
TEMA

Problema 1.
Fie G un graf cu proprietatea că nu are circuite impare disjuncte.
Demonstraţi că G este 5-colorabil.
(2 puncte)

10 / 14
TEMA

Problema 2.
Graful G = (V , E ) cu n vârfuri şi m muchii modelează o reţea de
comunicaţie bidirecţională: ı̂n fiecare vârf este plasat un utilizator care
schimbă mesaje cu ceilalţi utilizatori folosind muchiile incidente cu vârful
ı̂n care este localizat (un sistem de rutare asociat reţelei va asigura
ajungerea mesajelor la destinatari). Într-un vârf special s ∈ V se află un
utilizator care trimite spamuri. Pentru fiecare muchie {u, v } ∈ E a
grafului se cunoaşte costul c({u, v }) al instalării unui filtru care să
blocheze orice spam ce s-ar putea transmite pe muchia {u, v } (de la u la
v sau de la v la u). Se doreşte ca o mulţime A ⊆ V − {s} de utilizatori
să fie protejată de spamurile trimise de utilizatorul din s. Se cere să se
proiecteze un algoritm cu timp de lucru polinomial care să determine o
mulţime de muchii E 0 ⊆ E pe care să se plaseze filtrele care sa protejeze
utilizatorii din A şi să aibă cost minim (suma costurilor muchiilor din E 0
să fie minimă printre toate mulţimile ce pot proteja A). Justificare.
(2+2 = 4 puncte)

11 / 14
TEMA
Problema 3.
Un nucleu ı̂ntr-un digraf G = (V , E ) este o mulţime S de vârfuri cu
proprietatea că S nu conţine vârfuri adiacente şi pentru orice vârf
u ∈ V − S există v ∈ S astfel ı̂ncât (v , u) ∈ E . Fie problema de decizie:
NUCLEU INSTANŢĂ: G = (V , E ) digraf.
ÎNTREBARE: Are G un nucleu?
Demonstraţi că următoarea construcţie oferă o reducere polinomială a
problemei SAT la problema NUCLEU (SAT ∝ NUCLEU).
Dată o instanţă F a lui SAT construim digraful G astfel:
- pentru fiecare clauză C a lui F adăugăm la G un 3-circuit
vC1 , (vC1 , vC2 ), vC2 , (vC2 , vC3 ), vC3 , (vC3 , vC1 ), vC1 ;
- pentru fiecare variabilă x care apare ı̂n formula F adăugăm la G un
2-circuit
vx , (vx , vx ), vx , (vx , vx ), vx ;
- pentru fiecare pereche (l, C ) unde l este un literal (x sau x) care apare
ı̂n clauza C adăugăm la G arcele (vl , vC1 ), (vl , vC2 ), (vl , vC3 ) .
(2+2=4 puncte)
12 / 14
TEMA

Problema 4.
Fiecare student dintr-o mulţime S de n > 0 studenţi optează
pentru o submulţime de 4 cursuri opţionale dintr-o mulţime C de
k > 4 cursuri opţionale. Se cere să se descrie un algoritm care să
determine ı̂n timp polinomial o alocare a studenţilor la cursurile
opţionale astfel ı̂ncât fiecare student să fie alocat la exact 3 cursuri
opţionale (din cele patru pentru care a optat) şi fiecare curs
opţional să aibă repartizat cel mult d 3n
k e studenţi (dacă o astfel de
alocare există). Justificare.
(2+2= 4 puncte)

13 / 14
TEMA

Soluţiile se primesc
miercuri 23 ianuarie ı̂ntre orele 12 şi 14, la cabinetul C-402

Precizări
Este ı̂ncurajată asocierea ı̂n echipe formate din 2 studenţi care
să realizeze ı̂n comun tema.
Depistarea unor soluţii copiate ı̂ntre echipe diferite conduce la
anularea punctajelor tuturor acestor echipe.
Nu e nevoie să se rescrie enunţul problemelor. Nu uitaţi să
treceţi numele şi grupele din care fac parte membrii echipei la
ı̂nceputul lucrarii.
Este ı̂ncurajată redactarea latex a soluţiilor.
Nu se primesc soluţii prin e-mail.
14 / 14
ALGORITMICA GRAFURILOR
Săptămâna 14

C. Croitoru

croitoru@info.uaic.ro
FII

January 21, 2013

1 / 15
OUTLINE

1 Grafuri planare (ag 12-13 allinone.pdf pag. 354 −→ )

2 Problemele pentru seminariile 14,15

3 Anunţuri.

2 / 15
Grafuri planare

Proprietăţi de bază.
Definiţie. Fie G = (V , E ) un graf şi S o suprafaţă ı̂n R3 . Spunem că G
este reprezentabil pe S dacă există G 0 = (V 0 , E 0 ) un graf astfel ı̂ncı̂t:
a) G ∼= G 0.
0
b) V e o mulţime de puncte distincte din S.
c) Orice muchie e 0 ∈ E 0 este o curbă simplă conţinută ı̂n S care uneşte
cele două extremităţi.
d) Orice punct al lui S este sau vı̂rf al lui G 0 , sau prin el trece cel mult o
muchie a lui G 0 .

G 0 se numeşte reprezentare a lui G ı̂n S.

Dacă S este un plan atunci G se numeşte planar iar G 0 o reprezentare


planară a lui G .

Dacă S este un plan şi G 0 este un graf care satisface b) c) şi d) de mai
sus atunci G 0 se numeşte graf plan.

3 / 15
Grafuri planare
Proprietăţi de bază.
Lemă.Un graf este planar dacă şi numai dacă este reprezentabil pe o
sferă.
proiecţia stereografică !
Definiţie. Fie G un graf plan. Dacă ı̂ndepărtăm punctele lui G (vı̂rfurile
şi muchiile sale) din plan se obţine o reuniune de regiuni conexe (orice
două puncte se pot uni printr-o curbă simplă conţinută ı̂n regiune) ale
planului, care se numesc feţele lui G .
Orice graf plan are un număr finit de feţe, dintre care una singură este
nemărginită şi se numeşte faţă exterioară a lui G .
6 1
1

5 6 2
2
f4 6 f4 5
f2 1 2 8 4 f5
8 f1 5 f5 f1
f4 3 f2
7 f3
f3 8 4 f3 7
7 3
4 3 f2
f5 f1

4 / 15
Grafuri planare

Proprietăţi de bază.
Lemă.Orice reprezentare planară a unui graf poate fi transformată ı̂ntr-o
reprezentare diferită astfel ı̂ncı̂t o faţă specificată a sa să devină faţa
exterioară.

Teoremă. (Formula lui Euler) Fie G = (V , E ) un graf plan conex cu n


vı̂rfuri, m muchii şi f feţe. Atunci

f =m−n+2
Din punct de vedere algoritmic, teorema are drept consecinţă imediată faptul că orice graf planar este ”rar”,
numărul muchiilor este de ordinul numărului de vı̂rfuri. Va rezulta că orice traversare ı̂n ordinul O(|V | + |E |) a lui

G este de fapt ı̂n O(|V |) operaţii.


Corolar 1. Fie G un graf planar, conex, cu n(≥ 3) vı̂rfuri şi m > 2
muchii. Atunci
m ≤ 3n − 6.
Graful K5 nu este planar !

5 / 15
Grafuri planare

Proprietăţi de bază.
Corolar 2. Dacă G este un graf bipartit, conex şi planar cu m > 2
muchii şi n vı̂rfuri, atunci m ≤ 2n − 4.
Graful K33 nu este planar.
Corolar 3. Dacă G este un graf planar conex, atunci G are un vı̂rf de
grad cel mult 5.
Fie G = (V , E ) un graf şi v ∈ V (G ) astfel ı̂ncı̂t dG (v ) = 2 şi
vw1 , vw2 ∈ E , w1 6= w2 . Fie h(G ) = (V \ {v }, E \ {vw1 , vw2 } ∪ {w1 w2 }).
Se observă că G este planar dacă şi numai dacă h(G ) este planar.
Vom nota cu h∗ (G ) graful obţinut din G aplicı̂ndu-i repetat
transformarea h, pı̂nă cı̂nd graful curent nu mai are vı̂rfuri de grad 2.
Rezultă că G este planar, dacă şi numai dacă h∗ (G ) este planar.
Definiţie. Două grafuri G1 şi G2 se numesc homeomorfe dacă şi numai
dacă h∗ (G1 ) ∼
= h∗ (G2 ).
Teoremă. (Kuratowski 1930)Un graf este planar dacă şi numai dacă
nu are subgrafuri homeomorfe cu K5 sau K33 .

6 / 15
Grafuri planare

Desenarea unui graf planar.


Fary 1948 ( independent Wagner şi Stein):
Orice graf planar are o reprezentare planară cu toate muchiile segmente
de dreaptă (reprezentarea Fary).
Existenţa unei reprezentări Fary cu vı̂rfuri ı̂n puncte de coordonate
ı̂ntregi şi, ı̂n acelaşi timp, aria suprafeţei ocupate de reprezentare să fie
polinomială ı̂n raport cu numărul n de vı̂rfuri ale grafului !

Teoremă. (Fraysseix, Pach, Pollack (1988))Orice graf planar cu n vı̂rfuri


are o reprezentare planară cu vı̂rfuri de coordonate ı̂ntregi ı̂n
[0, 2n − 4] × [0, n − 2] şi cu muchii segmente de dreaptă.
Demonstraţia: algoritm de complexitate O(n log n) pentru obţinerea
acestei reprezentări.
Vom demonstra teorema ı̂n ipoteza suplimentară că G este maximal planar : orice muchie i s-ar adăuga se obţine
un graf neplanar (sau multigraf). Să observăm că orice faţă a unui graf maximal planar este un C3 (altminteri ı̂n
reprezentarea lui G cu faţa exterioară mărginită de un Cn cu n ≥ 4 se pot introduce muchii fără a pierde
planaritatea grafului).
Ipoteza nu este restrictivă: de la o reprezentare a lui G ca o hartă planară (ce se obţine aplicı̂nd de exemplu
algoritmul de testare a planarităţii) se trece la o hartă cu toate feţele triunghiului prin inserţia ı̂n timp liniar de corzi
ı̂n circuite. La desenarea grafului obţinut, muchiile fictive introduse nu se vor trasa.

7 / 15
Grafuri planare
Grafuri plane - versiunea combinatorială.
În versiunea combinatorială un graf este un triplet G = (E , θ,− ), unde
E este o mulţime de cardinal par, − este o involuţie pe E (permutare de ordin 2)
fără puncte fixe, şi θ este o permutare pe E .
Elementele lui E sunt gândite ca arce; o muchie (neorientată) este
reprezentată ca o pereche e, e ∈ E de arce, inverse unul altuia. Aplicaţia

inversează direcţia.
Se doreşte ca aplicaţia θ să dea o orientare a muchiilor din jurul unui
vârf (ı̂n sens contrar acelor de ceasornic).
Vârfurile sunt ciclii permutării θ. (Un ciclu al permutării θ este o submulţime nevidă a lui E
ı̂nchisă ı̂n raport cu θ şi minimală cu această proprietate).

Dacă notăm cu V mulţimea ciclilor permutării θ atunci definim


t : E → V , t(e) = unicul ciclu al lui θ ce conţine e (extremit. iniţială a lui e)
h : E → V , h(e) = unicul ciclu al lui θ ce conţine e (extremit. finală a lui e)
Se observă că ∀e t(e) = h(e) şi h(e) = t(e).
Dacă θ ∗ : E → E definită de θ ∗ (e) = θ(e), atunci o faţă a lui G este un ciclu al permutării θ ∗ . Intuitiv, pentru
a calcula θ ∗ (e), inversăm e pentru a obţine e şi apoi ne rotim (ı̂n sensul acelor de ceasornic) ı̂n jurul extremităţii

iniţiale a lui e. Numărul feţelor lui G se notează cu f .


8 / 15
Grafuri planare
Grafuri plane - versiunea combinatorială.
O componentă conexă a lui G este o orbită a lui E ı̂n grupul de
permutări generat de θ şi − : o mulţime nevidă minimală cu
proprietatea că este ı̂nchisă la θ şi − .
Fie G un graf cu m = 12 |E | muchii (neorientate), n = |V | vârfuri, f feţe,
şi c componente conexe. Caracteristica Euler a lui G se defineşte ca
fiind
χ(G ) = 2c + m − n − f .
Un graf G se numeşte graf plan dacă χ(G ) = 0.

Se poate demonstra că pentru un graf conex ı̂n definiţia tradiţională, cele
două noţiuni de grafuri plane coincid
(graful neorientat construit aşa cum am descris mai sus ataşat unui graf
ı̂n formă combinatorială este graf plan conform definiţiei tradiţionale şi
invers,
dacă pentru un graf tradiţional plan conex se construieşte θ conform unei
orientări inverse acelor de ceasornic a muchiilor şi − corespunzătoare,
graful combinatorial obţinut este plan ı̂n noua definiţie).
9 / 15
Grafuri planare

Teorema Separatorului.
Teoremă. (Tarjan & Lipton, 1979) Fie G un graf planar cu n vârfuri.
Există o partiţie a lui V (G ) ı̂n clasele disjuncte A, B, S astfel ı̂ncât:
1. S separă A de B ı̂n G : G − S nu are muchii de la A la B.
2. |A| ≤ 23√n, |B| ≤ 23 n.
3. |S ≤ 4 n.
Această partiţie se poate afla ı̂n timpul O(n).
Demonstraţie. Considerăm graful conex şi de asemenea considerăm că dispunem de o reprezentare planară.
Alegem un vârf s şi executăm o parcurgere bfs din s numerotând vârfurile (ı̂n ordinea ı̂ntâlnirii lor ı̂n această
parcurgere) şi atribuind fiecărui vârf v nivelul său ı̂n arborele bfs construit. Vom nota cu L(t), 0 ≤ t ≤ l + 1
mulţimea vârfurilor de pe nivelul t (nivelul l + 1 va fi introdus ı̂n scopuri tehnice şi este vid, ultimul nivel este de
fapt l).
Fiecare nivel este un separator ı̂n G (avem muchii doar ı̂ntre nivele consecutive).
Fie t1 nivelul de la mijloc, adică nivelul ce conţine vârful numerotat bfs cu numărul de ordine n2 . Mulţimea L(t1 )
are
o parte din proprietăţile separatorului
pe care ı̂l căutăm:

t<t1
L(t) < n2 ∧ ∪t>t L(t) < n2 .
1

Dacă şi L(t1 ) ≤ 4 n, teorema are loc.

10 / 15
Grafuri planare
Teorema Separatorului.

√ nivelele t0 ≤√t1 şi t2 > t1 a. ı̂ncât |L(t0 )| ≤
Lemă.Există n,
|L(t2 )| ≤ n şi t2 − t0 ≤ n.

Se alege t0 cel mai mare număr cu proprietăţile t0 ≤ t1 şi |L(t0 )| ≤ n (există un astfel de nivel pentru că

|L(0)| = 1). La fel, există t2 un cel mai mic număr astfel ı̂nc at t2 > t1 şi |L(t2 )| ≤ n (de aceea s-a luat

|L(l + 1)| = 0). Orice nivel strict ı̂ntre t0 şi t2 are mai mult de n vârfuri deci numărul acestor nivele este mai

mic decât n, altfel am avea mai mult de n vârfuri ı̂n graf. Considerăm

C = ∪t<t0 L(t), D = ∪t0 <t<t2 L(t), E = ∪t>t2 L(t).


t1
t0 t
2

C D E

11 / 15
Grafuri planare
Teorema Separatorului.
Dacă |D| ≤ 23 n atunci teorema are loc cu S = L(t0 ) ∪ L(t2 ), A mulţimea
cu cele mai multe elemente dintre C , D, E şi B reuniunea celorlalte două
(nu uităm că C şi E au cel mult n2 elemente).
Considerăm deci că n1 = |D| > 23 n. √
Dacă vom găsi un separator de tipul 32 ↔ 23 pentru D cu cel mult 2 n
vârfuri, atunci
√ la L(t0 ) ∪ L(t2 ) pentru a obţine un separator de cardinal
ı̂l vom adăuga
cel mult 4 n,
reunim mulţimea cu cel mai mare număr de elemente dintre C şi E cu
partea mică rămasă din D pentru a obţine A,
iar partea mare rămasă ı̂n D o reunim cu cealaltă mulţime (mică ) dintre
C şi E pentru a obţine B.
Construcţia separatorului pentru D. Vom şterge toate vârfurile grafului care nu-s ı̂n D cu excepţia lui s pe care-l
unim cu toate vı̂rfurile de pe nivelul t0 + 1 (primul nivel rămas ı̂n D). Graful obţinut ı̂l notăm cu D şi este evident

planar şi conex. În plus are un arbore parţial T de diametru cel mult 2 n (orice vârf este accesibil din s pe un

drum de lungime cel mult n aşa cum am arătat ı̂n lemă). Acest arbore se parcurge dfs si se construieşte
separatorul dorit.

12 / 15
Grafuri planare
Teorema Separatorului. Aplicaţie.
Considerăm problema testării dacă un graf planar dat admite o 3-colorare
a vârfurilor (problemă cunoscută ca fiind NP-completă).
Pentru grafuri cu puţine vârfuri (un număr constant c) se poate testa ı̂n
timpul O(3c ) = O(1) dacă graful are o 3-colorare.
Pentru grafuri planare cu numărul n de vârfuri mai mare decât c,
construim ı̂n timp liniar O(n), aşa cum ne asigură teorema separatorului, √
partiţia A, B, C a mulţimii vârfurilor sale cu |A|, |B| ≤ 2n
3 şi |C | ≤ 4 n.

Pentru fiecare din cele 3|C | = 2O( n) funcţii posibile definite pe C şi cu
valori ı̂n {1, 2, 3} se testează dacă este 3-colorare a subgrafului indus de
C şi dacă poate fi extinsă la o 3-colorare a subgrafului indus de A ∪ C ı̂n
G şi la o 3-colorare a subgrafului indus de B ∪ C ı̂n G (recursiv).
Timpul de lucru al acestui algoritm, T (n), va satisface recurenţa
(
O(1) dacă n ≤ c;
T (n) = √ √
O(n) + 2O( n) (O( n) + 2T ( 2n
3
)) dacă n > c.


Se obţine T (n) = 2O( n) , destul de bun pentru probleme de dimensiuni
rezonabile. Este posibil ı̂nsă ca notaţia O(.) să ascundă constante mari !
13 / 15
Problemele pentru seminariile 14 şi 15

1 http://profs.info.uaic.ro/ croitoru/ag/Examen/

14 / 15
Anunţuri

1 Acesta este ultimul curs! Săptămâna viitoare nu se


face cursul.

2 Evaluare: ∼croitoru/ag/week01.pdf pagina 13

3 Pogramare test final: 2,3 februarie; atenţie la


anunţurile de la
http://profs.info.uaic.ro/ orar-examene/
(se vor preciza orele pe grupe şi sălile de examen)

4 Seminarul special de vineri seara se suspendă.

15 / 15

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