Sunteți pe pagina 1din 26

PROIECT PENTRU OBINEREA ATESTRII PROFESIONALE N INFORMATIC

TITLUL LUCRRII:

Grafuri

Profesor coordonator:
Saceanu Ion

Elev Chireata Tudora


Clasa a-XII-a B

Cuprins
Cuprins.................................................................................................................................2 2.4 Ordine i rade..........................................................................................................! 2." #ru$uri %ntr-un raf..................................................................................................! 2.! Cone&iune..................................................................................................................' (.) *epre+entarea prin $atrice de adiacenta ..................................................................' (.( ,ector de $uchii .......................................................................................................(.4 .atrice arce-noduri ...................................................................................................(." .atricea noduri-arce ................................................................................................./ 4.) .etoda parcur erii pe lati$e - Breadth 0irst 1B02 ................................................../ !.) 3raf partial...............................................................................................................)! '. Teoria rafurilor.............................................................................................................24

1. Introducere
Numim graf o pereche ordonat de mulimi, notat G=(X,U), unde X este o mulime finit i ne id de elemente numite noduri sau !rfuri, iar U este o mulime de perechi (ordonate sau neordonate) de elemente din X numite muchii (dac sunt perechi neordonate) sau arce (dac sunt perechi ordonate). "n primul ca#, graful se numete neorientat, altfel acesta este orientat. $adar un graf poate fi repre#entat su% forma unei figuri geometrice alctuite din puncte (care corespund !rfurilor) i din linii drepte sau cur%e care unesc aceste puncte (care corespund muchiilor sau arcelor).

&. Notiuni fundamentale


Definitie ' (e numeste graf neorientat o pereche de multimi G = ($,)) in care $ este multimea nodurilor (este finita si ne ida) si ) este multimea relatiilor*muchiilor. ) = + (,,-) * , apartine lui $, - apartine lui $ . Definitie ' / muchie a apartine de ) este deci o su%multime cu elemente +,,-. de arfuri distincte din $ si o om nota (,,-)0notatie muchie.1om spune ca arfurile , si - sunt adiacente in G si ca am%ele sunt incidente cu muchia (,,-). 1arfurile , si - se mai numesc si e,tremitatile muchiei(,,-). 2aca )1 si )& sunt & muchii care au o e,tremitate comuna,ele or fi numite deasemenea incidente. $ = +1,&,3,4,5. ) = +(1,&),(1,3),(&,3),(&,5). 6,emplu' 01 este adiacent cu & si 3 01 si & sunt e,tremitatile (1,&) 0 nodul 1 este incident cu (1,&) 0 (5,&) si (&,3) sunt incidente

&.1 Gradul unui nod la grafurile neorientate


Gradul unui nod x , notat cu d(,),repre#inta numarul muchiilor care trec prin nodul , (incidente cu nodul ,). 6,emplu' 0 d(1)=& Nodul care are gradul 1 se numeste nod terminal. Nodul care are gradul 7 se numeste nod izolat. 8roprietati' 1. d 9 (,) 9 d 0 (,) = d(,) 2. 2aca un graf are m muchii sau arce atunci' d( , 1 )9d(, & ) 9 ... 9 d(, n ) = &m

&.& :anturi
(e numeste lant o succesiune de noduri , 1 ... , ; , cu proprietatea ca oricare doua noduri ecine (, i ,, i91 ) apartin de ). , 1 , , ; sunt e,tremitatile lantului :ungimea lantului este egala cu numarul de muchii care il compun, ;0 1. 2aca nodurile din lant sunt distincte, atunci lantul este elementar, in ca# contrar este neelementar. Exemplu'

1,2,3,1,4 - Lant neelementar (lungime 4) 1,2,3,4 - Lant elementar (lungime 3) 1,2,3,1,2, 1,2,3, - Lant neelementar (lungime )

- Nu e!te lant

