Sunteți pe pagina 1din 11

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh.

Asachi Galati

Proiect pentru obtinerea certificatului de competente profesionale

Specializare : matematica-informatica 2006-2007

Tema proiectului: Grafuri hamiltoniene si euleriene

Scopul proiectului: Prezentarea teoriei si a aplicatiilor grafurilor hamiltoniene si euleriene

Absolvent: Profesor indrumator:

CUPRINS

1.Grafuri euleriene 2.Grafuri hamiltoniene 3.Bibliografie

Grafuri euleriene
Adeseori suntem tentai s credem simplul fapt de a traversa strzi sau poduri nu implic nici o idee deosebit. Iat ns c exist o celebr problem de traversare n care singura idee implicat este aceea de traversare, problema celor apte poduri din Knigsberg. Aceast banal i totui foarte controversat problem a dus la apariia i dezvoltarea teoriei grafurilor. Problema se pune cam aa: Oraul Knigsberg era aezat pe coasta Mrii Baltice, la gurile rului Pregel. Pe ru erau dou insule legate de rmuri i ntre ele de apte poduri ca n figura 1.

Figura 1.

Oamenii care cutreierau aceste insule au observat c dac porneau de pe malul sudic al rului, nu puteau s-i planifice plimbarea astfel nct s traverseze fiecare pod o singur dat. Se prea c ori trebuia s sar un pod ori s-l traverseze de dou ori. n anul 1735 Euler a descoperit c nu mai are rost s se ncerce, propunnd urmtoarea analiz a problemei, din punct de vedere matematic: S considerm mai nti insula estic (fig.2.):

sunt trei poduri care duc la ea. Deoarece se pleac de pe malul sudic, nseamn c se pleac din afara insulei estice. Deoarece fiecare din cele trei traversri trebuie efectuate o singur dat, plimbarea trebuies se termine pe insula estic. S considerm acum insula vestic: sunt cinci poduri care duc pe ea, iar cinci este din nou numr impar. Aadar plimbarea ncepe n afara insulei, i deci trebuie s se termine pe insula vestic. Aceasta nseamn c plimbarea se termin n dou locuri diferite simultan ceea ce e imposibil. Soluia dat de Euler este tipic pentru personalitatea i ingeniozitatea sa. Tot el a scris n anul 1736 prima lucrare de teorie a grafurilor despre problema acestor apte poduri. Un ciclu al unui graf G care conine toate muchiile lui G se numete ciclu eulerian. Un graf G care are un ciclu eulerian se numete graf eulerian. Un graf G fr vrfuri izolate este eulerian dac i numai dac este conex i gradele tuturor vrfurilor sale sunt numere pare. Din punct de vedere al teoriei grafurilor, problema se pune cam aa: cele patru regiuni (insule i maluri) A,B,C,D i cele apte poduri le reprezentm n graful urmtor (fig.3.):

Muchiile grafului reprezentnd posi-bilitile de trecere de pe un mal pe un pod i reciproc. Problema are soluie dac acest graf conine un ciclu eulerian. Un astfel de ciclu, utilizeaz la fiecare trecere printr-un vrf dou muchii ce nu mai pot fi folosite pentru o nou trecere. Cum fiecare dintre cele patru vrfuri (A,B,C,D) au grade impare, rezult c ultima muchie va rmne nefolosit sau va fi folosit pentru a face trecerea de final Fig.3 ( pentru a ncheia plimbarea). Aceasta ar nsemna c ori va rmne la unul din vrfuri, o muchie nefolosit (fapt ce demonstreaz c nu avem un ciclu eulerian) ori plimbarea ar trebui s se termine n mai multe locuri simultan ceea ce e iari imposibil. Ciclu eulerian: Fiind dat un graf neorientat, s se verifice dac este graf eulerian i n caz afirmativ, s se determine un ciclu eulerian al su.

Explicaia programului: Pornim dintr-un varf neizolat reinut cu ajutorul variabilei prim, n cadrul procedurii de citire, apoi cutm un ciclu eulerian al grafului printr-un algoritm backtracking. Vom folosi pentru reinerea ordinii vrfului n ciclul eulerian un ir s. n cadrul procedurii de cititre a matricii de adiacen, numrm i muchiile grafului cu ajutorul variabilei m. Funcia valid verific dac vrful k aparine ciclului eulerian (dac este adiacent cu vrful anterior determinat, iar n cazul n care este ultimul vrf k=m dac este adiacent cu primul vfr al ciclului). Procedura back caut succesiv, autoapelndu-se, vrfuri adiacente cu vrful anterior determinat pn cnd se ajunge la ultimul vrf al ciclului (k=m); n acest caz, variabila boolean gsit care a fost iniializat pe false, ia valoarea true i este tiprit irul s ncheindu-l cu primul vrf al su (pentru a arta c este un ciclu).

