Documente Academic
Documente Profesional
Documente Cultură
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ă
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.
World.png
Argumentation Frameworks.
19 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
Shot.png
Visualization systems.
22 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
Madrid-Metro.
23 / 43
INTERESUL PENTRU GRAFURI ÎN INFORMATICĂ
24 / 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Ă
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
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:
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)
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).
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
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?
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?
Cuplaje
P2 Intrare: G un graf.
Ieşire: ν(G ) şi un ”martor”:
M cuplaj ı̂n G , cu |M| = ν(G ).
4 / 10
Vocabular-Definiţia unui graf
Colorarea vârfurilor
COL Intrare: G un graf, k ∈ N.
Intrebare: Admite G o k-colorare?
5 / 10
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 .
6 / 10
Vocabular-Definiţia unui graf
Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?
7 / 10
Vocabular-Definiţia unui graf
Izomorfism
ISO Intrare: G , H grafuri.
Intrebare: G∼ = H?
Izomorfism
SISO Intrare: G , H grafuri.
Intrebare: Are G un subgraf G 0 astfel ca G 0 ∼
= H?
Este NP-completă.
8 / 10
Vocabular
9 / 10
Problemele pentru seminarul 2
10 / 10
ALGORITMICA GRAFURILOR
Săptămâna 3
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 11
OUTLINE
2 / 11
Vocabular
3 / 11
Probleme de drum
1 Parcurgeri sistematice
BFS
DFS
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
1 / 13
OUTLINE
2 / 13
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 / 13
Drumuri de cost minim
Rezolvarea problemei P2
4 / 13
Drumuri de cost minim
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 ∗ }
}
7 / 13
Drumuri de cost minim
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
1 / 14
OUTLINE
2 Probleme de conexiune
(ag 12-13 allinone.pdf pag. 124 −→ 149 )
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
9 / 14
Probleme de conexiune
10 / 14
Probleme de conexiune
ν(G ) = |G | − α(G ).
11 / 14
Probleme de conexiune
12 / 14
Probleme de conexiune
13 / 14
Problemele pentru seminarul 5
14 / 14
ALGORITMICA GRAFURILOR
Săptămâna 6
C. Croitoru
croitoru@info.uaic.ro
FII
November 5, 2012
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 7
C. Croitoru
croitoru@info.uaic.ro
FII
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
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
1 / 16
OUTLINE
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.
3 / 16
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 / 16
Fluxuri
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
(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 / 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ă.
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 / 16
Problemele pentru seminarul 9
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.
(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
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 10
13 / 13
ALGORITMICA GRAFURILOR
Săptămâna 11
C. Croitoru
croitoru@info.uaic.ro
FII
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 12
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 13
C. Croitoru
croitoru@info.uaic.ro
FII
1 / 14
LA MULŢI ANI!
2 / 14
OUTLINE
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
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
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
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
1 / 15
OUTLINE
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 .
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ă.
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
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
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).
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 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
15 / 15