&.3 Cicluri
(e numeste ciclu intr0un graf neorientat un lant ,1 , ,& ... , ; cu proprietea ca ,1 =,; si oricare & mchii (, i ,, i91 ) sunt distincte. 2aca un ciclu are toate nodurile distincte & cate & cu e,ceptia capetelor, atunci el se numeste ciclu elementar, in ca# contrar neelementar. Exemplu'

1,2,3,4,1 - "iclu elementar 2,3,4,1,2 - "iclu elementar 1,2,3,4,2,3,1 - Nu e!te ciclu 1,2,3,4,2, ,1 - "iclu neelementar

2#4 $rdine i grade


Numim ordinul unui graf, numrul de noduri al grafului, deci cardinalul mulimii X(G), i notm aceast aloare cu < G < . Numrul de muchii se notea# cu .

Graful id este graful i se notea# cu . (punem c un graf G este trivial dac acesta are ordinul 7 sau 1. (punem c un nod v este incident cu o muchie r dac . 2ou !rfuri x i y se numesc adiacente dac e,ist o muchie e care le unete (cu care am!ndou !rfurile sunt incidente). 2ou muchii sunt adiacente dac e,ist un nod x care s fie incident cu am%ele muchii. Numim gradul unui nod particular v , numrul de arce care sunt conectate la acel nod i se notea# de o%icei cu =(v) sau cu d(v). 2ac adunm gradele tuturor nodurilor din graful G, o% inem de dou ori numrul de muchii'

>aptul c mem%rul drept al ecuaiei a fi mereu par, implic aceeai proprietate ?n mem%rul st!ng, pentru ca egalitatea s fie satisfcut.

2#

Drumuri %ntr-un graf

Numim drum ?ntr0un graf o succesiune de muchii adiacente i distincte care conectea# dou !rfuri din graf (numite capetele drumului). Un drum se numete !implu dac muchiile care ?l compun sunt distincte. Numim ciclu un drum care are drept capete un acelai !rf. 2ac 8 = ,7, ..., ,;01 este un drum ?n graful G i ,;01,7 este o muchie ?n acest graf, atunci 8 9 ,;01,7 este un ciclu din graful G. Un ciclu se numete &amiltonian dac este simplu i trece prin toate nodurile grafului G, e,act o dat, i se numete eulerian dac trece prin toate muchiile grafului G, e,act o dat. Nu orice graf con ine un ciclu hamiltonian (>ig. &).

(punem c ( este un !u'graf al lui G, dac acesta conine o parte din !rfurile lui G i numai acele muchii care le conectea#.

2#( "onexiune
(punem c un graf este conex dac ?ntre oricare dou !rfuri ale acestuia e,ist cel puin un drum. 2e e,emplu grafurile din figurile 1 i & nu sunt cone,e, ?n timp ce graful din figura 3 este un graf cone,. Graful tri ial este considerat cone,. "omplementul unui graf G este graful , care conine o muchie ?ntre !rfurile x i y dac i numai dac G nu conine o astfel de muchie. Complementul unui graf care nu este cone,, este un graf cone,. @eciproca nu este ade rat, de e,emplu pentru un lan de lungime 3 (?ntre 4 !rfuri).

3.

@epre#entarea grafurilor in memorie

3.1 @epre#entarea prin matrice de adiacenta


aAi,BC = 1, daca intre i si B este muchie aAi,BC = 7 altfel ) 1 1 1 1 1 ) 1 1 1 1 1 ) 1 ) 1 1 1 ) ) 1 1 ) ) )

/%ser atie' 8e diagonala principala toate elementele sunt 7 (nu a em %ucle). Datricea este simetrica fata de diagonala principala, deci' aAi,BC = aAB,iC.

3.& :iste de adiacenta


8entru fiecare nod se memorea#a o lista a ecinilor sai. 8entru intregul graf este necesar un ector de liste (8) in care 8 i este adresa primului element al listei asociate lui i.

Nod 1 & 3 4 5

Li!ta de adiacenta a!ociata &,3,5 1,3 1,& 0 1

2e e,emplu, pentru i = 1, informatia din lista figurata mai sus se a completa astfel' pA1C E & E 3 E 5.

3.3 1ector de muchii


