Sunteți pe pagina 1din 8

Grafuri orientate

Definiții

Definiție. Se numeşte graf orientat o pereche ordonată de mulțimi notată G=(V, U), unde:

 V este o mulțime finită şi nevidă ale cărei elemente se numesc noduri sau vârfuri;
 U este o mulțime de perechi ordonate de elemente distincte din V ale cărei elemente se numesc
arce.

Exemplu:

V={1,2,3,4,5,6},U={(1,6),(2,1),(2,4),(3,2),(4,2),(5,4),(6,1),
(6,4)}

Observăm că arcele (1,6) și (6,1) sunt distincte.

Noțiuni

 extremități ale unui arc: pentru arcul u=(x,y), se numesc extremități ale sale nodurile x şi y;
o x se numeşte extremitate inițială;
o y se numeşte extremitate finală;
o y se numește succesor al lui x;
o x se numește predecesor al lui y.

 vârfuri adiacente: dacă într-un graf există arcul u=(x,y) (sau u=(y,x), sau amândouă), se
spune despre nodurile x şi y că sunt adiacente;
 incidență:
o dacă u1 şi u2 sunt două arce ale aceluiaşi graf, se numesc incidente dacă au o
extremitate comună. Exemplu: u1=(x,y) şi u2=(y,z) sunt incidente;
o dacă u1=(x,y) este un arc într-un graf, se spune despre el şi nodul x, sau nodul y, că
sunt incidente.

Grade

Definiție. Fie G=(V, U) un graf orientat și x un nod al său.

 Se numeşte grad exterior al nodului x, numărul arcelor de forma (x,y) (adică numărul arcelor
care ies din x), notat d+(x).
 Se numeşte grad interior al nodului x, numărul arcelor de forma (y,x) (adică numărul arcelor
care intră în x), notat d-(x).
Exemplu: Pentru graful alăturat: d+(2)=2, d-(2)=3

Teoremă: Într-un graf orientat, suma gradelor exterioare a tuturor nodurilor este egală cu suma
gradelor interioare a tuturor nodurilor și cu numărul de arce.

∑ d+ ¿( x)=¿ ∑ d
−¿( x)=m
¿¿
¿

Un nod x se numește izolat dacă d+(x)=d-(x)=0 (are gradul interior și gradul exterior egal cu 0).

Propoziție: Sunt 4n∗(n−1)/2 grafuri orientate distincte cu n vârfuri.

Reprezentarea grafurilor orientate


Matricea de adiacență

Fie G=(V,U) un graf orientat cu n noduri, în care nu există mai multe arce de la un nod la altul.
Matricea de adiacență a grafului este o matrice cu n linii și n coloane și elemente 0 sau 1, astfel:

 Ai,j=1 dacă există arcul (i,j)


 Ai,j=0 dacă există nu arcul (i,j). Pentru graful alăturat, matricea de adiacență este:

0 0 0 0 0 1
1 0 0 1 0 0
0 1 0 0 0 0
0 1 0 0 0 0
0 0 0 1 0 0
1 1 0 1 0 0

Observăm că matricea de adiacență:


** are zero pe diagonala principala (pentru că în graf nu avem bucle)
** nu este simetrică față de diagonala principală

Pentru reprezentarea în memorie vom folosi un tablou bidimensional ale cărui dimensiuni sunt în
concordanță cu numărul de noduri din graf.

Considerăm un graf cu maxim 50 de noduri. În C/C++ vom avea declarația:

int A[51][51];
Graf parțial, subgraf

Aceeasi teorie ca si la grafurile neorientate.

Exemplu:

Graful inițial Graf parțial Subgraf

S-au eliminat arcele (1,6), (3,2), S-a eliminat nodul 6 și toate arcele incidente
(6,4) cu el.

Graf complet

Definiție. Fie G=(V, U) un graf orientat. Graful G se numește graf complet dacă oricare două
vârfuri distincte ale sale sunt adiacente.

Două vârfuri x și y sunt adiacente dacă:

 între ele există arcul (x,y), sau


 între ele există arcul (y,x), sau
 între ele există arcele (x,y) şi (y,x).

Exemplu:

n*(n-1)/2
Teoreme: 1) Numărul de grafuri orientate complete cu n noduri este 3 . Pe cand la
cele neorientate se poate forma un singur graf complet și acesta are n*(n-1)/2 muchii.

2) graful orientat complet are minim n*(n-1)/2 arce (ca si la cel neorientat) si maxim n*(n-1)
arce.
Observație: Graful orientat complet cu număr minim de arce adică n*(n-1)/2 arce, poate să aibă
astfel dispuse arcele incât să nu formeze nici un circuit.

Aplicație: Se consideră un graf orientat cu 15 arce si fără circuite. Numărul minim de


