Sunteți pe pagina 1din 63

Grafuri

Concepte de bază. Tipuri de grafuri. Modalităţi de reprezentare

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?

Graf: structură de date discretă formată din noduri şi muchii de


legătură ı̂ntre noduri.

Marin, M. Grafuri
Introducere
Ce este un graf?

Graf: structură de date discretă formată din noduri şi muchii de


legătură ı̂ntre noduri.
I Utilă pentru modelarea unui număr mare de probleme:
legături rutiere sau feroviare ı̂ntre localităţi
relaţii de subordonare ı̂n o organizaţie
rezultatul final al unui turneu
...

Marin, M. Grafuri
Introducere
Ce este un graf?

Graf: structură de date discretă formată din noduri şi muchii de


legătură ı̂ntre noduri.
I Utilă pentru modelarea unui număr mare de probleme:
legături rutiere sau feroviare ı̂ntre localităţi
relaţii de subordonare ı̂n o organizaţie
rezultatul final al unui turneu
...
I Notaţie matematică G = (V , E ) unde:
V : mulţime finită de noduri
E : mulţime finită de muchii

Marin, M. Grafuri
Introducere
Ce este un graf?

Graf: structură de date discretă formată din noduri şi muchii de


legătură ı̂ntre noduri.
I Utilă pentru modelarea unui număr mare de probleme:
legături rutiere sau feroviare ı̂ntre localităţi
relaţii de subordonare ı̂n o organizaţie
rezultatul final al unui turneu
...
I Notaţie matematică G = (V , E ) unde:
V : mulţime finită de noduri
E : mulţime finită de muchii
I Probleme diferite pot fi modelate cu tipuri de grafuri diferite:
grafuri simple, multigrafuri, pseudografuri, grafuri orientate,
etc.

Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Noduri V : locaţiile geografice ale calculatoarelor: San


Francisco (SF), Los Angeles (LA), Denver (Dn), Chicago (C),
Detroit (Dt), New York (NY), Washington (W)
Muchii E : legăturile dintre calculatoare; presupunem că
1 Nu există legături de la un nod la el ı̂nsuşi.
2 Există cel mult o legătură ı̂ntre calculatoare diferite.
Dt NY
C W

SF Dn

LA

Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Noduri V : locaţiile geografice ale calculatoarelor: San


Francisco (SF), Los Angeles (LA), Denver (Dn), Chicago (C),
Detroit (Dt), New York (NY), Washington (W)
Muchii E : legăturile dintre calculatoare; presupunem că
1 Nu există legături de la un nod la el ı̂nsuşi.
2 Există cel mult o legătură ı̂ntre calculatoare diferite.
Dt NY
C W
V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
E = {{SF, LA}, {SF, Dn}, {LA, Dn}, {Dn, C},
LA {C, Dt}, {Dt, NY}, {C, NY}, {C, W}, {W, NY}}

Marin, M. Grafuri
Graf simplu
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Noduri V : locaţiile geografice ale calculatoarelor: San


Francisco (SF), Los Angeles (LA), Denver (Dn), Chicago (C),
Detroit (Dt), New York (NY), Washington (W)
Muchii E : legăturile dintre calculatoare; presupunem că
1 Nu există legături de la un nod la el ı̂nsuşi.
2 Există cel mult o legătură ı̂ntre calculatoare diferite.
Dt NY
C W
V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
E = {{SF, LA}, {SF, Dn}, {LA, Dn}, {Dn, C},
LA {C, Dt}, {Dt, NY}, {C, NY}, {C, W}, {W, NY}}

Remarcă: Muchiile unui graf simplu sunt specificate ca o


submulţime a mulţimii {{x, y } | x, y ∈ V , x 6= y }.
I muchiile sunt neorientate (ordinea nodurilor este irelevantă).
De exemplu: {C, NY} = {NY, C}
Marin, M. Grafuri
Multigraf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Pentru evitarea supraı̂ncărcării legăturilor telefonice, calculatoare