>iecare arc al grafului poate fi pri it ca o inregistrare cu & campuri care defapt sunt cele & noduri, care constituie e,tremitatile arcului. *utem defini tipul t+pdef !truct +int st,drF. G$@CF

3.4 Datrice arce0noduri


6ste o matrice % de dimensiune linii si m coloane in care elem %AiCABC= 1,daca i0e,tremitatea initiala a arcului 01,daca i0e,tremitatea finala a arcului 7,daca nodul i0nu este nici o e,tremitate pt arcul cu nr B 6ste folosita in special pentru grafurile orientate.

3.5 Datricea noduri0arce


/%ser atie' matricea noduri0arce poate fi adaptata si pentru grafurile neorientate.

4.

8arcurgerea grafurilor

8arcurgerea unui graf presupune i#itarea (prelucrarea) nodurilor grafului, o o sigura data fiecare,intr0o anumita ordine. Nodurile i#itate sunt legate intre ele direct sau indirect. In functie de ordinea relati a a nodurilor e,ista & metode de parcurgere' 1. Detoda parcurgerii pe latime 0 ,readt& -ir!t (,-) 2. Detoda parcurgerii in adancime 0 Dept& -ir!t (D-)

4.1 Detoda parcurgerii pe latime 0 )readth >irst ()>)