vârfuri ale grafului este: număr minim de arce la număr fix de arce => graf complet=>
n*(n-1)/2=15 =>n=6

Drum

Definiție. Fie G=(V, U) un graf orientat. Se numește drum în graful G o succesiune de noduri,
notată D = (x1 , x2 ,..., xk), cu proprietatea că pentru orice 1≤i<k, (xi,xi+1) este arc în G
(are importanță orientarea arcelor).

Lungimea unui drum este egală cu numărul de arce din care este alcătuit.

Pentru un drum D = (x1 , x2 ,..., xk), nodurile x1 și xk reprezintă extremitățile – inițială,


respectiv finală.

Un drum se numește elementar dacă în el nu se repetă noduri. Un drum se numește simplu dacă
în el nu se repetă arce.

Exemple În graful alăturat:

L=(5,4,2,6,1) este un lanț elementar, dar nu este drum.


D=(3,2,1,6,4) este drum elementar.
D=(3,2,1,6,2,4) este drum neelementar, dar simplu.

Teoremă: dacă un graf conține un drum între 2 vârfuri x și y, atunci conține și un drum
elementar între nodurile x și y.

Circuit

Definiție: Se numește circuit un drum simplu în care extremitatea inițială și finală sunt egale. Se
numește circuit elementar un circuit în care, cu excepția extremităților, nu se repetă noduri.

Lungimea unui circuit este reprezentată de numărul de arce din care acesta este alcătuit.
Exemple În graful alăturat:

(1,6,2,1) și (1,6,4,2,1) sunt circuite elementare.

Teoremă: dacă un graf conține un circuit, atunci conține și un circuit elementar.

Tare conexitate

Observatie: la grafurile neorientate vorbim de conexitate iar la cele orientate de tare conexitate.

Un graf orientat G=(V,E) este tare conex dacă pentru orice pereche de noduri distincte (x,y)
există cel puțin un drum de la x la y și cel puțin un drum de la y la x.

Pentru un graf orientat, se numește componentă tare conexă un subgraf tare conex maximal –
prin adăugarea a încă unui nod, subgraful obținut nu mai este tare conex.

Exemplu

Graful de mai sus nu este tare conex. El are trei componente tare conexe.

Obsevații utile pentru probleme:

 graful tare conex cu numărul cel mai mic de muchii posibil conține n muchii.
Este vorba de graful obținut din nodurile plasate unul după altul, ca fiind vârfurile
unui poligon și unite prin arce cu sensul de la unul la altul.
 Numărul maxim de arce al unui graf orientat fără circuite este n*(n-1)/2.
Arcele pot fi astfel dispuse într-un graf complet cu n*(n-1)/2 astfel încât să nu se
formeze nici un circuit.

Verificare tare conexității. Determinarea componentelor tare conexe


Algoritmul Plus-Minus

Pentru a determina componentele tare conexe folosim următorul algoritm, numit Plus-Minus:

 pentru fiecare nod x al grafului care încă nu a fost plasat într-o componentă tare conexă:
o determinăm toate nodurile în care se poate ajunge din x, folosind graful G și le marcăm
într-un tablou cu plus;
o determinăm toate nodurile din care se poate ajunge în x și le marcăm într-un tablou cu
minus;
o nodurile marcate atât cu plus, cât și cu minus, împreună cu x formează o componentă
tare conexă;

Exemplu:

Fie graful de mai sus. Să determinăm componenta tare conexă din care face parte nodul 6:

S-au marcat cu plus nodurile: 5 7 8 S-au marcat cu minus nodurile: 1 2 3 4 5 7 8

Nodurile marcate de două ori, 5 7 8, împreună cu nodul inițial, 6, formează o componentă tare
conexă.

Pentru a determina celelalte component conexe vom verifica nodurile 1, 2, 3 si 4 pentru ca 5 6


7 8 am stabilit deja ca alcatuiesc o component tare conexa.