Dac nu a fost gsit nici un ciclu eulerian al grafului dat ( gsit=false), atunci graful nu este eulerian i se tiprete mesaj. Acelai lucru se ntmpl i dac graful nu are vrfuri neizolate (prim=0). program ciclu_eulerian; uses crt; type mat=array [1..20,1..20] of integer; sir=array [1..20] of integer; var a:mat;s:sir; n,m,i,j,k,prim:integer; gasit:boolean; procedure cit; begin write('n=');readln(n); m:=0;prim:=0; for i:=1 to n-1 do for j:=i+1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]); if a[i,j]=1 then begin m:=m+1; prim:=i; end; a[j,i]:=a[i,j]; end; end; function valid(k:integer):boolean; var i:integer; begin valid:=true; if a[s[k],s[k-1]]=0 then valid:=false; if (k=m)and(a[s[k],s[1]]=0)then valid:=false; end; procedure back(k:integer); var i,j:integer; begin i:=1; while (i<=n)and(not gasit) do

begin s[k]:=i; if valid(k) then begin a[s[k],s[k-1]]:=0; a[s[k-1],s[k]]:=0; if k=m then begin gasit:=true; writeln('Ciclul eulerian este:'); for j:=1 to m do write(s[j],' '); writeln(s[1]); end else back(k+1); a[s[k],s[k-1]]:=1; a[s[k-1],s[k]]:=1; end; i:=i+1; end; end; procedure tip; begin clrscr; writeln('Matricea de adiacenta:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' '); writeln; end; writeln; end; begin{PP} clrscr; cit; tip; if prim<>0 then begin s[1]:=prim; gasit:=false; back(2);

if not gasit then write('Graful nu este eulerian.'); end else write('Graful nu este eulerian.'); readkey; end. n viaa de zi cu zi rezolvm adesea, fr s ne dm seama probleme de grafuri euleriene, de exemplu cnd vrem s mergem cu trenul n circuit i vrem s pltim mai puin, calculm n aa fel nct s trecem peste tot i s pltim mai puin. Dar aceasta nu o facem numai noi i potaii, ci grafurile se utilizeaz la calcularea poziilor optime de amplasare a sateliilor de comunicaie pentru ca informaia transmis s foloseasc puin timp, cci n noua er :,, time is money.

Grafuri hamiltoniene
Se numeste ciclu hamiltonian intr-un graf, un ciclu elementar care contine toate varfurile grafului. Un graf care contine un ciclu hamiltonian se numeste graf hamiltonian. Un lant elementar care contine toate varfurile grafului se numeste lant hamiltonian. * * Un graf hamiltonian are cel putin trei varfuri. Graful complet cu n varfuri este un graf hamiltonian.

Teorema: Fie G=(X,U), cu n>=3 varfuri, daca oricare ar fi x un nod al grafului si d(x)>=n/2, atunci graful este hamiltonian. drum hamiltonian: un drum elementar care trece prin toate nodurile grafului; circuit hamiltonian: un circuit care trece prin toate nodurile grafului; n timp, s-au evideniat o multitudine de probleme reductibile la gsirea unui drum (sau circuit) hamiltonian ntr-un graf, cum ar fi:

1. Problema potaului (gsirea traseului cel mai scurt care trece pe la toate locuinele ce aparin de oficiul potal la care lucreaz acesta); 2. Problema adunrii deeurilor (cel mai scurt drum care trece pe la toate punctele de depozitate a deeurilor); 3. Problema succesiunii operaiilor (executarea mai multor operaii pe o main n acea ordine n care suma timpilor consumai cu pregtirea mainii pentru trecerea de la o operaie la urmtoarea s fie minim) 4. Ordinea lipirii unor componente electronice pe o plac, etc; Determinarea drumurilor hamiltoniene Problema determinrii drumului (circuitului) hamiltonian de valoare optim s-a dovedit deosebit de dificil, neexistnd nici acum un algoritm care s rezolve problema n timp polinomial i nici mcar o metod simpl prin care s se decid dac ntr-un graf dat exist sau nu drumuri hamiltoniene. Exist ns mai muli algoritmi, unii exaci alii heuristici, care reuesc, ntrun caz sau altul, s rezolve problema satisfctor i n timp util. Teorema Dac ntr-un graf orientat fr circuite exist un drum hamiltonian atunci acesta este unic. Demonstraie Deoarece un drum hamiltonian se identific cu o permutare a nodurilor grafului, existena a dou drumuri hamiltoniene implic existena a dou permutri distincte a nodurilor grafului i cum dou permutri distincte difer prin cel puin o inversiune vor exista dou noduri xi i xj n ordinea xi xj pe un drum i invers pe cellalt, existnd deci un drum att de la xi la xj ct i de la xj la xi, cele dou formnd mpreun un circuit, n contradicie cu ipoteza. Graful din figura 1. Este hamiltonian, deoarece ciclul C=[1,2,3,5,4,1] este elementar (pleaca din varful 1 si se incheie tot in 1, iar muchiile [1,2], [2,3], [3,5], [5,4] si [4,1] sunt distincte doua cate doua) si in plus contine toate varfurile.

BIBLIOGRAFIE
1. Manual de informatica pentru clasa a XI-a , George Daniel Mateescu / Pavel Florin Moraru, Editura Niculescu , 2004 2. Metoda backtracking cu exemple in limbajul Pascal , Tiberiu Socaciu , Editura Edusoft , 2005

Powered by http://www.referat.ro/ cel mai tare site cu referate

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