(e porneste de la un nod oarecare ,. (e i#itea#a toti ecinii directi ai nodului , daca nu au fost deBa i#itati. >iecare dintre nodurile i#itate la pasul anterior de ine nod curent si este prelucrat la fel ca nodul ,. x.1 1, &, 3, 4, H, I, J, K, 5

4.& /etoda parcurgerii in adancime - Dept& -ir!t (D-)


(e porneste de la un nod oarecare ,. (e alege primul ecin al lui , care nu a fost inca i#itat,de e, -,dupa care se trece la primul ecin ne i#itat al lui - si asa mai departe pana cand se parcurge in adancime ramura respecti a. Cand s0a aBuns la capatul ei, se re ine la nodul din care s0a plecat ultima data si se parcurge urmatorii sai ecini ne i#itati.

".

2rumuri ma,ime*minime

8ro%lemele de optim presupun ca fiecare muchie a grafului are asociat un anumit cost (de e,emplu, distanta intre doua orase, i si -). $ceste informatii se memorea#a in matricea costurilor' c(i,B) = costul asociat muchiei (i,B)F c(i,B) = 9J, daca nu e,ista muchia (i,B)F 0lgoritmi pentru determinarea co!tului minim1maxim2 8entru determinarea drumului de cost minim*ma,im intre & noduri ale unui graf se poate folosi' 1. $lgoritmul lui @o-0>lo-d

&. $lgoritmul lui 2iB;stra 3. $lgoritmul lui Lrus;al 4. $lgoritmul lui 8rim

5.1 $lgoritmul lui @o-0>lo-d


$lgoritmul foloseste un principiu asemanator cu cel care este utili#at pentru determinarea matricei drumurilor'gasirea drumului ptim intre & noduri oarecare i si B prin descoperirea drumurilor optime care0l compun si care trec prin nodurile ;, se face prin transformarea matricei costurilor. Interpretarea datelor din matricea costurilor o%tinute in urma transformarii se face astfel'drumul de la nodul i la nodul B are costul a i,B .Datricea nu furni#ea#a info despre etichetele drumului cu costul minim. Informatiile din matricea costurilor transformata prin algoritmul @o-0>lo-d se pot folosi pentru a erifica daca e,ista drum cu costul minim intre & noduri de grafuri,iar in ca# afirmati se poate afisa lungimea lui si se poate descoperi drumul. *rogram2
# include <iostream.h> # include <stdio.h> # include <conio.h> int min(int a,int b) { return a&ltb?a:b; } void afisare(int a !"# !"#,int n) {int i,$; for(i%&;i<%n;i'') {for($%&;$<%n;$'') (rintf()*+d ),a i# $#); (rintf(),n));} } void main() { int a !"# !"#,m !"# !"#,n,i,$,-; ./01 2f; clrscr(); f%fo(en()3raf.t4t),)r)); fscanf(f,)*d),&n); for(i%&;i<%n;i'') for($%&;$<%n;$'') fscanf(f,)*d),&a i# $#);

fclose(f); (rintf(),n 3raful are *d varfuri, matricea costurilor este:,n),n); afisare(a,n); 3etch(); for(i%&;i<%n;i'') for($%&;$<%n;$'') if (i%%$) m i# $#%"; else if (a i# $#%%") m i# $#%&"""; else {m i# $#%a i# $#;} (rintf(),n matricea drumurilor directe este:,n)); afisare(m,n); 3etch(); for(-%&;-<%n;-'') for(i%&;i<%n;i'') for($%&;$<%n;$'') if (i5%- && $5%- && i5%$) m i# $#%min(m i# $#,m i# -#'m -# $#); (rintf(),n matricea distantelor minime este :,n)); afisare(m,n); 3etch();}

5.& $lgoritmul lui 2iB;stra


$lgoritmul lui 2iBs;tra este o metod de a sta%ili drumul de cost minim de la un nod de start la oricare altul dintr0un graf. Numele este dat de 6dsger 2iB;stra, sa antul care l0a descoperit. 1. (e creea# o list cu distane, o list cu nodul anterior, o list cu nodurile i#itate i un nod curent. &. Goate alorile din lista cu distane sunt iniiali#ate cu o aloare infinit, cu e,cepia nodului de start, care este setat cu 7. 3. Goate alorile din lista cu nodurile i#itate sunt setate cu fals. 4. Goate alorile din lista cu nodurile anterioare sunt ini iali#ate cu 01. 5. Nodul de start este setat ca nodul curent. H. (e marchea# ca i#itat nodul curent. I. (e actuali#ea# distanele, pe %a#a nodurilor care pot fi i#itate imediat din nodul curent. J. (e actuali#ea# nodul curent la nodul ne i#itat care poate fi i#itat prin calea cea mai scurt de la nodul de start. K. (e repet (de la punctul H) p!n c!nd toate nodurile sunt i#itate. *rogram2
#include <conio.h> #include <stdio.h> int a 6"# 6"#,n,i,$,vi7 6"#,t 8"#,r,min,(o7,d 6"#;

void drum(int i) {if (t i#5%") {drum(t i#); (rintf()*d ),i); } else (rintf()*d ),i); } void 9i$-stra() {(rintf()r%) );scanf()*d),&r); for(i%&;i<%n;i'') {vi7 i#%"; t i#%"; } vi7 r#%&; for(i%&;i<%n;i'') {d i#%a r# i#; if ((i5%r) && (d i#5%8"""")) t i#%r; } for(i%&;i<%n:&;i'') { min%8""""; for($%&;$<%n;$'') { if ((vi7 $#%%") &&(d $#d (o7#'a (o7# $#)) { d $#%d (o7#'a (o7# $#; t $#%(o7; } } for(i%&;i<%n;i'') if(i5%r) {(rintf()n drumul de cost minim de la *d la *d%*dn),r,i,d i#); drum(i); } } void main(void) { clrscr(); (rintf()dati n:) );scanf()*d),&n); for(i%&;i<%n;i'') for($%&;$<%n;$'') { (rintf()a *d# *d#%),i,$);scanf()*d),&a i# $#); a i# i#%"; } (rintf(),nschema 3rafului este:,n) ); for(i%&;i<%n;i'') { for($%&;$<%n;$'') (rintf()*+d),a i# $#); (rintf()n) ); } 9i$-stra(); 3etch(); }

5.3 $lgoritmul lui Lrus;al


$lgoritmul lui Lrus;al este un algoritm ?n teoria grafurilor care gse te ar%orele parial de cost minim pentru un graf cone, ponderat. Cu alte cu inte, gsete su%mulimea muchiilor care formea# un ar%ore care include toate !rfurile i care este minimi#at din punct de edere al costului. 2ac graful nu este cone,, atunci algoritmul gsete o pdure parial de cost minim (un ar%ore parial de cost minim pentru fiecare component cone,). $lgoritmul lui Lrus;al este un e,emplu de algoritm greed-. $lgoritmul funcionea# ?n felul urmtor'

creea# o pdure > (o mulime de ar%ori), unde fiecare !rf din graf este un ar%ore separat creea# o mulime ( care conine toate muchiile din graf at!t timp c!t ( este ne id o elimin o muchie de cost minim din ( o dac acea muchie conectea# doi ar%ori distinc i, atunci adaug muchia ?n pdure, com%in!nd cei doi ar%ori ?ntr0 unul singur o altfel, ignor muchia

:a sf!ritul algoritmului, pdurea are doar o component care repre#int un ar%ore parial de cost minim al grafului. $cest algoritm a fost scris de Moseph Lrus;al, ?n 1K5H.$li algoritmi pentru aceast pro%lem sunt $lgoritmul lui 8rim i $lgoritmul lui )orN ;a. *!eudocod2
function ;rus-al(<) for each v=rf v >n < do 9efinete un 3ru( elementar ?(v) @ {v}. ?reea7A o coadA cu (rioritAi B care conine muchiile din <, av=nd costul dre(t cheie. 9efinete un arbore C @ D EEC va conine >n final toate muchiile din FG?H EE n este numArul total de v=rfuri Ihile C are mai (uin de n:& muchii do EE muchia u,v este drumul minim de la u la v (u,v) @ B.eliminAHin() .ie ?(v) 3ru(ul care >l conine (e v i ?(u) 3ru(ul care >l conine (e u. if ?(v) J ?(u) then

Fdau3A muchia (v,u) la C. Knete ?(v) i ?(u) >ntr:un 3ru(, adicA reuniune >ntre ?(v) i ?(u). return arborele C

5.4 $lgoritmul lui 8rim


$lgoritmul lui 8rim este un algoritm din teoria grafurilor care gse te ar%orele parial de cost minim al unui graf cone, ponderat. "nseamn c gsete su%mulimea muchiilor care formea# un ar%ore care include toate !rfurile i al crui cost este minimi#at. $lgoritmul a fost descoperit ?n 1K37 de ctre matematicianul 1oBtOch MarnP; i apoi, independent, de informaticienii @o%ert C. 8rim ?n 1K5I i redescoperit de 6dsger 2iB;stra ?n 1K5K. 2e aceea mai este numit $lgoritmul 2M8, algoritmul MarnP; sau algoritmul 8rim0MarnP;. $lgoritmul incrementea# mrimea unui ar%ore, pornind de la un nod, p!n c!nd sunt incluse toate nodurile.

Intrare' Un graf cone, ponderat cu nodurile 1 i muchiile 6. Initiali#are' 1nou = +,., unde , este un nod ar%itrar (punct de plecare) din 1, 6nou= +. repet p!n c!nd 1nou=1' o $lege muchia (u, ) din 6 de cost minim astfel ?nc!t u este ?n 1nou i nu e (dac e,ist mai multe astfel de muchii, se alege ar%itrar) o (e adaug la 1nou, (u, ) la 6nou Ieire' 1nou i 6nou descriu ar%orele parial de cost minim

*!eudocod2
&. :(initiali7ations). L%{&} (M(&) root of the C tree). G%{6,...,n} .or everN $ belon3in3 to G :e($):%c e($&)# , (($)%& ( all (ea-s connected to the root.ON definition of the cost function:e($)%infinite Ihen M($) does not connect to M(&).). 6. ?hoose a - for Ihich e(-)<%e($) for everN $ belon3in3 to G./n case of ti3ht choose the smaller one. 14chan3e the L set Iith the set (roduced bN the union of the L set and {-}.

14chan3e the G set Iith the set (roduced bN the difference of the G set and {-}. (G<:G:{-}) /f G%" then sto(. 8. .or everN $ belon3in3 to G com(are e($) Iith c e(-$)#. /f e($) >c e(-$)# e4chan3e e($) <:c(e(-$)).<o bac- to Pte( &.

H# 3ipuri de grafuri
(#1 Graf partial
>ie G=($,)) si G 1 =($ 1 ,) 1 ). (punem ca G 1 este un graf partial al lui G daca $=$ 1 si ) 1 este inclus sau egal cu ). Un graf partial se o%tine dintr0un graf, indepartand o parte dintre muchiile sale si pastrand toate nodurile acestuia.

(u%graful unui graf >ie G=($,)) si G 1 =($ 1 ,) 1 )F $ 1 inclus sau egal cu $F ) 1 inclus sau egal cu ). ) 1 = +(,,-) * oricare ,,- apartine $ 1 daca (,,-) apartine de ) =Q (,,-) apartine de de ) 1 . (u%graful se o%tine din graful initial selectand o parte din nodurile sale si o parte din nodurile adiacente cu acesta.

H.& Graf complet


Un graf este complet daca oricare doua arfuri distince sunt adiacente. 8roprietRi' 1. Un graf neorientat cu n noduri are n(n01)*& muchii. &. 6,ista un singur graf complet neorientat cu n noduri. 3. 6,ista mai multe grafuri orientate complete cu n noduri.

H.3 Grafuri %ipartite


>ie G=($,)) neorientat. G este %ipartit daca e,ista doua multimi, $ 1 si $ & astfel incat $ 1 n $ & = S si $ 1 U $ & = $, iar oricare uchie (,,-) apartinand lui ) are un capat in multimea $ 1 si celalalt in $ & . Un graf %ipartit este %ipartit complet daca fiecare nod din multimea $ 1 este adiacent cu toate nodurile din $ & si reciproc.

H.4 Grafuri cone,e


Un graf este cone, daca este format dintr0un singur nod sau daca intre oricare doua noduri ale sale e,ista cel putin un lant. $plicand algoritmul de parcurgere in latime a unui graf putem sta%ili daca un graf este cone, sau nu astfel'daca in urma parcurgerii or fi i#itate toate nodurile grafului atunci graful este cone,, in ca# contrar nu este cone,.

H#

Graful 4amiltonian

:ant hamiltonian' lant elementar care contine toate nodurile grafului. Ciclu hamiltonian' ciclu elementar care contine toate nodurile grafului.

Graf hamiltonian' graf care contine un ciclu hamiltonian.

Conditii de suficienta' Georema lui 2irac' >ie G dat prin perechea ($,)). 2aca G are un numar de cel putin 3 incat gradul fiecarui nod respecta conditia d(,)=n*&, atunci graful este hamiltonian. Un graf hamiltonian nu poate a ea noduri i#olate.

H.H Grafuri euleriene

Ciclu eulerian' ciclu care trece prin toate muchiile unui graf e,act o data. Graf eulerian' graf care contine cel putin un ciclu eulerian G33'G34'G35' Georema ' >ie un graf cone, fara noduri i#olate cu n= 3 noduri.Graful este eulerian dac daca p entru oricare nod al sau, ,, d(,) este par. 2eterminarea unui ciclu eulerian

(e porneste de la un nod oarecare si se construieste un ciclu. (e parcurg nodurile din ciclul determinat anteriorF daca e,ista un nod care mai are muchii neincluse in ciclul anterior se onstruieste un nou ciclu pro enind de le acest nod. Ciclul construit este inclus in ciclul initial in locul nodului gasit la pasul anterior.

pas ): c): )525(5) c2: 2545'52 pas 2: c): )52545'525(5) c2: '5"5)45' pas (: c): )52545'5"5)45'525(5) c2: '5-5))5' pas 4: c): )52545'5-5))5'5"5)45'525(5) c2: '5!5/5' pas ": c): )52545'5!5/5'5-5))5'5"5)45'525(5)

