620 likes | 2.26k Views
Grafurile in viata reala. Ion Andreea Stefania.
E N D
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?
Elementeteoretice-structura de tip GRAF • Grafurilesuntstructuri de date care se pot implementeatat ca structuri de date alocate static câtşialocatedinamic. Grafurilesuntutilizateînmodelareaproblemelor legate de activitatiîntâlniteînrealitatea de zi cu zi. Structuraunuigrafreflectăstructurăuneiproblemereale. • Grafurilesuntformate din puncte (numitenodurisauvârfuri - engleza = nodes / vertices) şiconexiuniîntrenoduri (numitemuchii – engleza edges).
Nod=componenta a grafului,siextremitati a muchiilor • Muchie=”drumul” dintre 2 noduri • Lant=o succesiune de 2 noduri cu proprietatea ca oricare 2 noduri consecutive din lantsuntadiacente. DefiniţieNumimmuchiiadiacentedouămuchii cu o extremitatecomună. Pentruexemplul de maisus, muchiile [1,5] şi [5,4] suntmuchiiadiacentepentrucă au ca extremitatecomunănodul 5. • Parcurgereapelatime se efectueazaprinutilizareastructuriinumitacoada,avandgrija ca un nod sa fie vizitat o singura data.
De exemplu, înfigura de maijosavemdouăgrafuri A şi B, fiecare cu câte 5 nodurişinumărdiferit de muchii.
Se numeştegrafneorientat, o perecheordonată de multiminotată G = (V,E), unde V = {v1, v2, …, vn} este o mulţimefinităşinevidă de elementenumitenodurisauvârfuriiar E = {e1,e2,…,en} este o mulţime de perechineordonate de elemente din E numitemuchii. • Se numeştegraforientat o perecheordonată de mulţimi G=(V,E), undeunde V = {v1, v2, …, vn} este o multimefinităşinevidă, numitămulţimeanodurilorsauvârfuri, iar E = {e1,e2,…,en} este o mulţimeformată din perechiordonate de elemente ale lui E, numitămulţimeaarcelor.
Un exemplu de graforientateste: reţeauade străzi a unuioraş. Străzilesuntmuchiiîngraf, iarintersecţiilereprezintăvârfurilegrafului. Întrucâtmergândpejos ne putemdeplasapeoricestradăînambelesensuri, vomspunecă din punctul de vedereal pietonilor, „graful unuioraş” esteneo- rientat.
Cu totulaltfelstaulucrurileînceeacepriveşteconducătorii auto, pentrucăînoriceoraşexistăstrăzi cu sensunic. Pentru un şoferstrăziletrebuiesăprimeascăîngraf o anumităorientare. Desigurcăacele străzi pe care se poatecircula înambele sensurivor primiorientare dublă. Am ajunsastfel la noţiunea de graforientat.
Problema • Un exemplu de graf din lumearealareprezintadrumuriledintreorase. De exemplu, dorescsaafludacaintredouaoraseexista drum care le leaga. Luanddouaorase la intamplare,vremsastimdacaexista drum intreele.
Despreproblema • Se da o tara in care se afla m noduri(orase). Muchiilereprezintadrumuldintreele. Citind de la tastaturamatricea de adiacenta a grafuluisi o insiruire de m noduriaflatidacaexista drum de legaturaintreele. (exista un lant format din nodurilecitite.) Sa se afisezetoateoraselefolosind o metoda de parcurgere.
Modul de rezolvare al problemei • citimmatricea de adiacentasicele m noduri • verificamdacaexista un lant format din cele m noduri • parcurgemgrafulfolosindmetodapelatime • afisamrezultatul
Programulc++ #include<iostream.h> inta[50][50]; intmain() {intn,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]<<” ”; }
Alteexemple de grafuri din viaţareală • Intr-o fabricasunt n muncitori .Intreacestimuncitoriexistarelatia de colegialitate. a) Sa se reprezinte sub forma de grafmuncitoriifabricii respective sirelatiiledintreeipentru n=6. b) Cefel de grafatiobtinut ?
Rezolvare • a)Reprezentareagrafului. Fiecaremuncitorestecoleg cu ceilalti. • b)Se obtine un grafcomplet.