diferite pot fi conectate cu mai multe linii telefonice:
e9
Dt NY
e8 e 10
e 12
e5 C e11
e6
W e 13

e1 e7
SF Dn
e3
e2

e4
LA

Marin, M. Grafuri
Multigraf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Pentru evitarea supraı̂ncărcării legăturilor telefonice, calculatoare


diferite pot fi conectate cu mai multe linii telefonice:
e9
Dt NY
e8 e 10
e 12
e5 C e11
e6
W e 13

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

Pentru evitarea supraı̂ncărcării legăturilor telefonice, calculatoare


diferite pot fi conectate cu mai multe linii telefonice:
e9
Dt NY
e8 e 10
e 12
e5 C e11
e6
W e 13

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}, . . .

Remarcă: Un multigraf G este specificat de către mulţimile V , E


şi o funcţie f : E → {{x, y } | x, y ∈ V , x 6= y }.
e, e 0 ∈ E sunt paralele dacă f (e) = f (e 0 ).

Marin, M. Grafuri
Pseudograf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Putem considera şi legături telefonice de la un calculator la el


ı̂nsuşi (de exemplu, pentru diagnosticare):
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

e1 e7
SF Dn
e3
e2

e4
LA

e15

Marin, M. Grafuri
Pseudograf
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Putem considera şi legături telefonice de la un calculator la el


ı̂nsuşi (de exemplu, pentru diagnosticare):
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

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

Putem considera şi legături telefonice de la un calculator la el


ı̂nsuşi (de exemplu, pentru diagnosticare):
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

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}

Remarcă: Un pseudograf G este specificat de către mulţimile V ,


E şi o funcţie f : E → {{x, y } | x, y ∈ V }.
e ∈ E este o buclă dacă f (e) = {x}, x ∈ V .
Exemple: e14 , e15 , e16 sunt bucle.
Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Există cel mult o legătură de la un calculator la altul.
Dt NY
C W

SF Dn

LA

Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Există cel mult o legătură de la un calculator la altul.
Dt NY
C W
V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF),
LA (Dn, C), (C, Dn), (C, Dt), (Dt, NY), (C, NY),
(C, W), (W, NY), (NY, W), (NY, NY)}

Marin, M. Grafuri
Graf orientat (digraf)
Exemplu: calculatoare din oraşe diferite conectate prin legături telefonice

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Există cel mult o legătură de la un calculator la altul.
Dt NY
C W
V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF),
LA (Dn, C), (C, Dn), (C, Dt), (Dt, NY), (C, NY),
(C, W), (W, NY), (NY, W), (NY, NY)}

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

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Există cel mult o legătură de la un calculator la altul.
Dt NY
C W
V={SF,LA,Dn,C,Dt,NY,W}
SF Dn
E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF),
LA (Dn, C), (C, Dn), (C, Dt), (Dt, NY), (C, NY),
(C, W), (W, NY), (NY, W), (NY, NY)}

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

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Putem avea muchii multiple (paralele) de la o sursă la o
destinaţie.
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

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

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Putem avea muchii multiple (paralele) de la o sursă la o
destinaţie.
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

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

Muchiile sunt orientate de la un nod sursă la un nod destinaţie


Putem avea muchii multiple (paralele) de la o sursă la o
destinaţie.
e9
Dt NY e16
e8 e 10
e 12
e14 e5 C e11
e6
W e 13

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)

Remarcă: Un multigraf orientat G este specificat de către


mulţimile V , E şi o funcţie f : E → V × V .
Marin, M. Grafuri
Graf ponderat
Exemplu: reţea de legături feroviare ı̂ntre nişte oraşe

Un graf G = (V , E ) ı̂mpreună cu o funcţie w : E → Y care


asociază o greutate (sau pondere) w (e) fiecărei muchii e ∈ E .
I De obicei, ponderile sunt numere reale (A ⊆ R)
I În acest exemplu, ponderile sunt distanţele ı̂n kilometri dintre
oraşe.