I. Georia grafurilor
"n matematic i informatic, teoria grafurilor studia# proprietile grafurilor. Un graf este o mulime de o%iecte (numite noduri) legate ?ntre ele printr0o mulime de muchii crora le pot fi atri%uite direc ii (?n acest ca#, se spune c graful este orientat). 1i#ual, un graf poate fi repre#entat ca o mulime de puncte legate ?ntre ele prin linii (de o%icei cur%e). Grafurile au o importan imens ?n informatic, de e,emplu'

?n unele pro%lemele de sortare i cutare 0 elementele mulimii pe care se face sortarea sau cutarea se pot repre#enta prin noduri ?ntr0un grafF schema logic a unui program se poate repre#enta printr0un graf orientat ?n care o instruciune sau un %loc de instruc iuni este repre#entat printr0un nod, iar muchiile direcionate repre#int calea de e,ecuieF ?n programarea orientat pe o%iecte, ierarhia o%iectelor (claselor) unui program poate fi repre#entat printr0un graf ?n care fiecare nod repre#int o clas, iar muchiile repre#int relaii ?ntre acestea (deri ri, agregri).

I.1 (curt istoric al teoriei grafurilor

/riginile teoriei grafurilor se gasesc in re#ol area unor pro%leme de Bocuri si amu#amente matematice,care au atras atentia unor matematicieni de seama cum ar fi' 6uler, Tamilton, Ca-le-, (-l ester, )ir;off. 2ata nasterii teoriei grafului este considerata a fi anul 1I3H. Cand matematicianul :eonhard 6uler a pu%licat un articol in care a clarificat pro%lema celor I poduri si a pre#entat metode pentru re#ol area altor pro%leme de acelasi tip. Cu &77 ani mai tar#iu aparea la :eip#ic prima carte de teorie a grafurilor al carei autor este matematicianul maghiar 2enes Loreg. In amintirea contri%utiei lui 6uler unele notiuni si tipuri de grafuri de care acesta s0a ocupat sunt denumite de catre Loreg lant eulerian ,graf eulerian,etc. Un alt matematician care s0a ocupat de aceleasi pro%leme ca si 6uler, dar care si0a pu%licat re#ol arile cercetarilor sale in anul 1JI3 a fost Carl Tierhol#er. $lte i# oare ale teoriei grafurilor sunt'studiul retelelor electrice, pro%lema celor 4 culori, aplicatiile teoriei grafurilor in chimie(initiate de Ca-le-), pro%leme hamiltoniene, grafuri planare. >i#icianul Lirchoff a studiat la miBlocul secolului al XIX0lea retele electrice cu metode care apartin asta#i teoriei grafului contri%uind la de# oltarea acestei teorii. Germenul graf a fost folosit pentru prima data in sensul sau actual in 1JIJ de matematicianul (-l ester. Georia grafurilor are numeroase apeluri in chimie, contri%uind in mare masura la re#ol area pro%lemelor de numarare a grafurilor apartinand unor clase speciale. Georia grafurilor este folosita in domenii ariate' de la chimie la economie, de la studiul retelelor electrice la critica te,telor de politica, de enind o disciplina maBora.

J. 8ro%leme re#ol ate


1# (e da un graf neorientat cu n arfuri si m muchii, citit prin ectorul muchiilor. (a se afise#e matricea distantelor minime pentru distantele intre oricare & arfuri din graf. 2aca nu e,ista lant intre doua arfuri atunci se a afisa caracterul U. (e a folosi algoritmul @o-0>lo-d. 6,emplu' >isierul de intrare' 1& 13 1& 13 >isierul 7111 17&& 1&7& de iesire' &&&&33UU 3331&4UU 3113&&UU

14 &J 3H 3I 4H 45 JK IK I 17 H 17 1& 11

1&&711334&UU &3317&4453UU &311&7&431UU &3134&7&11UU &13344&713UU 3&&453117&UU 34&&3113&7UU UUUUUUUUUU71 UUUUUUUUUU17

5ezol6are2
#include<fstream> usin3 names(ace std; ifstream fin()3.in)); ofstream fout()3.out)); const int ma44%&"""""; int a &""# &""#,-,n,m,( &""#; void citire() { int i,$,4; fin>>n>>m; for(i%&;i<%n;i'') for($%i'&;$<%n;$'') a i# $#%a $# i#%ma44; for(4%&;4<%m;4'') { fin>>i>>$; a i# $#%&; a $# i#%&; } } void rf() { int i,$,-; for(-%&;-<%n;-'') for(i%&;i<%n;i'') for($%&;$<%n;$'') if(i5%$) if(a i# $#>a i# -#'a -# $#) a i# $#%a i# -#'a -# $#; } void afis() { int i,$; for(i%&;i<%n;i'') { for($%&;$<%n;$'')

} }

