Sunteți pe pagina 1din 14

Informatica clasa a XI-a

Cap. 1 REPREZENTAREA GRAFURILOR NEORIENTATE

1. 2. 3. 4. 5. 6. ". #. &. 1). 11.

Noiunea de graf neorientat Reprezentarea grafurilor neorientate Matricea de adiacen Matricea de incident Listele vecinilor Reprezentarea grafului ca vector de uc!ii Matricea costurilor $fi%area %i nu rarea uc!iilor 'eter inarea gradelor v(rfurilor Noiunea de graf parial %i su*graf +raf co plet %i graf *ipartit

Informatica clasa a XI-a

1. Noiunea de graf neorientat


Definiie: Se numete graf neorientat o pereche ordonat de mulimi (X,U), unde: X este o mulime finit i nevid de elemente numite vrfuri sau noduri U este o mulime de perechi neordonate de cte dou elemente din X, numite muchii sau arce Un graf neorientat poate fi reprezentat sub forma unei figuri geometrice alctuit din puncte (vrfuri,noduri) i linii drepte sau curbe care unesc aceste puncte (muchii, arce) !espectnd o anumit tradiie pe care o regsim "n literatura de specialitate, vom folosi: pentru grafuri neorientate termenii de vrf i muchie pentru grafurile orientate termenii de nod i arc #ac o muchie trece prin nodurile x i y, atunci ea se noteaz [x,y] sau (x,y) Exemplu: $entru graful G=(X,U) din figura alturat avem:

X={1,2,3,4,5,6,7} mulimea vrfurilor U={u1,u2,u3,u4,5} mulimea muchiilor muchiile sunt: u1=(1,2),u2=(2,3),u3=(3,4),u4=(2,4),u5=(5,6)

$e caz general, "ntr%un graf neorientat G=(X,U),notm: mnumrul muchiilor nnumrul vrfurilor X={x1,x2,.,xn}mulimea vrfurilor U={u1,u2,um}mulimea muchiilor muchia uk este o pereche neordonat (a,b) alctuit din dou elemente din X $entru o muchie uk=(a,b), vom spune c: vrfurile a i b sunt adiacente i se numesc extremitile muchiei uk muchia uk i vrful a, respectiv vrful b , sunt incidente "n graf muchia (a,b) este totuna cu muchia (b,a) (nu e&ist o orientare a muchiei) Definiie: Gradul unui vrf x, notat d(x), reprezint numrul muchiilor care trec prin nodul x (incidente cu nodul x).

Informatica clasa a XI-a

Exemplu: d(7)=0.

'n graful din figura de mai sus avem : d(1)=d(5)=d(6)=1,d(2)=3,d(3)=d(4)=2,

Un vrf care are gradul (, se numete vrf izolat (de e&emplu, vrful 7) Un vrf care are gradul ), se numete vrf terminal (de e&emplu, vrfurile 5 i 6)

Teorem : 'ntr%un graf G=(X,U) cu n vrfuri i m muchii, suma gradelor tuturor vrfurilor este egal cu 2 num!"u# mu$%&&#'":

d (x ) = d (x ) + d (x
i =1 i 1

) + ........d ( x n ) = 2 * m

#emonstraia este evident *iecare muchie de forma [x&,x(] contribuie cu o unitate la gradul vrfului & i cu o unitate la gradul vrfului (. +adar fiecare muchie adaug dou uniti la suma gradelor *iind m muchii, rezult c suma gradelor este 2m. !onsecin : n orice graf neorientat G=(X,U) exist un numr par de vrfuri cu grad impar. Definiie: Se numete un graf regulat un graf "n care toate vrfurile au acelai grad #ac gradul este k, graful se numete k)"*+u#a,. Exemplu: ,raful urmtor este un graf 3)"*+u#a, (toate vrfurile au gradul -)

Definiie : *iind dat un ir -=(d1,d2,..,dn) format din n numere "ntregi pozitive, el se numete ir grafic dac e&ist un graf neorientat ale crui vrfuri s aib drept grade numerele date .vident, condiiile necesare pentru ca irul D s fie ir grafic sunt: a) 0.d& n)1, ( ) &{ 1,2....n} b) d1/d2/......./dn=2 k (numr par)