1{+2 ,3 ,−34 ,5, 4, 6 , 7 , 8 ==> 1 3 4 alcatuiesc o componenta tare conexa.

{
2 +5 , 6 , 7 , 8 ==> 2 alcatuieste singur o componenta tare conexa.
−1 , 3 , 4

Graful nostru are, asadar, 3 componente tare conexe.

Verificarea tare conexității unui graf orientat poate fi privită ca un caz


particular al determinării componentelor tare conexe, deoarece, dacă graful are o singură
componentă tare conexă atunci el este tare conex.

Aplicatie: Se da graful alaturat, sa se determine numarul minim de muchii care trebuie


adaugat pentru a se obtine un graf tare conex.

Metoda 1- Vom aplica pentru cateva din noduri algoritmul + - si vedem astfel pentru care
nod este nevoie sa completam mai putine muchii pentru a obtine o singura component conexa.
1
2 1{+nimeni
−2 , 3 ,5

3
5

4
2{−nimeni
+1 , 3 ,5

3{−2+ 1,5 pentru nodul 3 ar trebui sa mai completam la + nodurile 2,


4, 5 deci ar fi nevoie de drumurile (3, ..2) (3,.. 4) (3,.. 5) iar la – nodurile 1 si 4 deci drum de la 1
la 3 (1, …3) si de la 4 la 3 (4,…3).

Adaugand muchia (1, 2) rezolvam drumurile cerute: (3, ..2) (3,.. 4) (3,.. 5) si (1, …3). Iar
drumul (4, …3) il rezolvam cu arcul (4, 3).

Raspunsul este asadar: 2 muchii.

Metoda 2- Problema se poate rezolva și încercând să plasăm nodurile astfel încât să


obținem nodurile plasate unul după altul în sensul arcelor de ceasornic, ca fiind vârfurile unui
poligon, și unite prin arce de la unul la altul (graful tare conex cu număr cel mai mic de muchii
posibil). Sunt 2 posibilități de aranjare pentru că din 5 putem pleca în 3 sau în 4, deci
putem considera pe rând arcele [5,3] și [5,4] ca fiind laturi ale poligonului.
1

3
4

2
Deci muchiile [1,4] și [4,2] trebuie adăugate în acest aranjament.

Dar aranjându-le sub forma de mai jos obținem același 2 rezultat ca și prin
metoda precedentă.
5

4
3

Aplicație: Un graf orientat cu 5 vârfuri, numerotate de la 1 la 5, are arcele (1,4),


(1,5), (2,1), (2,3), (3,1), (3,4), (4,2), (5,1), (5,3). Numărul maxim de arce care
se pot elimina, astfel încât graful partial obtinut să fie tare conex este: pornim de la ideea că
graful conex cu număr minim de arce este cel cu arcele dispuse poligonal și are n arce.
Alte aplicații:
1. Un graf orientat are 10 arce, 3 componente tare conexe, iar fiecare vârf al său are atât gradul
interior, cât și gradul exterior nenule. Numărul minim de noduri pe care le poate avea graful este:
a. 4 b. 5 c. 6 d. 7
Număr minim de noduri deci cele 10 arce trebuie să le cuprind într-o comp. tare conexă
de un nod(nodul 3), plus încă 2 alte componente de câte 2 noduri fiecare (1,2 și 4,5) subgrafuri
complete, dar mai pot duce arce astfel încât să obțin 10 și nici un circuit astfel: de la 4 mai pot
duce arce spre 3, spre 2 si spre 1, din 3 spre 2 și din 5 spre 1.
2. Un graf orientat are 12 arce, 3 componente tare conexe, iar fiecare vârf al său are gradul
interior un număr nenul. Numărul maxim de noduri pe care le poate avea graful este:
a. 12 b. 11 c. 9 d. 8

Parcurgerea Grafurilor Orientate


Rezolvarea multor probleme de grafuri, presupune parcurgerea lor de la un anumit nod.
Pentru explorarea grafurilor, există două tipuri de algoritmi: de explorarea în latime Breadth
First Search(BFS) si de explorare in adancime DepthFirstSearch(DFS).
Parcurgerea grafurilor orientate este similara cu a grafurilor neorientate, se tine cont insa
de orientare.

Parcurgerea grafurilor in latime Breadth First Search(BFS)


La explorarea in latime, dupa vizitarea varfului initial, se exploreaza toate varfurile adiacente lui,
se trece apoi la primul varf adiacent si se exploreaza toate varfurile adiacente acestuia si
neparcurse inca, s.a.m.d.
Fiecare varf se parcurge cel mult o data.
De exemplu pentru graful din figura de mai jos, se va proceda in felul urmator: se porneste din
nodul 1, (se poate incepe de la oricare alt nod) se exploreaza in continuare vecinii acestuia:

nodul 2 si apoi 4, se obtine 1,2,4 dupa care din 2 se exploreaza nodul


adiacent acestuia 3. Nodul 1 nu se mai viziteaza o data se obtine 1,2,4,3 In continuare ar trebui
parcursi vecinii lui 4 (1,2,4,3) dar acesta nu mai are vecini nevizitati si se trece la vecinii lui 3:
1,2,4,3 respectiv nodul 5: seobtine1,2,4,3,5

Varful 6 ramane neparcurs.

Daca se parcurge graful incepand de la varful 2, Solutia este: 2,3,4,5, in timp ce


parcurgerea incepand cu 4 va retine doar varful 4.

Observație

Dacă graful nu este tare conex, nu ser vor vizita toate vârfurile.

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