Marin, M. Grafuri
Tipuri de grafuri
Terminologie

Tip muchii muchii multiple? Bucle?


Graf simplu neorientate nu nu
Multigraf neorientate da nu
Pseudograf neorientate da da
Graf orientat orientate nu da
Multigraf orientat orientate da da

Marin, M. Grafuri
Modele bazate pe grafuri
1. Graf de suprapunere de nişă:

Graf simplu ce modelează interacţiunea dintre specii diferite de


animale:
fiecare specie este reprezentată de un nod
muchiile sunt ı̂ntre specii ı̂m competiţie pentru resurse
comune de mâncare

raton bufniţă
şoim

veveriţă
oposum cioară

napârcă şoarece ciocănitoare

Marin, M. Grafuri
Modele bazate pe grafuri
2. Graf de turneu

Graf orientat (V , E ) care modelează un campionat ı̂n care fiecare


echipă joacă o singură dată cu fiecare din celelalte echipe:
Fiecare echipa este reprezentată ca nod ı̂n graf
(a, b) ∈ E indică faptul că echipa a a ı̂nvins echipa b.

Exemplu: turneu de 6 echipe


Echipa 1 Echipa 2

Echipa 6 Echipa 3

Echipa 5 Echipa 4

Marin, M. Grafuri
Modele bazate pe grafuri
3. Graf de precedenţă

Graf orientat G = (V , E ) care descrie relaţiile de dependenţă


dintre instrucţiunile unui program P:
Nodurile corespund instrucţiunilor din programul P
(s, s 0 ) ∈ E dacă instrucţiunea s 0 nu poate fi executată ı̂naintea
instrucţiunii s.
Exemplu:

Marin, M. Grafuri
Alte modele bazate pe grafuri

4. Arbore de familie al unei persoane X : graf orientat care


reprezintă toţi strămoşii cunoscuţi ai lui X :
Noduri: X şi toţi strămoşii cunoscuţi ai lui X
Muchii: (a, b) reprezintă faptul că b este copilul lui a.
Exemplu: arbore de familie al lui JFK:
Patrick J. Kennedy
Joseph P. Kennedy
Mary A. Hickey
John F. Kennedy
John F. Fitzgerald
Rose F. Kennedy
Mary J. Hannon

5. Graful web: WWW poate fi modelat ca un graf orientat


nodurile sunt paginile web
o muchie de la A la B indică existenţa unui hyperlink din
pagina A la pagina B.

Marin, M. Grafuri
Noţiuni de bază
Terminologie pentru grafuri neorientate G = (V , E ) (1)

Nodurile u, v sunt incidente dacă e = {u, v } ∈ E .


Muchia e este incidentă cu nodul u şi cu nodul v .
Nodurile u, v sunt capetele muchiei e.
u este vecinul lui v , şi v este vecinul lui u.
Gradul deg(u) unui nod u este numărul de muchii incidente cu
u; buclele contribuie de 2 ori la gradul unui nod.
u este izolat dacă deg(u) = 0, şi pendant dacă deg(u) = 1.

Marin, M. Grafuri
Noţiuni de bază
Terminologie pentru grafuri neorientate G = (V , E ) (1)

Nodurile u, v sunt incidente dacă e = {u, v } ∈ E .


Muchia e este incidentă cu nodul u şi cu nodul v .
Nodurile u, v sunt capetele muchiei e.
u este vecinul lui v , şi v este vecinul lui u.
Gradul deg(u) unui nod u este numărul de muchii incidente cu
u; buclele contribuie de 2 ori la gradul unui nod.
u este izolat dacă deg(u) = 0, şi pendant dacă deg(u) = 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)

Ordinul lui G este |V |, numărul de noduri.


Mărimea lui G este |E |, numărul de muchii.
Vecinătatea lui x ∈ V este N(x) := {y | y este vecin al lui x}
Vecinătatea ı̂nchisă a lui x este N[x] := N(x) ∪ {x}
Gradul minim al lui G este δ(G ) = min{deg(x) | x ∈ V }
Gradul maxim al lui G este ∆(G ) = max{deg(x) | x ∈ V }

Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Terminologie pentru G = (V , E ) (2)