if(a i# $#5%ma44) fout<<a i# $#<<) ); else fout<<)# ); fout<<),n);

int main() { citire(); rf(); afis(); fin.close(); fout.close(); return "; }

2# (e da un graf neorientat cu n arfuri si m muchii, citit prin ectorul muchiilor. (a se afise#e pe linii separate componentele sale cone,e. (e a folosi un algoritm de tip depth first. 6,emplu'
>isierul de intrare' 1& 13 1& 13 14 &J 3H 3I 4H 45 JK IK I 17 H 17 1& 11 >isierul de iesire' 1 & J K I 3 H 4 5 17 11 1&

5ezol6are 2
#include<fstream> usin3 names(ace std; ifstream fin()3.in)); ofstream fout()3.out)); int a &""# &""#,-,n,m,( &""#; void citire() { int i,$,4; fin>>n>>m; for(4%&;4<%m;4'') { fin>>i>>$; a i# $#%&; a $# i#%&; }

} void df(int -) { int i; fout<<-<<) ); ( -#%&; for(i%&;i<%n;i'') if(a -# i#%%& && ( i#%%") df(i); } int main() { citire(); for(-%&;-<%n;-'') if(5( -#) { df(-); fout<<endl; } fin.close(); fout.close(); return "; }

3# (e da un graf neorientat cu n arfuri si m muchii, citit prin ectorul muchiilor si apoi un arf ;. (a se afise#e pe linii separate distantele minime de la arful ; la celelalte arfuri ale grafului si lanturile de lungime minima corespun#atoare acestor distante. 2istanta de la un arf la altul se considera a fi numarul de muchii din cel mai scurt lant care uneste cele doua noduri. (e a folosi un algoritm de tip %readth first. 6,emplu'
0isierul de intrare: )2 )( )2 )( )4 2(! (' 4! 4" -/ '/ ' )4 ! )4 )2 )) 0isierul de iesire: )2-2) 2)-2 ((-2)( 4(-2)4 "4-2)4" !4-2)(! '2-/' -4/)-/ )4 ( - / ' )4 )) )2 -

