Documente Academic
Documente Profesional
Documente Cultură
Atestat
Atestat
Motru
LUCRARE ATESTAT
2016
Motru
Grafuri Orientate
2016
Cuprins
1. Scurt istoric.2
2. Noiuni elementare..3
3. Grafuri orientate..5
3.1. Graf parial8
3.2. Noiunea de subgraf..10
3.3. Gradul unui vrf12
3.4. Graf complet. Graf turneu.13
3.5. Conexitate.14
3.6. Matricea de adiacen19
4. Aplicaii.24
5. Bibliografie30
Scurt istoric
Graful este la origine un concept matematic. Teoria grafurilor are o vechime mult mai
mare comparativ cu informatica. n informatic graful este privit ca o structur de date. O
particularitate a grafurilor n informatic este faptul c de fiecare dat sunt considerate grafuri
finite (cu numr finit de noduri). Informatica a preluat noiunile teoriei grafurilor imaginnd o
multitudine de situaii concrete rezolvabile cu algoritmi ce prelucreaz structuri asimilate
grafurilor.
Euler Leonhard
2. Noiuni elementare
Numim graf o pereche ordonat de mulimi, notat G=(X,U), unde X este o mul ime
finit i nevid de elemente numite noduri sau vrfuri, iar U este o mul ime de perechi (ordonate
sau neordonate) de elemente din X numite muchii (dac sunt perechi neordonate) sau arce (dac
sunt perechi ordonate).
n cazul grafurilor neorientate, perechile de vrfuri din mulimea U sunt neordonate i
sunt denumite muchii. Perechea neordonat format din vrfurile x i y se noteaz [x,y] ;
vrfurile x i y se numesc extremitile muchiei [x,y] .
n cazul grafurilor orientate, perechile de vrfuri din mulimea U sunt ordonate i
sunt denumite arce. Perechea ordonat format din vrfurile x i y se noteaz (x,y); vrful x se
numete extremitate iniial a arcului (x,y) , iar vrful y se numete extremitate final a arcului
(x,y).
Un graf poate fi reprezentat sub forma unei figuri geometrice alctuite din puncte (care
corespund vrfurilor) i din linii drepte sau curbe care unesc aceste puncte (care corespund
muchiilor sau arcelor).
Exemple:
a)graf neorientat
X = {1, 2, 3, 4, 5}
U = {(1,2), (1,3), (2,3), (2,5)}
b)graf orientat
X={1,2,3,4,5}
U={(1,2),(1,3),(1,4),(2,3),(4,5)}
3. Grafuri orientate
Noiunea de graf orientat.
Un exemplu de graf orientat este: reeaua de strzi a unui ora. Strzile sunt muchii n
graf, iar interseciile reprezint vrfurile grafului. ntruct mergnd pe jos ne putem deplasa pe
orice strad n ambele sensuri, vom spune c din punctul de vedere al pietonilor, graful unui
ora este neorientat.
Cu totul altfel stau lucrurile n ceea ce privete conductorii auto, pentru c n orice ora
exist strzi cu sens unic. Pentru un ofer strzile trebuie s primeasc n graf o anumit
orientare. Desigur c acele strzi pe care se poate circula n ambele sensuri vor primi orientare
dubl. Am ajuns astfel la noiunea de graf orientat.
Definiie: Se numete graf orientat o pereche ordonat de mulimi notat G=(V, U), unde:
V : este o mulime, finit i nevid, ale crei elemente se numesc noduri sau vrfuri;
U : este o mulime, de perechi ordonate de elemente distincte din V, ale crei elemente se
numesc arce.
-incidena
daca ul i u2 sunt dou arce ale aceluiai graf, se numesc incidente dac au o extremitate
comun.
Exemplu: u1=(x,y) i u2=(y,z) sunt incidente;
dac u1=(x,y) este un arc ntr-un graf, se spune despre el i nodul x, sau nodul y,
c sunt incidente.
Reprezentarea unui graf orientat admite dou forme, i anume:
- reprezentare textual: aa cum s-a reprezentat graful din exemplul
anterior;
U={(1,2),
Alte definiii:
a) Se numete graf orientat o pereche ordonat de mulimi notat G=(V, U), unde:
V : este o mulime, finit i nevid, ale crei elemente se numesc noduri sau vrfuri;
6
b) Se numete graf orientat o pereche ordonat de mulimi notat G=(V, U), unde:
V : este o mulime, finit i nevid, ale crei elemente se numesc noduri sau vrfuri;
U : este o familie de perechi ordonate de elemente din V, numit familia de arce.
Aceast definiie difer de cea anterioar prin faptul c acum nu numai c se
admit bucle, dar se admit i mai multe arce identice.
Exemplu de graf orientat (reprezentat grafic):
V={1,2 3,4}
U={(1,2), (1,2), (2,1), (1,4), (2,3), (4,4)}
a) Un exemplu de graf parial al grafului G este graful orientat: G1=(V, U1) unde:
V={ 1,2,3,4}
U1={(1,2),(1,4)} (s-a eliminat arcul (2,3)) reprezentat grafic astfel:
10
Un
alt exemplu de subgraf al grafului G este graful orientat: G1=(V1, U1) unde:
11
-mulimea arcelor care intr n nodul 2: +(2)= {(2, 5), (2, 3), (2, 4)};
-mulimea arcelor care ies din nodul 2: - (2)={(1, 2)};
-nodurile 2 i 4 sunt adiacente.
-pentru arcul (2, 3) spunem c 2 este extremitatea iniial i 3 este extremitatea final.
-arcele (2, 3) i (3, 4) sunt incidente.
-nodul 4 este succesor al nodului 2.
-nodul 2 este predecesor al nodului 4.
-mulimea succesorilor nodului 2: +2= {3, 4, 5};
-mulimea predecesorilor nodului 2: -2={1};
-gradul extern al nodului 2: 3
-grad intern al nodului 2: 1
Un graf orientat este turneu, dac oricare ar fi 2 vrfuri i i j, ij, ntre ele exist un singur arc:
arcul(i,j) sau arcul (j,i).
Orice
n orice graf
turneu exist un drum elementar care trece prin toate vrfurile grafului.
3.5. Conexitate
Un graf G este conex, dac oricare ar fi dou vrfuri ale sale, exist un lan care le leag.
Un lan ntr-un graf orientat este un ir de arce {u1, u 2, u3 , , un} cu proprietatea c oricare
dou arce consecutive au o extremitate comun. Altfel spus, un lan este un traseu care une te
prin arce dou noduri numite extremitile lanului, fr a ine cont de orientarea arcelor
componente.
14
Exemplu:
Graful este conex pentru c oricum am lua dou noduri putem ajunge de la unul la
cellalt pe un traseu de tip lan. De exemplu, de la nodul 4 la nodul 2 putem ajunge pe traseul de
noduri (4,3,2) stabilind astfel lanul {u 5, u3}, dar i pe traseul de noduri (4,1,2) stabilind lanul
{u6, u2}
15
x=1, y=2
De la 1 la 2 drumul [1,3,2], pe arcele (1,3) i (3,2);
De la 2 la 1 drumul [2,3,1], pe arcele (2,3) i (3,1).
x=1, y=3
De la 1 la 3 drumul [1,2,3], pe arcele (1,2) i (2,3);
De la 3 la 1 drumul [3,2,1], pe arcele (3,2) i (2,1).
x=2, y=3
De la 2 la 3 drumul [2,1,3], pe arcele (2,1) i (1,3);
De la 3 la 2 drumul [3,1,2], pe arcele (3,1) i (1,2).
Am obinut astfel subgraful tare conex G1=(X1, U1). Acestui graf i adugm un nod x
care nu face parte din mulimea nodurilor subgrafului G1.
Graful obinut este componenta tare conex.
Problem
Stabilii dac graful de mai jos este sau nu conex.
18
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.
19
Exemple:
20
Matricea de adiacen:
#include<iostream.h>
void main()
{
cout<<"x=";cin>>x;
cout<<"y=";cin>>y;
a[x][y]=1; a[y][x]=1;
22
int k,x,y;
ifstream f(in.txt); f>>n>>m;
//numarul de varfuri si numarul de muchii
for(k=1;k<=m;k++)
f>>x>>y;
a[x][y]=a[y][x]=1;
f.close();
23
4.Aplicaii
Se da un graf orientat cu n varfuri si m arce avand arcele etichetate cu
costuri
numere
naturale.
for(i=1;i<=n;i++)
{
d[i]=c[s][i];
if(i!=s && d[i]!=inf) t[i]=s;
else t[i]=0;
p[i]=0;
}
p[s]=1;
for(k=1;k<n;k++)
{ minn=inf;
for(i=1;i<=n;i++)
if(!p[i] && d[i]<minn)
{ minn=d[i]; j=i;
}
for(i=1;i<=n;i++)
if(!p[i] && d[i]>d[j]+c[j][i])
{ d[i]=d[j]+c[j][i];
t[i]=j;
}
p[j]=1;
}
}
void drum(int i)
{ if(t[i]) drum(t[i]);
g<<i<<" ";
}
int main()
{ int i,v;
citire();
25
dijkstra(x);
v=d[y];
drum(t[y]);
dijkstra(y);
v=v+d[x];
drum(x);
g<<endl<<v;
f.close();
g.close();
return 0;
}
Se considera un graf turneu cu n varfuri avand arc (i,j) intre oricare doua
varfuri
i,j
cu
proprietatea
ca
este
mai
mic
decat
j.
for(int i=X[k-1]+1;i<=y;i++)
{
X[k]=i;
if(X[k]==y) afis(k);
else back(k+1);
}
}
int main()
{
f>>n>>x>>y;
X[1]=x;
back(2);
f.close();
g.close();
return 0;
}
Se da un graf orientat cu n vrfuri si m arce prin lista arcelor si un varf k.
Calculati cate varfuri are componenta tare conexa in care se afla varful k.
REZOLVARE:
#include<fstream>
using namespace std;
int k,l,m,n,a[100][100],pf[100],ps[100];
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void dfsuc(int nod)
{int k;
pf[nod]=1;
27
for(k=1;k<=n;k++)
if(a[nod][k]==1 && pf[k]==0)
dfsuc(k);
}
void dfpred(int nod)
{int k;
ps[nod]=1;
for(k=1;k<=n;k++)
if(a[k][nod]==1 && ps[k]==0)
dfpred(k);
}
void citire()
{int x,y;
f>>n>>m;
for(int i=1;i<=m;i++)
{f>>x>>y;
a[x][y]=1;
}
f>>k>>l;
}
int main()
{citire();
dfsuc(k);
dfpred(k);
for(int i=1;i<=n;i++)
if(pf[i]*ps[i]==0) pf[i]=ps[i]=0;
int t=0;
for(int i=1;i<=n;i++)
if(pf[i]) t++;
28
g<<t;
f.close();
g.close();
return 0;
}
29
5.Bibliografie
http://ro.wikipedia.org/wiki/Graf
http://campion.edu.ro/arhiva/www/arhiva_2009/seds/17/index.htm
"Infomatica-fise de lucru pentru elevi"(George D. Mateescu, Pavel F. Moraru)
http://grafuri11.wikispaces.com/file/view/GRAFURI+ORIENTATE.pdf
http://grafuriorientate.blogspot.ro/2010/05/normal-0-false-false-false.html
http://bigfoot.cs.upt.ro/~chirila/teaching/upt/id21-aa/AA-ID-Cap12.pdf
30