Ordinul lui G este |V |, numărul de noduri.


Mărimea lui G este |E |, numărul de muchii.
Vecinătatea lui x ∈ V este N(x) := {y | y este vecin al lui x}
Vecinătatea ı̂nchisă a lui x este N[x] := N(x) ∪ {x}
Gradul minim al lui G este δ(G ) = min{deg(x) | x ∈ V }
Gradul maxim al lui G este ∆(G ) = max{deg(x) | x ∈ V }
Exemplu

a b c d

e f g h

G = (V , E ) unde V = {a, b, c, d, e, f }, E = {{a, d}, {a, e},


{b, c}, {b, e}, {b, g }, {c, f }, {d, f }, {d, g }, {g , h}}
N(d) = {a, f , g }, N[d] = {a, d, f , g },
∆(G ) = deg(b) = 3, δ(G ) = deg(h) = 1.
Marin, M. Grafuri
Noţiuni de bază pentru grafuri neorientate
Conectivitate (3)

Fie G = (V , E ) un graf neorientat.


Un lanţ (sau cale) de la v1 la vn este o secvenţă de noduri
d = (v1 , v2 , . . . , vn ) astfel ı̂ncât vi+1 este vecinul lui vi pentru
orice 1 ≤ i < n.
I Lungimea lanţului d este n − 1.
I d este elementar dacă nodurile v1 , . . . , vn sunt distincte.
I d este simplu dacă nu conţine de mai multe ori aceeaşi muchie.
I d este ciclu dacă este lanţ simplu de lungime ≥ 3 şi, v1 = vn .
I Un ciclu d = (v1 , . . . , vn , v1 ) este elementar dacă nodurile
v1 , . . . , vn sunt distincte.
v şi v 0 sunt conectate dacă există un lanţ de la v la v 0 .
G este conex dacă orice 2 noduri sunt conectate.

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

Grafurile vide En au n noduri, şi nu au nici o muchie.


v1 v2 v3 ... vn

Grafurile ciclice Cn constau din cicluri de lungime n

C3 C4

Marin, M. Grafuri
Tipuri speciale de grafuri simple (2)
Grafuri bipartite

G = (V , E ) este bipartit dacă


I V = X ∪ Y unde X 6= ∅ =
6 Y şi X ∩ Y = ∅
I Toate muchiile au un capăt ı̂n X şi celălalt ı̂n Y .

Exemplu de graf bipartit :

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

K1,4 K3,4 K3,2

Observaţii: Alte definiţii echivalente pentru ca G să fie bipartit:


I putem colora nodurile cu 2 culori astfel ı̂ncât orice 2 noduri
ı̂nvecinate să aibe culori diferite.
I nu conţine cicluri de lungime impară.
Exemple de grafuri bipartite
1 1 2 Dan Ana 1 1 2
2 6 2 6
= 3 4
Ion Lia
= 3 4
Nae Zoe
3 5 3 5
4 5 6 Leo Mia 4 5 6
K3,3 relaţii de C6
prietenie

Marin, M. Grafuri
Noţiuni de bază pentru grafuri orientate
Terminologie pentru G = (V , E ) (1)

Muchiile lui G se numesc arce. Scriem (u, v ) ∈ E dacă E


conţine un arc cu sursa u şi destinaţia v .
u, v sunt adiacente dacă (u, v ) ∈ E .
Gradul interior al unui nod v este
deg− (v ) = |{e ∈ E | e are destinaţia v }|.
Gradul exterior al unui nod v este
deg+ (v ) = |{e ∈ E | e are sursa v }|.
Exemplu

c Nod x deg− (x) deg+ (x)


b
a 0 2
b 3 1
a f c 1 3
d 1 1
e d e 2 2
f 2 0

