Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
U2 2 U3 U5 U4 3 U6 4 U7
Figura 1 Prin noiunea de perechi ordonate nu trebuie s nelegem c o muchie este mai mare dect alta, ci pur i simplu c facem deosebire ntre o muchie de forma (x,z) i o alta de forma (y,x). Cu alte cuvinte muchiile sunt difereniate prin ordinea de scriere a simbolurilor. Arcul (x,y) nu este tot una cu arcul (y,x). Exemplu: Pentru graful G=(X,U) din figura 1. avem: X={1, 2, 3, 4} i U={u1, u2, u3, u4, u5, u6, u7,}= {(1,1), (2,1), (3,2), (2,3), (2,4), (3,4), (3,4)} arc va fi de forma u= (x,y), unde x se numete extremitate iniial, iar y se numete extremitate final a arcului. Cu alte cuvinte, arcul iese din nodul x i intr n nodul y. La fel ca la grafurile neorientate, vom spune c nodurile x i y sunt adiacente, iar arcul u i nodul x sunt incidente (la fel arcul x i nodul y). Nodul y se numete succesor al lui x, iar nodul x se numete predecesor al lui y. Un arc de forma (x,x), care iese din nodul x i intr tot x, se numete bucl. Exemplu: 1
n graful din figura 1, avem bucla (1,1). ntr-un graf putem avea dou sau mai multe arce identice. Exemplu: n graful din figura 1, exist dou arce identice, u6 = u7 = (3,4) Definiie Se numete p-graf, un graf orientat n care numrul arcelor identice este mai mic sau egal cu o valoare dat p. n cele ce urmeaz vom analiza numai 1-grafuri fr bucle.
+ ( x ) = {y X ( x, y ) U } mulimea nodurilor ce constituie extremiti finale ale arcelor care pleac din
nodul x. Pe scurt, mulimea succesorilor lui x;
( x ) = {y X ( y, x ) U } mulimea nodurilor ce constituie extremiti iniiale ale arcelor care pleac din
nodul x. Pe scurt, mulimea predecesorilor lui x; Exemplu: n graful din figura 1, pentru nodul x=2, avem: - +(2) = {1,3,4} urmare a faptului c muchiile care pleac din nodul 2 sunt (2,1), (2,3) i (2,4), putem spune c mulimea succesorilor nodului 2 este {1,3,4}. - -(2) = {3} n nodul 2 intr doar muchia (3,2), deci mulimea predecesorilor lui 2 conine doar nodul 3. +(x) = {u = (x,y)| u U} mulimea arcelor care ies din nodul x; -(x) = {u = (y,x)| u U} mulimea arcelor care intr n nodul x; Exemplu: n graful din figura 1, pentru nodul 2, avem: +(x) = {(2,1), (2,3), (2,4)}, - (x) = {(3,2)}
Se consider graful G = (X,U) din figura 2, n care X = {1,2,3,4,5,6} i U={u1, u2, u3, u4, u5, u6, u7}. Construim graful parial G1 = (X,V), unde X = {1,2,3,4,5,6} i V = { u2, u3, u4, u6, u7} (figura 3) din graful G au fost eliminate arcele u1 i u5. Construim subgraful G2 = (Y,T), unde Y = {3,4,5,6} i T = {u4, u5, u6, u7} (figura 4) din graful G au fost eliminate nodurile 1 i 2 precum i arcele u1, u2 i u3 care au o extremitate n afara mulimii nodurilor rmase.
6 Figura 3
6 Figura 4
Considerm un graf orientat G= (X,U) cu m arce i n noduri. Cele mai cunoscute forme de reprezentare sunt: matricea de adiacen, matricea vrfuri arce, matricea drumurilor i listele vecinilor. a.Matricea de adiacen Are aceeai semnificaie ca n cazul grafurilor neorientate: fiecare element a[i,j], cu i,j {1,2,...,n}, este: 1 dac exist arcul (i,j), respectiv 0 n caz contrar. Datorit orientrii, aa cum am mai spus, arcul (i,j) nu este totuna cu arcul (j,i). Prin urmare, a[i,j] a[j,i]. Aadar matricea de adiacen nu mai este simetric fa de diagonala principal, aa cum se ntmpla n cazul grafurilor neorientate.
Exemplu:
coloana
1 0
2 0 0 0 1 2 3
3 0 1 0 0
4 0 1 1 0 1 2 3 4
A=
1 0 0
1 4 Figura 5
b.Matricea vrfuri arce Este o matrice b cu n linii i m coloane, n care fiecare element b[i,j] este: 1, dac nodul i este o extremitate iniial a arcului uj; -1, dac nodul i este o extremitate final a arcului uj; 0, dac nodul i nu este o extremitate a arcului uj.
Exemplu: Pentru graful de mai jos cu n=4 noduri i m=5 arce, matricea vrfuri arce este: 1 -1 0 0 0 -1 1 0 2 u1 1 u4 4 u5 Figura 6 Pentru a exemplifica construcia matricei, vom deduce elementele liniei 3: a[3,1]= 0 pentru c nodul 3 nu este o extremitate a arcului u1. Analog, a[3,3]= 0 deoarece nodul 3 nu este extremitate a arcului u3. 4 u3 0 -1 0 1 0 0 1 -1 0 0 -1 1
u2 3
a[3,5]= -1 pentru c nodul 3 este o extremitate final a arcului u5. a[3,2]= 1 i a[3,4]= 1 ntruct nodul 3 este o extremitate iniial a arcului u2 respectiv u4. Observaii: Pe fiecare coloan j (aferent arcului uj), avem exact dou elemente nenule: un 1 (linia i pe care se afl
reprezint extremitatea iniial a arcului uj) i un -1 (linia i pe care se afl reprezint extremitatea final a arcului uj) Numrul valorilor de 1 de pe linia i, reprezint gradul exterior al nodului i (numrul arcelor ce au ca extremitate iniial pe i), iar numrul valorilor de -1 de pe linia i reprezint gradul interior al nodului i (numrul arcelor care au ca extremitate final pe i). c.Listele vecinilor Pentru fiecare nod x se construiesc dou liste ale vecinilor si: L*(x) lista vecinilor succesori; conine nodurile ce sunt extremiti finale ale arcelor care ies din nodul x. L-(x) lista vecinilor predecesori; conine nodurile ce sunt extremiti iniiale ale arcelor care intr n nodul x. Exemplu: n graful din figura 6 de mai sus, pentru nodul x=4 avem: arcele care ies din nodul 4 sunt (4,2) i (4,3). n consecin, lista vecinilor succesori L+(4) conine nodurile 2 i 3; n nodul 4 intr un singur arc, i anume (3,4), motiv pentru care lista vecinilor predecesori L-(4) conine doar nodul 3. Prezentm n continuare aceste liste ale vecinilor pentru graful din figura 6. Nodul x 1 2 3 4 d.Matricea drumurilor Aceast matrice va fi reprezentat n cadrul capitolului Drumuri i circuite n grafuri orientate. e.Reprezentarea grafului ca un vector de muchii Fiecare arc al grafului poate fi privit ca o nregistrare cu dou componente, n spe cele dou noduri care constituie extremitile arcului: nod_in -> nodul din care iese arcul (nodul de nceput al arcului); nod_sf -> nodul n care intr arcul (nodul de sfrit al arcului); Putem defini tipul de date ARC, astfel: struct ARC { int nod_in, nod_sf; } 5 L+(x) 2 vid 2,4 2,3 L-(x) vid 1,3,4 4 3
Graful n ansamblul su, este o mulime de arce, adic o mulime de elemente de tipul ARC. n consecin, definim graful ca un vector de arce, adic un vector de elemente de tipul ARC: ARC v[25] ; Numrul real de elemente este numrul de arce m. Astfel, elementele efectiv folosite ale vectorului vor fi v[1], v[2],..., v[m]. Fiecare element {1, 2, ..., m}) este de tipul ARC i reprezint un v[i] (cu i arc al grafului, avnd dou componente: v[i].nod_in i v[i].nod_sf -> nodurile extremiti ale arcului.
[z2, z3], , [zk-1,zk] sunt distincte dou cte dou. Def. Dac ntr-un circuit, toate nodurile cu excepia primului i ultimului sunt distincte dou cte dou,
Reluare notiune : Matricea drumurilor. Este o matrice d cu n linii i n coloane, n care fiecare element d[i,j] este : 1, dac exist drum de la nodul i la nodul j n graf; 0, n caz contrar. Algoritmul Roy-Warshall de determinare a matricei drumurilor Matricea drumurilor se obine aplicnd matricei de adiacen transformri succesive. Vom spune c exist drum de la nodul i la nodul j, dac gsim un nod k (diferit de i, j) cu proprietatea c exist drum de la i la k i drum de la j la k. Astfel: un element a[i, j] care este 0, devine 1, dac exist un nod k astfel nct a[i, k]=1 i a[k, j]=1. Pentru a gsi arcele nodului k, trebuie parcurse pe rnd n varianta k toate nodurile 1, 2, , n. for (k=1;k<= n;k++) for( i=1;i<=n;n++) // ik for( j=1;j<=n;j++) // jk if (a[i, j]==0) && i != k && j != k) a[i, j]=a[i,k]*a[k, j]; Atribuirea a[i, j]=a[i,k]*a[k, j] este o scriere elegant a regulii de mai sus: n cazul n care unul din elementele a[i,k], a[k, j] este 0, a[i, j] va rmne 0; dac a[i, k]=1 i a [k, j]=1, atunci a[i, j] devine 1.
Graful este conex pentru ca oricum am lua doua noduri putem ajunge de la unul la celalalt pe un traseu de tip lant. De exemplu, de la nodul 4 la nodul 2 putem ajunge pe traseul de noduri (4,3,2) stabilind astfel lantul {u5, u3}, dar si pe traseul de noduri (4,1,2) stabilind lantul {u6, u2} 7
Acest graf nu este conex. Luand submultimea de noduri {1,2,3}, putem spune ca intre oricare doua noduri din aceasta submultime exista cel putin un lant., de exemplu lantul {u1, u2} sau {u3, u1}. La fel stau lucrurile cu submultimea de noduri {4,5,6}. Dar nu ptuem gasi un lant intre un nod din prima submultime si un nod din a doua submultime. Plecand dintr-un nod al primei submultimi si deplasandu-ne pe arce, nu avem cum sa trecem in a doua submultime pentru ca nu exista nici un arc direct care sa lege cele doua submultimi. De exemplu plecand din nodul 1 putem ajunge in nodul 2 pe traseul {u3, u2}, dar de aici nu putem ajunge mai departe in nodul 4, deci nu exista lant de la 2 la 4.
Componenta conexa
Def. Componenta conexa a unui graf G=(X, U), reprezinta un subgraf G1=(X1, U1) conex, a lui G, cu proprietatea ca nu exista nici un lant care sa lege un nod din X 1 cu un nod din X-X 1 (pentru orice nod, nu exista un lant intre acel nod si nodurile care nu fac parte din subgraf). De exemplu graful din fig. 3 nu este conex , insa in el distingem doua componente conexe: G1 =(X1, U1), unde X1={1,2,3} si U1={u1, u2, u3}; si G2=(X2, U2), unde X2={4,5,6} si U2={u4, u5}.
Graful cu n=3 din fig. 4 este tare conex. Pentru a demonstra acest lucru, formam toate perechile posibile de noduri distincte (x, y) cu x, y apartin multimii {1,2,3}, si pentru fiecare astfel de pereche cautam un drum de la x la y si un drum de la y la x. x=1, y=2 De la 1 la 2 drumul [1,3,2], pe arcele (1,3) si (3,2); De la 2 la 1 drumul [2,3,1], pe arcele (2,3) si (3,1). x=1, y=3 De la 1 la 3 drumul [1,2,3], pe arcele (1,2) si (2,3); De la 3 la 1 drumul [3,2,1], pe arcele (3,2) si (2,1). x=2, y=3 De la 2 la 3 drumul [2,1,3], pe arcele (2,1) si (1,3); De la 3 la 2 drumul [3,1,2], pe arcele (3,1) si (1,2).
Am obtinut astfel subgraful tare conex G1=(X1, U1). Acestui graf ii adaugam un nod x care nu face parte din multimea nodurilor subgrafului G1. Graful obtinut este componenta tare conexa. 9
X= {1, 2, 3, 4, 5}; U= {u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16}={(1,2), (2,1), (3,2), (2,3), (4,3), (3,4), (1,4), (4,1), (2,5), (5,2), (3,5), (5,3), (4,5), (5,4), (1,5), (5,1)}. De la 1 la 2 pe drumul [1,5,2] sau [1,5,4,3,2], etc. De la 1 la 3 pe drumul [1,5,3] sau [1,5,2,3], etc. De la 1 la 4 pe drumul [1,5,4] sau [1,5,2,3,4], etc. De la 1 la 5 pe drumul [1,2,5] sau [1,4,5], etc. De la 2 la 3 pe drumul [2,5,3] sau [2,1,5,3],etc. De la 2 la 4 pe drumul [2,5,4] sau [2,3,5,4], etc. De la 2 la 5 pe drumul [2,1,5] sau [2,3,5], etc. De la 3 la 4 pe drumul [ 3,5,4] sau [3,2,5,4], etc. De la 3 la 5 pe drumul [3,2,5] sau [3,4,5], etc. De la 4 la 5 pe drumul [4,1,5] sau [4,3,5], etc.
10