Documente Academic
Documente Profesional
Documente Cultură
Mircea Marin
Departamentul of Informatică
Universitatea de Vest din Timişoara
mircea.marin@e-uvt.ro
9 noiembrie 2018
Marin, M. Grafuri
Introducere
Ce este un graf?
Marin, M. Grafuri
Introducere
Ce este un graf?
Marin, M. Grafuri
Introducere
Ce este un graf?
Marin, M. Grafuri
Introducere
Ce este un graf?
Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
SF Dn
LA
Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7
SF Dn
e3
e2
e4
LA
Marin, M. Grafuri
Multigraf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 }
e2
e4
LA f : E → {{x, y } | x, y ∈ V , x 6= y },
f returnează capetele fiecărei muchii:
f (e1 ) = {SF, Dn}, f (e2 ) = {SF, LA},
f (e3 ) = f (e4 ) = {LA, Dn}, f (e5 ) = f (e6 ) = f (e7 ) = {Dn, C},
f (e8 ) = {C, Dt}, f (e9 ) = {Dt, NY}, . . .
Marin, M. Grafuri
Multigraf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 }
e2
e4
LA f : E → {{x, y } | x, y ∈ V , x 6= y },
f returnează capetele fiecărei muchii:
f (e1 ) = {SF, Dn}, f (e2 ) = {SF, LA},
f (e3 ) = f (e4 ) = {LA, Dn}, f (e5 ) = f (e6 ) = f (e7 ) = {Dn, C},
f (e8 ) = {C, Dt}, f (e9 ) = {Dt, NY}, . . .
Marin, M. Grafuri
Pseudograf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7
SF Dn
e3
e2
e4
LA
e15
Marin, M. Grafuri
Pseudograf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 , e14 , e15 , e16 }
e2
e4
LA f : E → {{x, y } | x, y ∈ V , x 6= y },
f returnează capetele fiecărei muchii:
e15 f (e1 ) = {SF, Dn}, f (e2 ) = {SF, LA},
f (e3 ) = f (e4 ) = {LA, Dn}, f (e5 ) = f (e6 ) = f (e7 ) = {Dn, C},
f (e8 ) = {C, Dt}, f (e9 ) = {Dt, NY}, . . . , f (e16 ) = {NY}
Marin, M. Grafuri
Pseudograf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 , e14 , e15 , e16 }
e2
e4
LA f : E → {{x, y } | x, y ∈ V , x 6= y },
f returnează capetele fiecărei muchii:
e15 f (e1 ) = {SF, Dn}, f (e2 ) = {SF, LA},
f (e3 ) = f (e4 ) = {LA, Dn}, f (e5 ) = f (e6 ) = f (e7 ) = {Dn, C},
f (e8 ) = {C, Dt}, f (e9 ) = {Dt, NY}, . . . , f (e16 ) = {NY}
SF Dn
LA
Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
Observaţii:
Muchiile unui digraf G = (V , E ) sunt o submulţime
E ⊆ (V × V ).
Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
Observaţii:
Muchiile unui digraf G = (V , E ) sunt o submulţime
E ⊆ (V × V ).
Dacă u 6= v atunci (u, v ) 6= (v , u).
Marin, M. Grafuri
Multigraf orientat
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7
SF Dn
e3
e2
e4
LA
e15
Marin, M. Grafuri
Multigraf orientat
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 , e14 , e15 , e16 }
e2
e4
LA f : E → V × V,
f returnează sursa şi destinaţia fiecărei muchii:
e15 f (e1 ) = (Dn, SF), f (e2 ) = (LA, SF), f (e3 ) = (LA, Dn),
f (e4 ) = (Dn, LA), f (e5 ) = f (e6 ) = (Dn, C), f (e7 ) = (C, Dn),
f (e8 ) = (C, Dt), . . . , f (e16 ) = (NY, NY)
Marin, M. Grafuri
Multigraf orientat
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice
e1 e7 V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
e3 E = {e1 , e2 , e3 , . . . , e11 , e12 , e13 , e14 , e15 , e16 }
e2
e4
LA f : E → V × V,
f returnează sursa şi destinaţia fiecărei muchii:
e15 f (e1 ) = (Dn, SF), f (e2 ) = (LA, SF), f (e3 ) = (LA, Dn),
f (e4 ) = (Dn, LA), f (e5 ) = f (e6 ) = (Dn, C), f (e7 ) = (C, Dn),
f (e8 ) = (C, Dt), . . . , f (e16 ) = (NY, NY)
Marin, M. Grafuri
Tipuri de grafuri
Terminologie
Marin, M. Grafuri
Modele bazate pe grafuri
1. Graf de suprapunere de nişă:
raton bufniţă
şoim
veveriţă
oposum cioară
Marin, M. Grafuri
Modele bazate pe grafuri
2. Graf de turneu
Echipa 6 Echipa 3
Echipa 5 Echipa 4
Marin, M. Grafuri
Modele bazate pe grafuri
3. Graf de precedenţă
Marin, M. Grafuri
Alte modele bazate pe grafuri
Marin, M. Grafuri
Noţiuni de bază
Terminologie pentru grafuri neorientate G = (V , E ) (1)
Marin, M. Grafuri
Noţiuni de bază
Terminologie pentru grafuri neorientate G = (V , E ) (1)
Exemplu
b c d a b c
a f e g e d
G H
În G : deg(a) = 2, deg(b) = deg(c) = deg(f ) = 4, deg(d) = 1, deg(e) =
3, deg(g ) = 0.
În H: deg(a) = 4, deg(b) = deg(e) = 6, deg(c) = 1, deg(d) = 5.
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (2)
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (2)
a b c d
e f g h
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (4)
Exemplu
a • (f ) este lanţ de lungime 0.
• (a, c, f , c, b, d) este lanţ de lungime 5.
c b Acest lanţ nu este nici simplu nici elementar.
e • (b, a, c, b, d, b) este ciclu de lungime 4.
d
Acest ciclu este simplu şi ne-elementar.
f g • (d, g , b, a, c, f , e) este lanţ simplu şi elementar de lungime 6.
• (g , d, b, c, a, b, g ) este ciclu simplu dar ne-elementar.
• (e, d, b, a, c, f , e) este ciclu elementar.
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (4)
Exemplu
a • (f ) este lanţ de lungime 0.
• (a, c, f , c, b, d) este lanţ de lungime 5.
c b Acest lanţ nu este nici simplu nici elementar.
e • (b, a, c, b, d, b) este ciclu de lungime 4.
d
Acest ciclu este simplu şi ne-elementar.
f g • (d, g , b, a, c, f , e) este lanţ simplu şi elementar de lungime 6.
• (g , d, b, c, a, b, g ) este ciclu simplu dar ne-elementar.
• (e, d, b, a, c, f , e) este ciclu elementar.
Observaţii:
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (4)
Exemplu
a • (f ) este lanţ de lungime 0.
• (a, c, f , c, b, d) este lanţ de lungime 5.
c b Acest lanţ nu este nici simplu nici elementar.
e • (b, a, c, b, d, b) este ciclu de lungime 4.
d
Acest ciclu este simplu şi ne-elementar.
f g • (d, g , b, a, c, f , e) este lanţ simplu şi elementar de lungime 6.
• (g , d, b, c, a, b, g ) este ciclu simplu dar ne-elementar.
• (e, d, b, a, c, f , e) este ciclu elementar.
Observaţii:
1 Un lanţ sau ciclu elementar este simplu.
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (4)
Exemplu
a • (f ) este lanţ de lungime 0.
• (a, c, f , c, b, d) este lanţ de lungime 5.
c b Acest lanţ nu este nici simplu nici elementar.
e • (b, a, c, b, d, b) este ciclu de lungime 4.
d
Acest ciclu este simplu şi ne-elementar.
f g • (d, g , b, a, c, f , e) este lanţ simplu şi elementar de lungime 6.
• (g , d, b, c, a, b, g ) este ciclu simplu dar ne-elementar.
• (e, d, b, a, c, f , e) este ciclu elementar.
Observaţii:
1 Un lanţ sau ciclu elementar este simplu.
P
2 Teorema Fundamentală 1: v ∈V deg(v ) = 2 · |E |.
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (4)
Exemplu
a • (f ) este lanţ de lungime 0.
• (a, c, f , c, b, d) este lanţ de lungime 5.
c b Acest lanţ nu este nici simplu nici elementar.
e • (b, a, c, b, d, b) este ciclu de lungime 4.
d
Acest ciclu este simplu şi ne-elementar.
f g • (d, g , b, a, c, f , e) este lanţ simplu şi elementar de lungime 6.
• (g , d, b, c, a, b, g ) este ciclu simplu dar ne-elementar.
• (e, d, b, a, c, f , e) este ciclu elementar.
Observaţii:
1 Un lanţ sau ciclu elementar este simplu.
P
2 Teorema Fundamentală 1: v ∈V deg(v ) = 2 · |E |.
3 Teorema Fundamentală 2: Dacă v şi v 0 sunt conectate
atunci există un lanţ elementar de la v la v 0 .
Marin, M. Grafuri
Tipuri speciale de grafuri simple (1)
Kn , Cn , En
Grafurile complete Kn
K1 K2
K3 K4 K5 K6
Grafurile cale Pn sunt lanţurile elementare de n noduri
v1 v2 v3 vn
C3 C4
Marin, M. Grafuri
Tipuri speciale de grafuri simple (2)
Grafuri bipartite
X Y
Un graf bipartit complet Km,n este un graf bipartit ı̂ntre X şi Y cu
|X | = m, |Y | = n, astfel ı̂ncât există o muchie ı̂ntre orice pereche
de noduri (x, y ) ∈ X × Y .
Marin, M. Grafuri
Grafuri bipartite
Exemple de grafuri bipartite complete
Marin, M. Grafuri
Noţiuni de bază pentru grafuri orientate
Terminologie pentru G = (V , E ) (1)
Marin, M. Grafuri
Noţiuni de bază pentru grafuri orientate
Terminologie pentru G = (V , E ) (1)
Marin, M. Grafuri
Grafuri izomorfe
a b 1 2
c d 8 3
e f 7 4
g h 6 5
Marin, M. Grafuri
Grafuri izomorfe
a b 1 2
c d 8 3
e f 7 4
g h 6 5
Marin, M. Grafuri
Grafuri izomorfe
a b 1 2
c d 8 3
e f 7 4
g h 6 5
Marin, M. Grafuri
Grafuri izomorfe
a b 1 2
c d 8 3
e f 7 4
g h 6 5
Marin, M. Grafuri
Grafuri simple
Reprezentarea cu listă de noduri + listă de muchii
Exemplu
b c Listă de noduri V = [a, b, c, d, e]
Listă de muchii E = [{a, b}, {a, c}, {a, d}, {b, c}, {c, e}, {d, e}]
e Observaţii: {a, b} = {b, a}, {a, c} = {c, a}, etc.
a muchie ↔ mulţimea de noduri adiacente la muchie
d
b c Listă de noduri V = [a, b, c, d, e]
Listă de arce E = [(a, b), (c, a), (c, b), (d, a), (e, c), (e, d)]
e Observaţii: (a, b) 6= (b, a), (a, c) 6= (c, a), etc.
a muchie ↔ pereche (start,end)
d
Remarcă
Dacă nu există noduri izolate (cu 0 vecini), nu este necesar să fie
reţinută lista de noduri V :
I V se poate calcula din E
Marin, M. Grafuri
Grafuri simple
Reprezentarea cu liste de adiacenţă
Exemplu
b c a 7→ [b, c, d] d 7→ [a, e]
b 7→ [a, c] e 7→ [c, d]
e c 7→ [a, b, e]
a d
b c a 7→ [b] d 7→ [a]
b 7→ [] e 7→ [c, d]
e c 7→ [a, b]
a d
Marin, M. Grafuri
Matrice de adiacenţă
Observaţii
1 Înainte de a construi AG din G , trebuie să fixăm o enumerare
a tuturor nodurilor: [v1 , v2 , . . . , vn ]
2 Dacă G este neorientat, AG este matrice simetrică
3 Dacă G este graf simplu, AG conţine doar 0 şi 1
Marin, M. Grafuri
Matrici de adiacenţă pentru grafuri neorientate
Vizualizarea unui graf neorientat reprezentat de AG
Exemplu
0 1 0 2 v2 v3
1 0 1 0
A= 0 ⇒G :
1 0 1
2 0 1 0 v1 v4
Marin, M. Grafuri
Matrici de adiacenţă pentru grafuri orientate
b c
Graful G : e are matricea de adiacenţă
a d
0 1 0 0 0
0 0 0 0 0
1
AG = 1 0 0 0
1 0 0 0 0
0 0 1 1 0
Marin, M. Grafuri
Reprezentarea digrafurilor ponderate
Matrici de ponderi
Marin, M. Grafuri
Reprezentarea digrafurilor ponderate
Matrici de ponderi
∞ 9 0 ∞ 1 12
G :a f ⇒ WG =
1
5
4 ∞ ∞ ∞ 0 ∞ 7
7
1 ∞ 5 ∞ 1 0 ∞
e d ∞ ∞ ∞ ∞ ∞ 0
Marin, M. Grafuri
Modalităţi de reprezentare a grafurilor
Studiu comparativ
Marin, M. Grafuri
Operaţii pe grafuri
Marin, M. Grafuri
Grafuri parţiale şi subgrafuri
Fie G 0 = (V , E 0 ) şi G 0 = (V 0 , E 0 ).
G 0 este un graf parţial al lui G dacă V 0 ⊆ V şi G 0 se obţine
din G prin ştergeri succesive de noduri si muchii.
G 0 este un subgraf al lui G dacă V 0 ⊆ V şi G 0 se obţine
ştergând din G nodurile din V − V 0 .
I G 0 este o componentă a lui G dacă este un subgraf maximal
care este conex.
I G 0 este o clică a lui G dacă (1) G 0 este subgraf al lui G şi
(2) G 0 este (izomorf cu) un graf complet Kn , n ≥ 2.
v este un nod de tăiere al lui G dacă G − v are mai multe
componente decât G .
e este o punte a lui G dacă G − e are mai multe componente
decât G .
S este o mulţime de tăiere a unui graf conex G dacă
I ∅=
6 S ( V , şi
I G − S nu este conex.
Marin, M. Grafuri
Grafuri neorientate
Componente conexe
Exemple
c
1
G1 : a d este conex.
b e
c
f
2 g
G2 : a d nu este conex. G2 are 3 componente:
b e
G2 − {e, f , g }, G2 − {a, b, c, d, e}, şi G3 = G2 − {a, b, c, d, f , g }.
c b
3
G3 : d a nu este conex. G3 are 2 componente:
e f
G3 − {b, d, f } şi G3 − {a, c, e}.
Marin, M. Grafuri
Operaţii pe grafuri
Exemplu: ştergere de noduri şi muchii
a a a
b c b c b c
d d
e f e f e f
g g g
G −d G G −{{c, d}}
a
b c
d
e f
g
G − {{e, g }, {f , g }}
Marin, M. Grafuri
Operaţii pe grafuri
Exemplu: ştergere de noduri şi muchii
a a a
b c b c b c
d d
e f e f e f
g g g
G −d G G −{{c, d}}
a
b c
d
e f
g
G − {{e, g }, {f , g }}
Marin, M. Grafuri
Operaţii pe grafuri
Exemplu: ştergere de noduri şi muchii
a a a
b c b c b c
d d
e f e f e f
g g g
G −d G G −{{c, d}}
a
b c
d
e f
g
G − {{e, g }, {f , g }}
Marin, M. Grafuri
Grafuri parţiale şi subgrafuri
Fie G , G 0 două grafuri.
Spunem că G este liber de G 0 , sau G 0 -liber, dacă G 0 nu este
subgraf al lui G .
Quiz
Se consideră grafurile
K1,3 Z1 N
Care din grafurile următoare sunt K1,3 -libere? Care sunt Z1 -libere?
Care sunt N-libere?
Marin, M. Grafuri