Marin, M. Grafuri
Noţiuni de bază pentru grafuri orientate
Terminologie pentru G = (V , E ) (1)

Muchiile lui G se numesc arce. Scriem (u, v ) ∈ E dacă E


conţine un arc cu sursa u şi destinaţia v .
u, v sunt adiacente dacă (u, v ) ∈ E .
Gradul interior al unui nod v este
deg− (v ) = |{e ∈ E | e are destinaţia v }|.
Gradul exterior al unui nod v este
deg+ (v ) = |{e ∈ E | e are sursa v }|.
Exemplu

c Nod x deg− (x) deg+ (x)


b
a 0 2
b 3 1
a f c 1 3
d 1 1
e d e 2 2
f 2 0
X X
Observaţie: deg− (v ) = deg+ (v ).
v ∈V ∈V
Marin,vM. Grafuri
Noţiuni de bază pentru grafuri orientate
Conectivitate: Drumuri şi circuite (2)

Un drum de la v1 la vn este o secvenţă de noduri


d = (v1 , v2 , . . . , vn ) astfel ı̂ncât (vi , vi−1 ) ∈ E pentru orice
1 ≤ i < n.
I Lungimea drumului d este n − 1.
I d este simplu dacă arcele (v1 , v2 ), . . . , (vn−1 , vn ) sunt distincte
două câte două.
I d este elementar dacă nodurile v1 , . . . , vn sunt distincte.
Observaţie: orice drum elementar este simplu.
Un circuit este un drum simplu d = (v1 , v2 , . . . , vn ) cu v1 = vn .
I Circuitul d = (v1 , . . . , vn , v1 ) este elementar dacă nodurile
v1 , . . . , vn sunt distincte.

Marin, M. Grafuri
Grafuri izomorfe

a b 1 2
c d 8 3

e f 7 4
g h 6 5

Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2


grafuri devin identice.

Marin, M. Grafuri
Grafuri izomorfe

a b 1 2
c d 8 3

e f 7 4
g h 6 5

Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2


grafuri devin identice.

Marin, M. Grafuri
Grafuri izomorfe

a b 1 2
c d 8 3

e f 7 4
g h 6 5

Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2


grafuri devin identice.
Grafuri izomorfe
G = (V1 , E1 ) şi H = (V2 , E2 ) sunt izomorfe dacă există o funcţie
bijectivă f : V1 → V2 astfel ı̂ncât
{x, y } ∈ E1 dacă şi numai dacă {f (x), f (y )} ∈ E2 , sau
(x, y ) ∈ E1 dacă şi numai dacă (f (x), f (y )) ∈ E2 .

Marin, M. Grafuri
Grafuri izomorfe

a b 1 2
c d 8 3

e f 7 4
g h 6 5

Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2


grafuri devin identice.
Grafuri izomorfe
G = (V1 , E1 ) şi H = (V2 , E2 ) sunt izomorfe dacă există o funcţie
bijectivă f : V1 → V2 astfel ı̂ncât
{x, y } ∈ E1 dacă şi numai dacă {f (x), f (y )} ∈ E2 , sau
(x, y ) ∈ E1 dacă şi numai dacă (f (x), f (y )) ∈ E2 .

Remarcă: Când 2 grafuri G şi H sunt izomorfe, se obişnuieşte să se


spună că “G este H” şi să se scrie “G = H”.
Marin, M. Grafuri
Modalităţi de reprezentare a grafurilor

1 Listă de noduri + listă de muchii


2 Liste de adiacenţă
3 Matrice de adiacenţă
4 Matrice de incidenţă
5 Matrice de ponderi

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ţă

Pentru fiecare nod u ∈ V se reţine lista de noduri adiacente la u


I Dacă G este neorientat, v este adiacent la u dacă există o
muchie cu capetele u şi v .
În grafuri neorientate, relaţia de adiacenţă este simetrică.
I Dacă G este orientat, v este adiacent la u dacă există un arc
e ∈ E de la u la v , adică start(e) = u şi end(e) = v .

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ţă

