Sunteți pe pagina 1din 20

Grafurile in viata reala

Ion Andreea Stefania

Cel

mai bun exemplu de aplicatie practica


in viata reala a grafurilor neorientate sunt
hartile rutiere. Putem afla astfel cel mai
scurt drum pana intr-un anumit punct sau
care puncte de pe harta sunt cel mai usor
accesibil.Nodurile pot fi considerate
orase, iar muchiile drumuri; grafurile
orientate pot reprezente drumuri cu sens
unic intre cladiri.

De

asemenea, ne putem reprezenta


traiectoria unei calatorii cu ajutorul unui
lant al unui graf neorientat.

Grafurile

mai pot arata legaturile


dintre anuminte grupuri sau
oameni; grafuri orientate pot
arata transferul de informatii sau
a unor bunuri.Un arbore
genealogic este de asemena un
graf neorientat.

Cablurile

de inalta tensiune care


pornesc dintr-o centrala pot fi si
ele reprezentate cu usurinta cu
ajutorul unui graf orientat,
indicand si directia de deplasare
a curentului. In acest caz centrala
este un nod sursa. La fel se poate
reprezenta si un sistem de
canalizare, de incalzire sau
reteaua de apa curenta.

Multitudinea

cailor aeriene
reprezinta grafuri. Nodurile sunt
intersectiile (imaginare) si
muchiile sunt rutele (imaginare).
Noduri pot fi si aeroporturile.

Teoria

grafurilor are numeroase


apeluri in chimie, contribuind in mare
masura la rezolvarea problemelor de
numarare a grafurilor apartinand unor
clase speciale. Teoria grafurilor este
folosita in domenii variate: de la
chimie la economie, de la studiul
retelelor electrice la critica textelor de
politica, devenind o disciplina majora.

Acum

ca am aflat cat de folositoare


sunt grafurile, ne punem intrebarea:

Ce

sunt GRAFURILE?

Elemente teoretice-structura de
tip GRAF
Grafurile

sunt structuri de date care se pot


implemente atat ca structuri de date
alocate static ct i alocate dinamic.
Grafurile sunt utilizate n modelarea
problemelor legate de activitati ntlnite n
realitatea de zi cu zi. Structura unui graf
reflect structur unei probleme reale.

Grafurile

sunt formate din puncte (numite


noduri sau vrfuri - engleza = nodes /
vertices) i conexiuni ntre noduri (numite
muchii engleza edges).

Nod=componenta

a grafului,si extremitati a

muchiilor
Muchie=drumul

dintre 2 noduri

Lant=o

succesiune de 2 noduri cu proprietatea


ca oricare 2 noduri consecutive din lant sunt
adiacente. Definiie Numim muchii adiacente
dou muchii cu o extremitate comun. Pentru
exemplul de mai sus, muchiile [1,5] i [5,4]
sunt muchii adiacente pentru c au ca
extremitate comun nodul 5.

Parcurgerea

pe latime se efectueaza prin


utilizarea structurii numita coada,avand grija
ca un nod sa fie vizitat o singura data.

De

exemplu, n figura de mai jos


avem dou grafuri A i B, fiecare
cu cte 5 noduri i numr diferit
de muchii.

Se

numete graf neorientat, o pereche


ordonat de multimi notat G = (V,E), unde
V = {v1, v2, , vn} este o mulime finit i
nevid de elemente numite noduri sau
vrfuri iar E = {e1,e2,,en} este o mulime
de perechi neordonate de elemente din E
numite muchii.

Se

numete graf orientat o pereche


ordonat de mulimi G=(V,E), unde unde V
= {v1, v2, , vn} este o multime finit i
nevid, numit mulimea nodurilor sau
vrfuri, iar E = {e1,e2,,en} este o
mulime format din perechi ordonate de
elemente ale lui E, numit mulimea arcelor.

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.

Problema
Un

exemplu de graf din lumea


reala reprezinta drumurile dintre
orase. De exemplu, doresc sa aflu
daca intre doua orase exista
drum care le leaga. Luand doua
orase la intamplare,vrem sa stim
daca exista drum intre ele.

Despre problema
Se

da o tara in care se afla m


noduri(orase). Muchiile reprezinta
drumul dintre ele. Citind de la
tastatura matricea de adiacenta
a grafului si o insiruire de m
noduri aflati daca exista drum de
legatura intre ele. (exista un lant
format din nodurile citite.) Sa se
afiseze toate orasele folosind o
metoda de parcurgere.

Modul de rezolvare al problemei


citim

matricea de adiacenta si
cele m noduri

verificam

daca exista un lant


format din cele m noduri

parcurgem

graful folosind
metoda pe latime

afisam

rezultatul

Programul c++
#include<iostream.h>
int a[50][50];
int main()
{int n,m,I,j,b[50],ok,prim,ultimo,start,x,y,v[100],c[100];
cout<<n=;cin>>n;
cout<<m=;cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cout<<a[<<i<<][<<j<<]=;
cin>>a[i][j];
a[j][i]=a[i][j];}
for(i=1;i<=m;i++)
{cout<<b[<<i<<]=;
cin>>b[i];}
ok=1;
for(i=1;i<m;i++)
{if(a[b[i]][b[i+1]]==0)
ok=0;
if(ok)
cout<<Da;
else
cout<<Nu;}
prim=1;
ultim=1;
cout<<nodul de pornire;
cin>>start;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{cout<<a[<<i<<][<<j<<]=;
cin>>a[i][j];
a[j][i]=a[i][j];}
v[start]=1;
c[1]=start;
while(prim<=ultim)
{for(j=1;j<=n;j++)
if(a[c[prim]][j]==1 && v[j]==0)
{ultim++;
c[ultim]=j;
v[j]=1;}
prim++;}
for(i=1;i<=ultim;i++)
cout<<c[i]<< ;
}

Alte exemple de grafuri din viaa real


Intr-o

fabrica sunt n muncitori


.Intre acesti muncitori exista
relatia de colegialitate.

a)
Sa se reprezinte sub forma de
graf muncitorii fabricii respective
si relatiile dintre ei pentru n=6.
b)

Ce fel de graf ati obtinut ?

Rezolvare
a)Reprezentarea

grafului.

Fiecare muncitor este coleg cu


ceilalti.
b)Se

obtine un graf complet.

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