Documente Academic
Documente Profesional
Documente Cultură
Săptămâna 1
C. Croitoru
croitoru@info.uaic.ro
FII
October 1, 2014
1 / 42
OUTLINE
1 Descrierea cursului
2 Interesul pentru grafuri ı̂n Informatică
2 / 42
DESCRIEREA CURSULUI
Pagina cursului
http://thor.info.uaic.ro/˜ croitoru/ag/
3 / 42
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 / 42
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ă
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 / 42
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 / 42
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 14-15 allinone.pdf
7 / 42
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 14-15 allinone.pdf
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 / 42
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 / 42
DESCRIEREA CURSULUI
EVALUARE
Punctajul minim de promovare: 50 puncte.
11 / 42
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 / 42
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 după ”regulile ETCS” cu adaptările
precizate de FII.
World.png
Argumentation Frameworks.
19 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
Shot.png
Visualization systems.
22 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
Madrid-Metro.
23 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
24 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
26 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
?
a
27 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
NO
a
28 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
29 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
30 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
YES
31 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
a e
c f
32 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
b
?
a e
c f
33 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
b
YES
a e
EXTENSION
c f
34 / 42
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
Mulţimi stabile
SM Intrare: G un graf, k ∈ N.
Intrebare: Există S mulţime stabilă ı̂n G ,
cu |S| ≥ k?
36 / 42
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?
Cuplaje
P2 Intrare: G un graf.
Ieşire: ν(G ) şi un ”martor”:
M cuplaj ı̂n G , cu |M| = ν(G ).
37 / 42
Vocabular-Definiţia unui graf
Colorarea vârfurilor
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?
38 / 42
Vocabular-Definiţia unui graf
Colorarea vârfurilor
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?
Colorarea muchiilor
P4 Intrare: G un graf.
Ieşire: χ0 (G ) şi un ”martor”: o χ0 (G )-colorare
a muchiilor lui G .
39 / 42
Vocabular-Definiţia unui graf
Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?
40 / 42
Vocabular-Definiţia unui graf
Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?
Izomorfism de subgrafuri
SISO Intrare: G , H grafuri.
Intrebare: Are G un subgraf G 0 astfel ca G 0 ∼
= H?
Este NP-completă.
41 / 42
Problemele pentru seminarul 1
42 / 42
ALGORITMICA GRAFURILOR
Săptămâna 2
C. Croitoru
croitoru@info.uaic.ro
FII
October 8, 2014
1 / 10
OUTLINE
2 / 10
Vocabular
3 / 10
Problemele pentru seminarul 2
4 / 10
ALGORITMICA GRAFURILOR
Săptămâna 3
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 19
OUTLINE
2 / 19
Vocabular
3 / 19
Probleme de drum
1 Parcurgeri sistematice
BFS
DFS
4 / 19
Probleme de drum
Drumuri de cost minim
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 }.
5 / 19
Drumuri de cost minim
Rezolvarea problemei P2
6 / 19
Drumuri de cost minim
7 / 19
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 ∗ }
}
9 / 19
Problemele pentru seminarul 3
Acesta este un seminar mai deosebit, 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)
10 / 19
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.
11 / 19
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:
12 / 19
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.
13 / 19
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)
14 / 19
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).
15 / 19
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)
16 / 19
Problemele pentru seminarul 3
22
Să se arate că dacă G este graful reprezentativ al muchiilor unui
graf H (G = L(H)), atunci G este un graf K1,3 -free.
23
Desenaţi graful P4 × K2 şi determinaţi-i numărul cromatic
(argumentare).
24
Este adevărată inegalitatea α(G ) ≤ k(G ) pentru graful G desenat
mai jos? (justificare; α(G ) este numărul de stabilitate al lui G , iar
k(G ) este numărul său de conexiune)
17 / 19
Problemele pentru seminarul 3
25
Fie G un graf conex cu proprietatea că are un vârf din care dacă se
execută cele două tipuri de parcurgere (dfs şi bfs) arborii dfs şi bfs
construiţi sunt aceeşi. Poate avea G circuite? (justificare)
26
Demonstraţi că dacă ∀u, v ∈ V (G ), u 6= v avem
NG (u) ∪ NG (v ) = V (G ), atunci graful G este complet.
27
Să se arate că dacă un graf G are exact două vârfuri de grad impar
atunci ı̂n G există un drum ı̂ntre aceste două vârfuri.
28
Fie G = (V , E ) un graf cu proprietatea că ∀ v , w ∈ V , v 6= w are
loc dG (v ) + dG (w ) ≥ |V | − 1. Demonstraţi că diametrul lui G este
cel mult 2.
18 / 19
Problemele pentru seminarul 3
29
Fie G un graf conex cu toate vârfurile de grad par. Demonstraţi că
∀e ∈ E graful G − e este conex.
30
Fie G = (V , E ) un graf cu cel puţin 3 vr̂furi. Demonstraţi că G
este conex dacă şi numai dacă există două vârfuri u, v ∈ V
(u 6= v ) astfel ı̂ncât grafurile G − u şi G − v sunt conexe.
31
Dacă H = (V (H), E (H) este un graf, notăm numărul muchiilor lui
H cu e(H) (e(H) = |E (H)|). Demonstraţi că pentru orice graf
G = (V ,P
E ) cu cel puţin 3 vârfuri are loc egalitatea
e(G −v )
e(G ) = v ∈V
|V |−2 .
19 / 19
ALGORITMICA GRAFURILOR
Săptămâna 4
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 25
OUTLINE
2 / 25
Probleme de drum
Drumuri de cost minim
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 / 25
Drumuri de cost minim
Rezolvarea problemei P2
4 / 25
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 ∗ }
}
6 / 25
Drumuri de cost minim
Strategii de implementare
Estimator consistent
PSP
7 / 25
Drumuri de cost minim
8 / 25
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 }.
9 / 25
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
10 / 25
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!
11 / 25
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!
12 / 25
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
13 / 25
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“
}
14 / 25
Probleme de conexiune
15 / 25
Probleme de conexiune
16 / 25
Probleme de conexiune
ν(G ) = |G | − α(G ).
17 / 25
Probleme de conexiune
18 / 25
Problemele pentru seminarul 4
1 Problema 1, Setul 3”
2 Problema 3, Setul 6
3 Problema 2, Setul 20
4 3-4 probleme din lista următoare :)
19 / 25
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).
20 / 25
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 .
21 / 25
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 .
22 / 25
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 ).
23 / 25
ALGORITMICA GRAFURILOR
Săptămâna 5
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 12
OUTLINE
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.
3 / 12
Arbori
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
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]:
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 }
12 / 12
ALGORITMICA GRAFURILOR
Săptămâna 6
C. Croitoru
croitoru@info.uaic.ro
FII
November 5, 2014
1/9
OUTLINE
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 }.
|M ∗ | + |F ∗ | = n.
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ă
ν(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 .
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:
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
9/9
ALGORITMICA GRAFURILOR
Săptămâna 7
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 11
OUTLINE
2 / 11
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.
3 / 11
Fluxuri
v (x) este fluxul net care ajunge ı̂n ieşirea reţelei şi este egal cu fluxul net
care iese din intrarea reţelei.
4 / 11
Fluxuri
5 / 11
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
(valoarea fluxului este egală cu fluxul net ce trece prin orice secţiune.)
Iniţial, se etichetează sursa s cu eticheta (0, ., ∞). Celelalte vı̂rfuri primesc etichetă prin ”cercetarea” vı̂rfurilor
deja etichetate:
8 / 11
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ă.
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, . . .
10 / 11
Problemele pentru seminarul 7
11 / 11
ALGORITMICA GRAFURILOR
Săptămâna 9
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 13
OUTLINE
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.
Lemă (Goldberg şi Tarjan 1986) Numărul pompărilor nesaturate este cel
mult 2n2 m.
7 / 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.
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
++
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 9
13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 10
C. Croitoru
croitoru@info.uaic.ro
FII
December 3, 2014
1 / 13
OUTLINE
2 / 13
Aplicaţii combinatorii ale fluxurilor
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
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) (∗)
b1
a t
1 t a1
bt
s 2
S
a a2
s
bs b2
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
d n, 0 c ,0
m
Dn Cm
o o ,a n1
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
13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 11
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 11
OUTLINE
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
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.
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)
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
11 / 11
ALGORITMICA GRAFURILOR
Săptămâna 12
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 13
OUTLINE
2 / 13
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;
- }
- }
3 / 13
Abordări ale problemelor NP-dificile
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.
4 / 13
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).
5 / 13
Abordări ale problemelor NP-dificile
6 / 13
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).
7 / 13
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 .
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.
8 / 13
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
9 / 13
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ă.
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
10 / 13
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 .
11 / 13
Problemele pentru seminarul 12
1 Problema 4 Setul 10
2 Problema 3 Setul 11
3 Problema 4, Setul 11’
4 Problema 4 Setul 15
5 Problema 3, Setul 22
6 Problema 2 Setul 19
7 Problema 4 Setul 22
8 Problema 2, Setul 25
12 / 13
LA MULŢI ANI!
13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 13
C. Croitoru
croitoru@info.uaic.ro
FII
January 7, 2015
1 / 15
LA MULŢI ANI!
2 / 15
OUTLINE
3 / 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 .
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.
4 / 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
5 / 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ă.
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
6 / 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 .
7 / 15
Grafuri planare
8 / 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).
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).
10 / 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.
11 / 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 D E
12 / 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.
13 / 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 !
14 / 15
Problemele pentru seminariile 13 şi 14
1 http://profs.info.uaic.ro/˜croitoru/ag/Examen/
15 / 15
ALGORITMICA GRAFURILOR
Săptămâna 14
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 23
¨ ,,,
Ultimul Curs ^
2 / 23
OUTLINE
2 Anunţuri
3 / 23
Tree decomposition
Definition
A tree decomposition of a graph G = (V , E ) is a pair
(T , {Vt : t ∈ T }), where T is a tree and {Vt : t ∈ T } denotes a
family of subsets of the vertices of G , Vt ⊆ V for every node
t ∈ T such that:
(Node coverage) For every v ∈ V , there is some node t in T
such that v ∈ Vt .
(Edge coverage) For every e ∈ E , there is some node t in T
such that Vt contains both endpoints of e.
(Coherence) Let t1 , t2 , t3 be three nodes in T such that t2
lies on the path between t1 and t3 in T . Then, if v ∈ V
belongs to both Vt1 and Vt3 , v must also belong to Vt2 .
4 / 23
Tree decomposition
Definition - Comment
5 / 23
Tree decomposition
Definition - Example
f i
4 6
{d, e, h} {h, i, e}
h
e
3
g {c, d, e}
7
{e, i, f}
c
d
5
{g, h, d}
2
a b {b, c, d}
1
{a, b, c}
Graful G Arborele T
6 / 23
Tree-width
Definition
Let (T , {Vt : t ∈ T }) be a tree decomposition of G .
The width of tree decomposition (T , {Vt : t ∈ T }) is
Definition
The tree-width of G, denoted tw (G ), is the minimum width of a
tree decomposition of G .
7 / 23
Tree-width
8 / 23
Tree-width
Tree decomposition with width 1 of a forest
{a}
a { a,d }
{ a,b }
{b}
d b {d}
{ b,c }
c {c}
{e}
e { e,f }
{ e,g }
f g
{g}
{f}
9 / 23
Tree-width
10 / 23
Tree-width
|T | = |T − t1 | + 1 ≤ |G 0 | + 1 ≤ |G |.
11 / 23
Tree-width
Minors
Observations.
If the graph H is obtained from G by contracting an edge uv
into z, then tw (H) ≤ tw (G ). In a tree decomposition of G , insert z in every bag
containing u or v , and then remove u and v from every bag to obtain a tree decomposition of H.
12 / 23
Tree-width
Theorem
Tree-width (decision version) is NP-complete.
13 / 23
Tree-width
Tree-Width is FPT
Lemma. For every positive integer k, TW(k) is minor closed.
14 / 23
Tree decomposition properties
15 / 23
Tree decomposition properties
16 / 23
Tree-width
Exercises
1. Let G be a connected graph with tw (G ) = p. Prove that
|V (G )| = p + 1 or G has a p-cut.
17 / 23
Rooted tree decomposition
Definition
A rooted tree decomposition of G is a tree decomposition
(T , {Vt : t ∈ T }) of G , where some node r in T is declared to be
the root.
18 / 23
Applications
Vertex coloring
Recall: A k-vertex coloring (k-coloring) of a graph
G = (V , E ) is a function α : V → {1, . . . , k} such that for all
uv ∈ E , α(u) 6= α(v ).
Let H1 and H2 be two subgraphs of G , with k-colorings α1
and α2 respectively. α2 is α1 -compatible if for all
v ∈ V (H1 ) ∩ V (H2 ), α1 (v ) = α2 (v ).
Let (T , {Vt : t ∈ T }) be a rooted tree decomposition of G .
For every t ∈ T and every k-coloring α of Gt , define
(
1 if G [t] has an α-compatible k-coloring β,
Prevt (α) =
0 otherwise.
19 / 23
Applications
Vertex coloring
20 / 23
Applications
Vertex coloring
21 / 23
Applications
22 / 23
Anunţuri
4 ♥ Succes la examene!
23 / 23