Presupunem că G = (V , E ) este un graf cu |V | = n noduri.


Matricea de adiacenţă a lui G este AG = (mij ) de dimensiune
n × n şi
mij := numărul de muchii de la al i-lea nod la al j-lea nod.

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

Dacă A este o matrice simetrică n × n cu aij ∈ N pentru toţi i, j,


un graf neorientat G care are matricea de adiacenţă A se
construieşte astfel:
1 Se desenează n noduri v1 , . . . , vn ı̂n plan
2 Pentru orice i, j ∈ {1, . . . , n} , se trasează aij muchii distincte
ı̂ntre vi şi vj

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

pentru enumerarea nodurilor [a, b, c, d, e].

Marin, M. Grafuri
Reprezentarea digrafurilor ponderate
Matrici de ponderi

Matricea de ponderi WG = (wij ) a unui graf simplu ponderat, sau


digraf ponderat G cu n noduri [v1 , . . . , vn ] are dimensiunea n × n şi
B wii = 0 pentru toţi 1 ≤ i ≤ n.
B wij = w ({vi , vj }) pentru orice muchie {vi , vj } ∈ E , dacă G
este neorientat.
B wij = w ((vi , vj )) pentru orice arc (vi , vj ) ∈ E , dacă G este
orientat.
B wij = ∞ ı̂n toate celelalte cazuri.

Marin, M. Grafuri
Reprezentarea digrafurilor ponderate
Matrici de ponderi

Matricea de ponderi WG = (wij ) a unui graf simplu ponderat, sau


digraf ponderat G cu n noduri [v1 , . . . , vn ] are dimensiunea n × n şi
B wii = 0 pentru toţi 1 ≤ i ≤ n.
B wij = w ({vi , vj }) pentru orice muchie {vi , vj } ∈ E , dacă G
este neorientat.
B wij = w ((vi , vj )) pentru orice arc (vi , vj ) ∈ E , dacă G este
orientat.
B wij = ∞ ı̂n toate celelalte cazuri.

Digraf ponderat cu enumerare de noduri [a, b, c, d, e, f ]


2
9 0 3 ∞ ∞ 4 ∞
b c
3 ∞ 0 2 ∞ ∞ ∞
12

∞ 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

I Reprezentarea cu listă de muchii


Adecvată pentru reprezentarea grafurilor simple fără noduri
izolate, cu |E |  |V |
Complexitate spaţială (memorie ocupată): O(|E |)
I Reprezentarea cu liste de adiacenţă
Permite enumerarea rapidă a vecinilor unui nod
Complexitate spaţială (memorie ocupată): O(|V | + |E |)
I Reprezentarea cu matrice de adiacenţă AG = (aij ) sau cu
matrice de ponderi WG = (wij )
Test rapid de conectivitate directă ı̂ntre 2 noduri: O(1)
@(vi , vj ) ∈ E dacă aij = 0 sau dacă wij = ∞
Complexitate spaţială (memorie ocupată): O(|V |2 )
- reprezentare neadecvată când |E |  |V |2
Reprezentare cu matrice de incidenţă MG
I Complexitate temporală: O(|V | · |E |)

Marin, M. Grafuri
Operaţii pe grafuri

Presupunem că G = (V , E ) este un graf neorientat, v ∈ V , S ⊆ V ,


e ∈ E, T ⊆ E
Ştergere de noduri:
G − v este graful care se obţine eliminând din G nodul v şi
toate muchiile incidente la v .
G − S este graful care se obţine eliminând din G nodurile din
S şi toate muchiile incidente la un nod din S.
Un subgraf al lui G este orice graf G − S.
Ştergere de muchii
G − e este graful care se obţine eliminând din G muchia e.
Capetele lui e nu se elimină.
G − T este graful care se obţine eliminând din G toate
muchiile din T .

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 }}

I d este nod de tăiere ı̂n 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 }}

I d este nod de tăiere ı̂n G .


I {a, b} este punte ı̂n 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

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