/ "epre#entarea grafurilor neorientate


0onsiderm un graf neorientat G=(X,U) cu m muchii i n vrfuri numerotate 1,2,3,.....,n. 0ele mai cunoscute forme de reprezentare ale unui astfel de graf sunt: matricea de adiacen

Informatica clasa a XI-a

matricea de inciden listele vecinilor vectorul muchiilor matricea costurilor

$entru implementrile acestor metode de reprezentare vom considera definiiile globale de constante i tipuri urmtoare: 0d*1&n* 2 50 //numrul de vrfuri 0d*1&n* 3 100 //numrul de muchii 0d*1&n* 425 32000 ,y6*d*1 un7&+n*d $%a" ,&68

$% &atricea de adiacen
.ste o matrice ptratic binar +n&n "n care un element ai1 este definit astfel:

a[&][(]=

1, 0,

da$! *x&7,! mu$%&a [&,(] $u & ( 9n $a: $'n,"a"

Exemplu: pentru graful urmtor, matricea de adiacen este:

coloana*+$4*,**1liniile+*,*0$**,04100

.lementul a[2][3] (de pe linia 2 i coloana 3) va fi 1, "ntruct e&ist "n graf muchia (2,3) #ar acest muchie este identic cu muchia (3,2), deci i a[3][2] este 1 $e caz general, a[&][(]=a[(][&] oricare ar fi &,( {1,2,..,n} , cu & (, adic, pentru orice graf neorientat, matricea de adiacen a este simetric fa de diagonala principal #eoarece grafurile studiate nu admite muchii de forma (&,&) (numite bu$#*), pe diagonala principal matricea de adiacen are doar valori ( '(ser)aii Suma elementelor de pe linia x sau de pe coloana x din matricea de adiacen reprezint gradul nodului x 2uchiile distincte din graf se regsesc "n 1umtatea superioar a matricei de adiacen Suma tuturor valorilor din matricea de adiacen este numr par egal cu de dou ori numrul muchiilor din graf $entru memorarea "n programe a matricei de adiacen se folosesc matrici ptratice binare Uzual, dintr%un fiier te&t se citesc numrul vrfurilor i, eventual, cel al muchiilor, apoi perechi de valori

Informatica clasa a XI-a

diferite de vrfuri din graf reprezentnd e&tremitile unei muchii #in fiecare pereche citit, dou valori din matricea de adiacen (valori simetrice) primesc valoarea ) *uncia urmtoare citete dintr%un fiier te&t informaiile referitoare la un graf "n forma descris mai sus i construiete matricea de adiacen ;'&d $&,&"*(,&6 a[2][2],&n, <n,&n, <m) { &n, k,x,y8 &17,"*am 1(=&n.,x,>)8 1??n??m8 //numarul de varfuri si numarul de muchii 1'"(k=18k.=m8k//) { 1??x??y8 //extremitatile unei muchii a[x][y]=a[y][x]=18 } 1.$#'7*()8 } #ac nu se precizeaz numrul muchiilor din graf, funcia de citire se modific "n felul urmtor: ;'&d $&,&"*(,&6 a[2][2],&n, <n) { &n, x,y8 &17,"*am 1(=&n.,x,>)8 1??n8 //numarul de varfuri @%&#*(A1.*'1()) { 1??x??y8 //extremitatile unei muchii a[x][y]=a[y][x]=18 } 1.$#'7*()8 } #ac "n fiier este memorat integral matricea de adiacen, citirea se face element cu element ca "n funcia urmtoare: ;'&d $&,&"*(,&6 a[2][2],&n, <n) { &n, x,y8 &17,"*am 1(=&n.,x,>)8 1??n8 //numarul de varfuri 1'"(x=18x.=n8x//) 1'"(y=18y.=n8y//)1??a[x][y])8 1.$#'7*()8 }

-% &atricea de inciden
$entru graful G=(X,U) cu n vrfuri i m muchii, matricea de inciden a are n linii i m coloane i se definete astfel: 1, da$! ;B"1u# x& *7,* &n$&d*n, $u mu$%&a m(

Informatica clasa a XI-a

6
0, 9n $a: $'n,"a"

a[&][(]=

Exemplu: *ie graful G=(X,U) din figura alturat cu X={1,2,3,4,5,6} i U={[1,2],[1,3], [1,4],[1,5],[1,6],[2,4],[3,5],[3,6],[4,5],[5,6]}

$entru acest graf, asociind fiecruia dintre vrfuri cte o linie a matricei i fiecrei muchii cte o coloan, se obine matricea de inciden: u1 1 1 u2 1 1 1 1 1 1 1 1 u3 1 u4 1 u5 1 u6 1 1 1 1 1 1 1 u7 u8 u9 u1

!1 !2 !3 !4 !5 !6

'(ser)aii. *iecare coloan din matricea de inciden conine e&act dou valori nenule Suma elementelor de pe linia x din matricea de inciden reprezint gradul nodului x Suma tuturor elementelor din matricea de adiacen este un numr par (de dou ori numrul muchiilor) $entru memorarea "n programe a matricei de adiacen se folosesc matrici binare Cnxm 2atricea de inciden se poate construi prin citirea muchiilor dintr%un fiier te&t 2uchiile se vor numerota "n ordinea citirii din fiier i fiecare muchie este incident cu e&tremitile ei *uncia urmtoare ilustreaz modul de construire a matricii de inciden prin citirea informaiilor dintr%un fiier te&t ;'&d $&,&"*(,&6 a[2][3],&n, <n,&n, <m) { &n, k,x,y8 &n, k,x,y8 &17,"*am 1(=&n.,x,>)8 1??n??m8 //numarul de varfuri si numarul de muchii 1'"(k=18k.=m8k//) { 1??x??y8 //extremitatile unei muchii a[x][k]=a[y][k]=18 //muchia k este incidenta cu extremitatile x si y

Informatica clasa a XI-a

} 1.$#'7*()8

5% /istele )ecinilor
$entru fiecare nod & {1,2,,n} formm lista vecinilor lui &. +ceasta cuprinde toate nodurile care sunt e&tremiti ale muchiilor ce trec prin nodul &. $entru graful G"#$,U% din figura urmtoare, lista vecinilor este: nodul * + $ lista )ecinilor +1$1*1$ *1+ *

3bservm c fiecare linie & din listele vecinilor conine indicii coloanelor pe care se gsesc valori de 1 "n linia i a matricei de adiacen +cest metod de reprezentare se implementeaz elegant utiliznd alocarea dinamic a memoriei prin intermediul listelor "nlnuite

6% "epre#entarea grafului ca )ector de muc0ii

*iecare muchie a grafului poate fi privit ca o "nregistrare cu dou componente: cele dou vrfuri care constituie e&tremitile muchiei 4otnd aceste e&tremiti cu x i y, putem defini tipul de date D3UEF4G astfel: ,y6*d*1 7,"u$, { &n, x,y8 } D3UEF4G8 ,raful "n ansamblul su, este o mulime de muchii, adic o mulime de elemente de tipul D3UEF4G 'n consecin, definim graful ca un 5vector de muchii6, adic un vector cu elemente de tipul D3UEF4G: D3UEF4G ;[3]8 4umrul real de elemente este numrul de muchii m +stfel, elementele efectiv folosite ale vectorului vor fi ;[1],;[2],.,;[m] *iecare element ;[&] este de tipul D3UEF4G i reprezint o muchie a grafului, avnd dou componente: ;[&].x i ;[&].y care sunt vrfurile e&tremiti ale muchiei '(ser)aii: "n structura D3UEF4G se pot memora i alte informaii referitoare la muchiile grafului (de e&emplu, costul muchiei) *uncia urmtoare realizeaz construirea vectorului muchiilor prin citirea acestora dintr%un fiier te&t

Informatica clasa a XI-a

;'&d $&,&"*(D3UEF4G ;[3],&n, <n,&n, <m) { &n, k8 &17,"*am 1(=&n.,x,>)8 1??n??m8 1'"(k=18k< =m8k//) 1??;[k].x??;[k].y8 1.$#'7*()8

7% &atricea costurilor

+ceast metod se folosete pentru reprezentarea grafurilor ponderate, adic grafuri care au ataate muchiilor valori strict pozitive numite ponderi sau costuri Spre e&emplu, dac graful modeleaz reeaua de ci ferate dintr%o regiune, costul pot reprezenta distana dintre dou localiti legate prin cale ferat #atorit specificului unor probleme practice, acest mod de memorare a grafului poate cpta dou aspecte, dup cum trebuie determinat minimul sau ma&imul unei anumite mrimi asociate muchiilor (cost, durat, timp, distan etc ) 2) &atricea costurilor1 forma *: este folosit "n cazul "n care se dorete determinarea unui drum de lungime minim "ntre dou vrfuri oarecare i se definete astfel: a[&][(]= $, 0, , da$! *x&7,! ' mu$%&* d* $'7, $?0 9n,"* n'du"&#* & H& (, & ( da$! &=( da$! nu *x&7,! mu$%&* 9n,"* ;B"1u"&#* & H& (, & (

.ste evident necesitatea atarii unei valori ct mai mari unei muchii ce de fapt nu e&ist, deoarece, cutndu%se un drum de lungime minim, "n acest mod se evit selectarea, la un moment dat, a respectivei muchii 'n practic, "n scrierea unui program se alege cea mai mare valoare ce se poate reprezenta "n calculator 3) &atricea costurilor1 forma + : este folosit "n cazul cnd se dorete determinarea unui drum de lungime ma&im "ntre dou noduri i se definete astfel: a[&][(]= $, da$! *x&7,! ' mu$%&* d* $'7, $?0 9n,"* n'du"&#* & H& (, & ( 0, da$! &=( ) , da$! nu *x&7,! mu$%&* 9n,"* ;B"1u"&#* & H& (, & (

#e data aceasta, din considerente similare, se alege cea mai mic valoare ce se poate reprezenta "n calculator $entru graful urmtor, matricea costurilor "n forma ) are configuraia:

Informatica clasa a XI-a

9
!1 !1 !2 !3 !4 !5 12 & 7 & 5 & 8 9 15 & !2 12 !3 & 5 !4 7 & 9 !5 & 8 15 &

Urmtoarea funcie construiete matricea costurilor "n forma ) prin citirea datelor dintr%un fiier te&t $entru fiecare muchie din graf se specific pe o linie din fiier e&tremitile i costul ;'&d $&,&"*(,&6 a[2][2],&n, <n,&n, <m) { &n, k,x,y8 &17,"*am 1(=&n.,x,>)8 1??n8 1'"(x=18x< =n8x//) //initializam matricea costrurilor cu { 1'"(y=18y< =n8y//) a[x][y]=4258 a[x][x]=08 //pe diagonala principala } @%&#*(A1*'1(1)) { 1??x??y??k8 //extremitatile unei muchii //extremitatile unei muchii si costul a[x][y]=a[y][x]=k8 } 1.$#'7*()8 }

4% 2fi5area muc0iilor unui graf neorientat


'n multe aplicaii este necesar afiarea sau numrarea muchiilor unui graf pornind de la o anumit form de reprezentare construit "n memorie #ac graful este reprezentat prin matricea de adiacen (care este simetric), atunci muchiile distincte din graf se gsesc "n 1umtatea superioar a matricii i trebuie inspectate doar n(n)1)I2 elemente *uncia urmtoare afieaz i numr muchiile unui graf neorientat reprezentat prin matricea de adiacen &n, 7$"&*Jad&a$*n,a(,&6 a[2][2],&n, n) { &n, k=0,&,(8 1'"(&=18&.=n)18&//) 1'"((=&/18(.=n8(//) &1(a[&][(]) //exista muchia in graf { $'u,..>[=..&..>,>..(..>]=8 k//8 }

Informatica clasa a XI-a

10

$'u,..*nd#8 "*,u"n k8

#ac graful este reprezentat prin matricea de inciden trebuie inspectate toate cele n7m elemente, parcurgerea fcndu%se pe coloane 'n fiecare coloan e&ist e&act dou valori nenule corespunztoare e&tremitilor muchiei *uncia urmtoare afieaz muchiile unui graf reprezentat prin matricea de inciden &n, 7$"&*Jad&a$*n,a(,&6 a[2][3],&n, n,&n, m) { &n, &,(8 1'"((=18(.=m8(//) //pe colane { $'u,..=[=8 1'"(&=18&.=n8&//) &1(a[&][(]) //i este incident cu muchia $'u,..&8 $'u,..=]>..*nd#8 } } #ac graful este reprezentat prin matricea costurilor (care este simetric), trebuie e&aminate elementele de deasupra diagonalei principale ("n numr de n(n)1)I2) 2uchiile corespund elementelor a[&][(]< K (forma )) sau a[&][(]> 0 (forma /) *uncia urmtoare afieaz i numr muchiile unui graf neorientat reorezentat prin matricea costurilor "n prima form &n, 7$"&*J$'7,u"&(&n, a[2][2],&n, n) { &n, &,(,k=08 1'"(&=18&< n8&//) 1'"((=&/18(< =n8(//) &1(a[&][(]< 425) { $'u,..>[L..&..>,>..(..>]>8 k//8 $'u,..*nd#8 "*,u"n k8 }

6% Determinarea gradelor )7rfurilor unui graf neorientat


,radul unui vrf reprezint numrul muchiilor incidente cu vrful respectiv 'n cazul "n care graful este reprezentat prin matricea de adiacen, gradul unui vrf este suma elementelor de pe linia sau de pe coloana (matricea este simetric) corespunztoare nodului respectiv *uncia urmtoare determin gradul unui nod x folosind matricea de adiacen i "nsumnd elementele din linia x: &n, +"ad(,&6 a[2][2],&n, n,&n, x) { &n, (,k=08 1'"((=18(< =n8(//) k/=a[x][(]8 "*,u"n k8 }

//suma pe linia x

Informatica clasa a XI-a

11

#ac graful este reprezentat prin matricea de inciden, gradul se calculeaz ca suma elementelor de pe linia corespunztoare nodului respectiv *uncia urmtoare folosete matricea de inciden i calculeaz gradul nodului x ca suma elementelor din linia x: &n, +"ad(,&6 a[2][3],&n, m,&n, x) { &n, (,k=08 1'"((=18(< =m8(//) k/=a[x][(]8 "*,u"n k8 }

//suma pe linia x

#ac graful este reprezentat prin matricea costurilor, gradul unui vrf se determin prin numrarea elementelor a[&][(]< K (sau a[&][(]> 0) din linia sau din coloana (matricea este simetric) corespunztoare vrfului respectiv *uncia urmtoare numr valorile < K din linia x din matricea costurilor: &n, +"ad(&n, a[2][2],&n, n,&n, x) { &n, (,k=08 1'"((=18(< =n8(//) &1(a[x][(]< 425) k/=a[x][(]8 "*,u"n k8 }

//suma pe linia x

*,% Noiunile de graf parial 5i su(graf


Definiie: *ie graful G=(X,U) Un graf parial al lui G, este un graf G1=(X,M), cu M U. +stfel spus, un graf parial G1 al lui G, este chiar G, sau se obine din G pstrnd toate vrfurile i suprimnd nite muchii Exemplu: $entru graful G=(X,U) de mai 1os, construim alturat graful parial obinut prin eliminarea muchiilor ce trec prin vrful 4 ,raful parial obinut este G1=(X,M), unde X={1,2,3,4,5,6,7}, iar M={u1,u2,u5} S%au eliminat muchiile u3 i u4 care trec prin nodul 4

Informatica clasa a XI-a

12

Definiie: *ie graful G=(X,U) Un subgraf al lui G, este un graf G1=(N,D), unde N X i D U, iar D va conine numai muchiile care au ambele e&tremiti "n N +stfel spus, un subgraf G1 al lui G, se obine din G eliminnd nite vrfuri i toate muchiile incidente cu aceste vrfuri eliminate Gx*m6#u: $entru graful G=(X,U) de mai sus, construim subgraful obinut prin eliminarea vrfurilor 1 i 6 , respectiv prin eliminarea muchiilor u1 i u5 incidente cu aceste vrfuri

8ropo#iie: 4umrul grafurilor pariale care se pot construi dintr%un graf neorientat cu n vrfuri i m muchii este 2m #emonstraia acestei afirmaii se bazeaz pe definiia grafului parial: eliminm muchii din graful iniial +stfel, E0m reprezint numrul de moduri "n care putem terge zero muchii din graful iniial (obinem graful identic), E1m reprezint numrul de moduri "n care putem terge o muchie din graful iniial, E2m reprezint numrul de moduri "n care putem terge dou muchii din graful iniial, , Emm reprezint numrul de moduri "n care putem terge toate cele m muchii din graful iniial (obinem un graf format din n vrfuri izolate) 'n total sunt E0m/ E1m/))))/ Emm=2m moduri de a terge muchii din graful iniial, deci se pot obine 2m grafuri pariale 8ropo#iie:4umrul subgrafurilor care se pot obine dintr%un graf neorientat cu n vrfuri este 2n)1 #emonstraia acestei propoziii se bazeaz pe definiia subgrafului: eliminm vrfuri din graful iniial $utem elimina minim zero vrfuri (i obinem graful identic) i ma&im n%) vrfuri 4u putem elimina toate vrfurile deoarece mulimea vrfurilor unui graf, conform definiiei, este finit i nevid 4umrul modalitilor de a elimina vrfuri este E0n/ E1n/))))/ En)1n=2n)1,deci numrul subgrafurilor care se pot obine este 2n)1

**% 9raf complet 5i graf (ipartit


Definiie: Se numete graf complet cu n vrfuri, notat kn, un graf G=(X,U) cu proprietatea c oricare dou vrfuri sunt adiacente, adic ( ) x,y X ( ) mu$%&a [x,y] U.

Informatica clasa a XI-a

13

E!'(p)u:

*5

Teorem . Un graf complet cu n vrfuri are n (n)1)I2 muchii% #emonstraia este evident: cu n vrfuri se pot forma n(n)1)I2 perechi de vrfuri i oricare dou vrfuri sunt adiacente '(ser)aie. 8oate vrfurile unui graf complet On au gradul n)1, deci este un graf (n)1))"*+u#a,.

Definiie. Se numete graf bipartit, un graf G=(X,U) cu proprietatea c e&ist dou mulimi C i P incluse "n X, astfel "nct: C P = ,C P =X toate muchiile grafului au o e&tremitate "n mulimea C i cealalt e&tremitate "n mulimea P Exemplu: *ie G=(X,U), unde X={1,2,3,4,5,6,7}, U={u1,u2,u3,u4} 0u mulimile C={1,2,3} i P={4,5,6,7} generm graful bipartit alturat Se observ c C P = i C P =X, iar fiecare muchie are o e&tremitate "n C i o e&tremitate "n P

Definiie. Se numete graf bipartit complet, un graf bipartit cu proprietatea c pentru orice vrf x din mulimea C i orice vrf y din mulimea P, e&ist muchia (x,y) (unde C i P sunt cele dou mulimi care partiioneaz mulimea vrfurilor X) #ac mulimea C are 6 elemente, iar mulimea P are Q elemente, un graf bipartit complet se mai noteaz cu O6,Q.

Informatica clasa a XI-a

14

Teorem : Un graf bipartit complet *p,+ are p,+ muchii. Exemplu: Un graf bipartit complet O2,3

8ropo#iie. 4umrul total de grafuri bipartite complete care se pot construi cu n vrfuri este 2n)1)1 $entru a demonstra aceast afirmaie plecm de la observaia c un graf bipartit complet este unic determinat de o partiie a lui X "n dou mulimi C i P dis1uncte i nevide + determina toate grafurile bipartite complete, "nseamn a determina "n cte moduri se pot construi mulimile C i P $entru acesta procedm astfel: "n mulimea C punem vrful 1 pentru a nu repeta soluiile +poi: la C se adaug zero vrfuri (sunt E0n)1 situaii) i "n P restul, "n C se adaug un vrf (sunt E1n)1 situaii) i "n P restul, "n C se adaug dou vrfuri (sunt E2n)1 situaii) i "n P restul, , "n C se adaug n)2 vrfuri (sunt En)2n)1 situaii) i "n P restul +lt situaie nu e&ist pentru c la C nu se pot aduga n)1 vrfuri (P ar fi mulimea vid) 'n total sunt E0n)1/E1n)1/E2n)1/...En)2n)1=2n)1)En)1n)1=2n)1)1

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