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
Introducere Ce este un graf? Graf: structură de date discretă formată din noduri şi muchii de legătură între noduri.
Introducere Ce este un graf? Graf: structură de date discretă formată din noduri şi muchii de legătură între noduri. 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...
Introducere Ce este un graf? Graf: structură de date discretă formată din noduri şi muchii de legătură între noduri. 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... Notaţie matematică G = (V, E) unde: V : mulţime finită de noduri E : mulţime finită de muchii
Introducere Ce este un graf? Graf: structură de date discretă formată din noduri şi muchii de legătură între noduri. 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... Notaţie matematică G = (V, E) unde: V : mulţime finită de noduri E : mulţime finită de muchii Probleme diferite pot fi modelate cu tipuri de grafuri diferite: grafuri simple, multigrafuri, pseudografuri, grafuri orientate, etc.
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. C Dt W NY SF Dn LA
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. SF LA Dn C Dt W NY V={SF,LA,Dn,C,Dt,NY,W} E = {{SF, LA}, {SF, Dn}, {LA, Dn}, {Dn, C}, {C, Dt}, {Dt, NY}, {C, NY}, {C, W}, {W, NY}}
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. SF LA Dn C Dt W NY V={SF,LA,Dn,C,Dt,NY,W} E = {{SF, LA}, {SF, Dn}, {LA, Dn}, {Dn, C}, {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 y}. muchiile sunt neorientate (ordinea nodurilor este irelevantă). De exemplu: {C, NY} = {NY, C}
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: e 5 e 6 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 SF e 2 LA e 1 e 3 e 4 Dn e 7
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: SF e 2 LA e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13 } f : E {{x, y} x, y V, x y}, f returnează capetele fiecărei muchii: f (e 1 ) = {SF, Dn}, f (e 2 ) = {SF, LA}, f (e 3 ) = f (e 4 ) = {LA, Dn}, f (e 5 ) = f (e 6 ) = f (e 7 ) = {Dn, C}, f (e 8 ) = {C, Dt}, f (e 9 ) = {Dt, NY},...
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: SF e 2 LA e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13 } f : E {{x, y} x, y V, x y}, f returnează capetele fiecărei muchii: f (e 1 ) = {SF, Dn}, f (e 2 ) = {SF, LA}, f (e 3 ) = f (e 4 ) = {LA, Dn}, f (e 5 ) = f (e 6 ) = f (e 7 ) = {Dn, C}, f (e 8 ) = {C, Dt}, f (e 9 ) = {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 y}. e, e E sunt paralele dacă f (e) = f (e ).
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): e 14 e 5 e 6 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 SF e 2 LA e 1 e 3 e 4 Dn e 7 e 15
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): e 14 SF e 2 LA e 15 e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13, e 14, e 15, e 16 } f : E {{x, y} x, y V, x y}, f returnează capetele fiecărei muchii: f (e 1 ) = {SF, Dn}, f (e 2 ) = {SF, LA}, f (e 3 ) = f (e 4 ) = {LA, Dn}, f (e 5 ) = f (e 6 ) = f (e 7 ) = {Dn, C}, f (e 8 ) = {C, Dt}, f (e 9 ) = {Dt, NY},..., f (e 16 ) = {NY}
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): e 14 SF e 2 LA e 15 e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13, e 14, e 15, e 16 } f : E {{x, y} x, y V, x y}, f returnează capetele fiecărei muchii: f (e 1 ) = {SF, Dn}, f (e 2 ) = {SF, LA}, f (e 3 ) = f (e 4 ) = {LA, Dn}, f (e 5 ) = f (e 6 ) = f (e 7 ) = {Dn, C}, f (e 8 ) = {C, Dt}, f (e 9 ) = {Dt, NY},..., f (e 16 ) = {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: e 14, e 15, e 16 sunt bucle.
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. C Dt W NY SF Dn LA
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. SF LA Dn C Dt W NY V={SF,LA,Dn,C,Dt,NY,W} E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF), (Dn, C), (C, Dn), (C, Dt), (Dt, NY), (C, NY), (C, W), (W, NY), (NY, W), (NY, NY)}
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. SF LA Dn C Dt W NY V={SF,LA,Dn,C,Dt,NY,W} E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF), (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 ).
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. SF LA Dn C Dt W NY V={SF,LA,Dn,C,Dt,NY,W} E = {(SF, SF), (Dn, SF), (Dn, LA), (LA, Dn), (LA, SF), (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 v atunci (u, v) (v, u).
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. e 14 e 5 e 6 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 SF e 2 LA e 1 e 3 e 4 Dn e 7 e 15
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. e 14 SF e 2 LA e 15 e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13, e 14, e 15, e 16 } f : E V V, f returnează sursa şi destinaţia fiecărei muchii: f (e 1 ) = (Dn, SF), f (e 2 ) = (LA, SF), f (e 3 ) = (LA, Dn), f (e 4 ) = (Dn, LA), f (e 5 ) = f (e 6 ) = (Dn, C), f (e 7 ) = (C, Dn), f (e 8 ) = (C, Dt),..., f (e 16 ) = (NY, NY)
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. e 14 SF e 2 LA e 15 e 1 e 3 e 4 Dn e 5 e 6 e 7 C e 8 e 11 Dt e 10 W e 9 e 12 NY e 13 e 16 V={SF,LA,Dn,C,Dt,NY,W} E = {e 1, e 2, e 3,..., e 11, e 12, e 13, e 14, e 15, e 16 } f : E V V, f returnează sursa şi destinaţia fiecărei muchii: f (e 1 ) = (Dn, SF), f (e 2 ) = (LA, SF), f (e 3 ) = (LA, Dn), f (e 4 ) = (Dn, LA), f (e 5 ) = f (e 6 ) = (Dn, C), f (e 7 ) = (C, Dn), f (e 8 ) = (C, Dt),..., f (e 16 ) = (NY, NY) Remarcă: Un multigraf orientat G este specificat de către mulţimile V, E şi o funcţie f : E V V.
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. De obicei, ponderile sunt numere reale (A R) În acest exemplu, ponderile sunt distanţele în kilometri dintre oraşe.
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
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 şoim bufniţă oposum veveriţă cioară napârcă şoarece ciocănitoare
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
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 ) E dacă instrucţiunea s nu poate fi executată înaintea instrucţiunii s. Exemplu:
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: John F. Kennedy Joseph P. Kennedy Rose F. Kennedy Patrick J. Kennedy Mary A. Hickey John F. Fitzgerald 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.
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.
Noţiuni de bază Terminologie pentru grafuri neorientate G = (V, E) (1) Exemplu 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. 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.
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 }
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (2) Exemplu 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 } 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.
Noţiuni de bază pentru grafuri neorientate Conectivitate (3) Fie G = (V, E) un graf neorientat. Un lanţ (sau cale) de la v 1 la v n este o secvenţă de noduri d = (v 1, v 2,..., v n ) astfel încât v i+1 este vecinul lui v i pentru orice 1 i < n. Lungimea lanţului d este n 1. d este elementar dacă nodurile v 1,..., v n sunt distincte. d este simplu dacă nu conţine de mai multe ori aceeaşi muchie. d este ciclu dacă este lanţ simplu de lungime 3 şi, v 1 = v n. Un ciclu d = (v 1,..., v n, v 1 ) este elementar dacă nodurile v 1,..., v n sunt distincte. v şi v sunt conectate dacă există un lanţ de la v la v. G este conex dacă orice 2 noduri sunt conectate.
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (4) Exemplu c f a (f ) este lanţ de lungime 0. (a, c, f, c, b, d) este lanţ de lungime 5. b Acest lanţ nu este nici simplu nici elementar. d e (b, a, c, b, d, b) este ciclu de lungime 4. Acest ciclu este simplu şi ne-elementar. 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.
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (4) Exemplu c f a (f ) este lanţ de lungime 0. (a, c, f, c, b, d) este lanţ de lungime 5. b Acest lanţ nu este nici simplu nici elementar. d e (b, a, c, b, d, b) este ciclu de lungime 4. Acest ciclu este simplu şi ne-elementar. 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:
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (4) Exemplu c f a (f ) este lanţ de lungime 0. (a, c, f, c, b, d) este lanţ de lungime 5. b Acest lanţ nu este nici simplu nici elementar. d e (b, a, c, b, d, b) este ciclu de lungime 4. Acest ciclu este simplu şi ne-elementar. 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.
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (4) Exemplu c f a (f ) este lanţ de lungime 0. (a, c, f, c, b, d) este lanţ de lungime 5. b Acest lanţ nu este nici simplu nici elementar. d e (b, a, c, b, d, b) este ciclu de lungime 4. Acest ciclu este simplu şi ne-elementar. 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. 2 Teorema Fundamentală 1: v V deg(v) = 2 E.
Noţiuni de bază pentru grafuri neorientate Terminologie pentru G = (V, E) (4) Exemplu c f a (f ) este lanţ de lungime 0. (a, c, f, c, b, d) este lanţ de lungime 5. b Acest lanţ nu este nici simplu nici elementar. d e (b, a, c, b, d, b) este ciclu de lungime 4. Acest ciclu este simplu şi ne-elementar. 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. 2 Teorema Fundamentală 1: v V deg(v) = 2 E. 3 Teorema Fundamentală 2: Dacă v şi v sunt conectate atunci există un lanţ elementar de la v la v.
Tipuri speciale de grafuri simple (1) K n, C n, E n le complete K n K 1 K 2 K 3 K 4 K 5 K 6 le cale P n sunt lanţurile elementare de n noduri v 1 v 2 v 3 v n le vide E n au n noduri, şi nu au nici o muchie. v 1 v 2 v 3... v n le ciclice C n constau din cicluri de lungime n C 3 C 4
Tipuri speciale de grafuri simple (2) bipartite G = (V, E) este bipartit dacă V = X Y unde X Y şi X Y = Toate muchiile au un capăt în X şi celălalt în Y. Exemplu de graf bipartit : X Y
Tipuri speciale de grafuri simple (2) bipartite G = (V, E) este bipartit dacă V = X Y unde X Y şi X Y = Toate muchiile au un capăt în X şi celălalt în Y. Exemplu de graf bipartit : X Y Un graf bipartit complet K m,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.
Tipuri speciale de grafuri simple (2) bipartite G = (V, E) este bipartit dacă V = X Y unde X Y şi X Y = Toate muchiile au un capăt în X şi celălalt în Y. Exemplu de graf bipartit : X Y Un graf bipartit complet K m,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. Exemple de grafuri bipartite complete K 1,4 K 3,4 K 3,2
Noţiuni de bază pentru grafuri orientate Terminologie pentru G = (V, E) (1) Exemplu 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}. a b e c d f Nod x deg (x) deg + (x) a 0 2 b 3 1 c 1 3 d 1 1 e 2 2 f 2 0
Noţiuni de bază pentru grafuri orientate Terminologie pentru G = (V, E) (1) Exemplu 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}. a b e c d f Nod x deg (x) deg + (x) a 0 2 b 3 1 c 1 3 d 1 1 e 2 2 f 2 0 Observaţie: v V deg (v) = v V deg + (v).
Noţiuni de bază pentru grafuri orientate Conectivitate: Drumuri şi circuite (2) Un drum de la v 1 la v n este o secvenţă de noduri d = (v 1, v 2,..., v n ) astfel încât (v i, v i 1 ) E pentru orice 1 i < n. Lungimea drumului d este n 1. d este simplu dacă arcele (v 1, v 2 ),..., (v n 1, v n ) sunt distincte două câte două. d este elementar dacă nodurile v 1,..., v n sunt distincte. Observaţie: orice drum elementar este simplu. Un circuit este un drum simplu d = (v 1, v 2,..., v n ) cu v 1 = v n. Circuitul d = (v 1,..., v n, v 1 ) este elementar dacă nodurile v 1,..., v n sunt distincte.
izomorfe a c d b 8 1 2 3 g e f h 7 6 5 4 Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2 grafuri devin identice.
izomorfe a c d b 8 1 2 3 g e f h 7 6 5 4 Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2 grafuri devin identice.
izomorfe a c d b 8 1 2 3 g e f h 7 6 5 4 Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2 grafuri devin identice. izomorfe G = (V 1, E 1 ) şi H = (V 2, E 2 ) sunt izomorfe dacă există o funcţie bijectivă f : V 1 V 2 astfel încât {x, y} E 1 dacă şi numai dacă {f (x), f (y)} E 2, sau (x, y) E 1 dacă şi numai dacă (f (x), f (y)) E 2.
izomorfe a c d b 8 1 2 3 g e f h 7 6 5 4 Dacă putem redenumi şi repoziţiona nodurile primului graf, cele 2 grafuri devin identice. izomorfe G = (V 1, E 1 ) şi H = (V 2, E 2 ) sunt izomorfe dacă există o funcţie bijectivă f : V 1 V 2 astfel încât {x, y} E 1 dacă şi numai dacă {f (x), f (y)} E 2, sau (x, y) E 1 dacă şi numai dacă (f (x), f (y)) E 2. 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.
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
simple Reprezentarea cu listă de noduri + listă de muchii Exemplu b a c d e 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}] Observaţii: {a, b} = {b, a}, {a, c} = {c, a}, etc. muchie mulţimea de noduri adiacente la muchie b a c d e 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)] Observaţii: (a, b) (b, a), (a, c) (c, a), etc. muchie pereche (start,end) Remarcă Dacă nu există noduri izolate (cu 0 vecini), nu este necesar să fie reţinută lista de noduri V : V se poate calcula din E
simple Reprezentarea cu liste de adiacenţă Pentru fiecare nod u V se reţine lista de noduri adiacente la u 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ă. 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 a c d e a [b, c, d] b [a, c] c [a, b, e] d [a, e] e [c, d] b a c d e a [b] b [] c [a, b] d [a] e [c, d]
Matrice de adiacenţă Presupunem că G = (V, E) este un graf cu V = n noduri. Matricea de adiacenţă a lui G este A G = (m ij ) de dimensiune n n şi m ij := numărul de muchii de la al i-lea nod la al j-lea nod. Observaţii 1 Înainte de a construi A G din G, trebuie să fixăm o enumerare a tuturor nodurilor: [v 1, v 2,..., v n ] 2 Dacă G este neorientat, A G este matrice simetrică 3 Dacă G este graf simplu, A G conţine doar 0 şi 1
Matrici de adiacenţă pentru grafuri neorientate Vizualizarea unui graf neorientat reprezentat de A G Dacă A este o matrice simetrică n n cu a ij 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 v 1,..., v n în plan 2 Pentru orice i, j {1,..., n}, se trasează a ij muchii distincte între v i şi v j Exemplu 0 1 0 2 v 2 v 3 A = 1 0 1 0 0 1 0 1 2 0 1 0 v 1 v 4
Matrici de adiacenţă pentru grafuri orientate b Graful G : a c e are matricea de adiacenţă d 0 1 0 0 0 0 0 0 0 0 A G = 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 pentru enumerarea nodurilor [a, b, c, d, e].
Reprezentarea digrafurilor ponderate Matrici de ponderi Matricea de ponderi W G = (w ij ) a unui graf simplu ponderat, sau digraf ponderat G cu n noduri [v 1,..., v n ] are dimensiunea n n şi w ii = 0 pentru toţi 1 i n. w ij = w({v i, v j }) pentru orice muchie {v i, v j } E, dacă G este neorientat. w ij = w((v i, v j )) pentru orice arc (v i, v j ) E, dacă G este orientat. w ij = în toate celelalte cazuri.
Reprezentarea digrafurilor ponderate Matrici de ponderi Matricea de ponderi W G = (w ij ) a unui graf simplu ponderat, sau digraf ponderat G cu n noduri [v 1,..., v n ] are dimensiunea n n şi w ii = 0 pentru toţi 1 i n. w ij = w({v i, v j }) pentru orice muchie {v i, v j } E, dacă G este neorientat. w ij = w((v i, v j )) pentru orice arc (v i, v j ) E, dacă G este orientat. w ij = în toate celelalte cazuri. Digraf ponderat cu enumerare de noduri [a, b, c, d, e, f ] G : a 3 4 b e 5 1 2 9 1 c d 7 12 f W G = 0 3 4 0 2 9 0 1 12 0 7 5 1 0 0
Modalităţi de reprezentare a grafurilor Studiu comparativ Reprezentarea cu listă de muchii Adecvată pentru reprezentarea grafurilor simple fără noduri izolate, cu E V Complexitate spaţială (memorie ocupată): O( E ) Reprezentarea cu liste de adiacenţă Permite enumerarea rapidă a vecinilor unui nod Complexitate spaţială (memorie ocupată): O( V + E ) Reprezentarea cu matrice de adiacenţă A G = (a ij ) sau cu matrice de ponderi W G = (w ij ) Test rapid de conectivitate directă între 2 noduri: O(1) (v i, v j ) E dacă a ij = 0 sau dacă w ij = Complexitate spaţială (memorie ocupată): O( V 2 ) - reprezentare neadecvată când E V 2 Reprezentare cu matrice de incidenţă M G Complexitate temporală: O( V E )
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.
parţiale şi subgrafuri Fie G = (V, E ) şi G = (V, E ). G este un graf parţial al lui G dacă V V şi G se obţine din G prin ştergeri succesive de noduri si muchii. G este un subgraf al lui G dacă V V şi G se obţine ştergând din G nodurile din V V. G este o componentă a lui G dacă este un subgraf maximal care este conex. G este o clică a lui G dacă (1) G este subgraf al lui G şi (2) G este (izomorf cu) un graf complet K n, 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ă S V, şi G S nu este conex.
neorientate Componente conexe Exemple 1 2 G 1 : G 2 : c a d b e c f g a d b e este conex. nu este conex. G 2 are 3 componente: G 2 {e, f, g}, G 2 {a, b, c, d, e}, şi G 3 = G 2 {a, b, c, d, f, g}. c b 3 G 3 : d a nu este conex. G 3 are 2 componente: e f G 3 {b, d, f } şi G 3 {a, c, e}.
Operaţii pe grafuri Exemplu: ştergere de noduri şi muchii a b c e f g G d a b c d e f g G a b c d e f g G {{c, d}} a b c d e f g G {{e, g}, {f, g}}
Operaţii pe grafuri Exemplu: ştergere de noduri şi muchii b e a g c f b e a d g c f b e a d g c f G d G G {{c, d}} d este nod de tăiere în G. a b c d e f g G {{e, g}, {f, g}}
Operaţii pe grafuri Exemplu: ştergere de noduri şi muchii b e a g c f b e a d g c f b e a d g c f G d G G {{c, d}} d este nod de tăiere în G. {a, b} este punte în G. a b c d e f g G {{e, g}, {f, g}}
parţiale şi subgrafuri Fie G, G două grafuri. Quiz Spunem că G este liber de G, sau G -liber, dacă G nu este subgraf al lui G. Se consideră grafurile K 1,3 Z 1 N Care din grafurile următoare sunt K 1,3 -libere? Care sunt Z 1 -libere? Care sunt N-libere?