5ezol6are 2
#include<fstream> usin3 names(ace std; ifstream fin()3.in)); ofstream fout()3.out)); int a &""# &""#,-,n,m,( &""#,d &""#,4 &""#,C &""#; void citire() { int i,$,4; fin>>n>>m; for(4%&;4<%m;4'') { fin>>i>>$; a i# $#%&; a $# i#%&; } fin>>-; } void bf(int -) { int st,dr,$; st%dr%&; 4 &#%-; ( -#%&; d -#%"; Ihile(st<%dr) { for($%&;$<%n;$'') if(a 4 st## $#%%& && ( $#%%") { dr''; 4 dr#%$; ( $#%&; d $#%d 4 st##'&; C $#%4 st#; } st''; } } void lant(int -) { if(C -#5%") lant(C -#); fout<<-<<) ); } void afis() { int i; for(i%&;i<%n;i'') if(d i#5%&""""") { fout<<i<<) )<<d i#<<) lant(i); fout<<endl;

);

} else fout<<i<<) :,n); } int main() { citire(); for(int i%&;i<%n;i'') d i#%&"""""; bf(-); afis(); fin.close(); fout.close(); return "; }

K. )i%liografie
http://ro.wikipedia.org/wiki/Adobe_Dreamweaver http://ro.wikipedia.org/wiki/Adobe_Flash http://ro.wikipedia.org/wiki/Graf http://ro.wikipedia.org/wiki/Categorie:Teoria_grafurilor http://ro.wikipedia.org/wiki/Algoritmul_lui_Dijkstra http://www.graf.go.ro/inde !.html http://www."wu.edu/#andonie/Cartea$%&de$%&algoritmi/"ap'.htm

6e7is5 To$8 1244225 9:T.6 for the 7e;95 2442 Ed. OceanPress.

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