Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

Documente similare
2.1.Tipul tablou unidimensional

Grafuri neorinetate Aplicatii 1 Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat cu 20 noduri şi 12 muchii? a. 6

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Programarea şi utilizarea calculatoarelor

Grafuri - Concepte de baza. Tipuri de grafuri. Modalitati de reprezentare

Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Ob

Backtracking_2018

Diapositive 1

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

ALGORITHMICS

Laboratorul 2 Problema tăieturii minime Considerăm un graf (neorientat) G = (V, E) (V e mulţimea vârfurilor, E e mulţimea muchiilor) care este conex (

Analiză de flux de date 29 octombrie 2012

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Declararea variabilelor

E_d_Informatica_sp_MI_2015_bar_02_LRO

Introducere

Subiectul 1

SUBPROGRAME

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Retele Petri si Aplicatii

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Analiză statică Analiza fluxului de date 23 octombrie 2014

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

PowerPoint Presentation

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

Microsoft Word - CarteC.doc

tehnologii web

Matematica - Clasa teste pentru grupele de excelenta

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Calcul Numeric

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Slide 1

E_d_Informatica_sp_SN_2014_bar_10_LRO

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

Cursul 8 Funcţii analitice Vom studia acum comportarea şirurilor şi seriilor de funcţii olomorfe, cu scopul de a dezvălui o proprietate esenţială a ac

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

B

Microsoft PowerPoint - Fp_2.ppt

09. Informatica 2 - MM 1

ALGORITHMICS

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

Microsoft Word - TIC5

PAS cap. 2: Reprezentări rare p. 1/35 Prelucrarea avansată a semnalelor Capitolul 2: Reprezentări rare Bogdan Dumitrescu Facultatea de Automatică şi C

Clasa IX 1. O lăcustă face salturi, fiecare salt în linie dreaptă şi de două ori mai lung ca precedentul. Poate vreodată lăcusta să revină în punctul

Slide 1

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

1

Slide 1

MergedFile

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iaşi 1.2 Facultatea Facultatea de

Microsoft Word - Raspunsul la niste provocari. Partea III..doc

Microsoft Word - _arbori.docx

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

Microsoft Word - 2 ES RO.doc

D.Rusu, Teoria măsurii şi integrala Lebesgue 6 MĂSURA LEBESGUE Cursul 5 Teorema 6.26 Există submulţimi ale lui R care nu sunt măsurabile Lebesgue. Dem

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ŞTIINŢE REALE, ECONOMICE ȘI ALE MEDIULUI CATEDRA

Microsoft Word - Curs_08.doc

CAPITOLUL I

OLM_2009_barem.pdf

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

I

Teoria Grafurilor şi Combinatorică recapitulare Principii de numărare Reţineţi că: P (n, r) este numărul de şiruri (sau r-permutări) de forma A 1,...,

Fisa disciplinei_Utilizarea_Calc_CFDP_ _var2_

Secţiunea 5-6 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA puncte PERIODIC Se citește un număr natural nenul N. Se ump

ExamView Pro - Untitled.tst

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică Gheorghe Asachi Iaşi, 2015 Analiză Matematică Lucian Maticiuc 1 / 29

CONCURSUL NAŢIONAL DE MATEMATICA PANAITOPOL EDIŢIA a X-a, TULCEA, 21 aprilie 2018 Clasa a VII - a 1. Se consideră numerele reale x, y şi z, cel puţin

FORMULAR

Elemente de aritmetica

Slide 1

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Electricitate II

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Slide 1

Microsoft Word - Lab1a.doc

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 27 octombrie 2014

Microsoft Word - probleme_analiza_numerica_ses_ian09.rtf

FIŞA DISCIPLINEI

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

MD.09. Teoria stabilităţii 1

Microsoft Word - Lucrarea_10_t.doc

Slide 1

Modelarea si Simularea Sistemelor de Calcul

Spatii vectoriale

PROGRAMA CONCURSULUI NAŢIONAL

Utilizare Internet

Transcriere:

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 tentaţi să credem simplul fapt de a traversa străzi 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 Königsberg. Această banală şi totuşi foarte controversată problemă a dus la apariţia şi dezvoltarea teoriei grafurilor. Problema se pune cam aşa: Oraşul Königsberg era aşezat pe coasta Mării Baltice, la gurile râului Pregel. Pe râu 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 râului, nu puteau să-şi planifice plimbarea astfel încât să traverseze fiecare pod o singură dată. Se părea 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, propunând următoarea analiză a problemei, din punct de vedere matematic: Să considerăm mai întâi 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 traversări trebuie efectuate o singură dată, plimbarea trebuiesă se termine pe insula estică. Să considerăm acum insula vestică: sunt cinci poduri care duc pe ea, iar cinci este din nou număr impar. Aşadar 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. Soluţia 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 conţine toate muchiile lui G se numeşte ciclu eulerian. Un graf G care are un ciclu eulerian se numeşte graf eulerian. Un graf G fără vârfuri izolate este eulerian dacă şi numai dacă este conex şi gradele tuturor vârfurilor sale sunt numere pare. Din punct de vedere al teoriei grafurilor, problema se pune cam aşa: cele patru regiuni (insule şi maluri) A,B,C,D şi cele şapte poduri le reprezentăm în graful următor (fig.3.):

Muchiile grafului reprezentând posi-bilităţile de trecere de pe un mal pe un pod şi reciproc. Problema are soluţie dacă acest graf conţine un ciclu eulerian. Un astfel de ciclu, utilizează la fiecare trecere printr-un vârf două muchii ce nu mai pot fi folosite pentru o nouă trecere. Cum fiecare dintre cele patru vârfuri (A,B,C,D) au grade impare, rezultă că ultima muchie va rămâne nefolosită sau va fi folosită pentru a face trecerea de final ( Fig.3 pentru a încheia plimbarea). Aceasta ar însemna că ori va rămâne la unul din vârfuri, 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 iarăşi 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 său. Explicaţia programului: Pornim dintr-un varf neizolat reţinut cu ajutorul variabilei prim, în cadrul procedurii de citire, apoi căutăm un ciclu eulerian al grafului printr-un algoritm backtracking. Vom folosi pentru reţinerea ordinii vârfului în ciclul eulerian un şir s. În cadrul procedurii de cititre a matricii de adiacenţă, numărăm şi muchiile grafului cu ajutorul variabilei m. Funcţia valid verifică dacă vârful k aparţine ciclului eulerian (dacă este adiacent cu vârful anterior determinat, iar în cazul în care este ultimul vârf k=m dacă este adiacent cu primul vâfr al ciclului). Procedura back caută succesiv, autoapelându-se, vârfuri adiacente cu vârful anterior determinat până când se ajunge la ultimul vârf al ciclului (k=m); în acest caz, variabila booleană găsit care a fost iniţializată pe false, ia valoarea true şi este tipărit şirul s încheindu-l cu primul vârf al său (pentru a arăta că este un ciclu).

Dacă nu a fost găsit nici un ciclu eulerian al grafului dat (găsit=false), atunci graful nu este eulerian şi se tipăreşte mesaj. Acelaşi lucru se întâmplă şi dacă graful nu are vârfuri 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; write('n=');readln(n); m:=0;prim:=0; for i:=1 to n-1 do for j:=i+1 to n do write('a[',i,',',j,']=');readln(a[i,j]); if a[i,j]=1 then m:=m+1; prim:=i; a[j,i]:=a[i,j]; function valid(k:integer):boolean; var i:integer; 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; procedure back(k:integer); var i,j:integer; i:=1; while (i<=n)and(not gasit) do

s[k]:=i; if valid(k) then a[s[k],s[k-1]]:=0; a[s[k-1],s[k]]:=0; if k=m then 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; i:=i+1; procedure tip; clrscr; writeln('matricea de adiacenta:'); for i:=1 to n do for j:=1 to n do write(a[i,j],' '); writeln; writeln; {PP} clrscr; cit; tip; if prim<>0 then 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 viaţa de zi cu zi rezolvăm adesea, fără să ne dăm seama probleme de grafuri euleriene, de exemplu când vrem să mergem cu trenul în circuit şi vrem să plătim mai puţin, calculăm în aşa fel încât să trecem peste tot şi să plătim mai puţin. Dar aceasta nu o facem numai noi şi poştaşii, ci grafurile se utilizează la calcularea poziţilor optime de amplasare a sateliţilor de comunicaţie pentru ca informaţia transmisă să folosească puţin timp, căci î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 evidenţiat o multitudine de probleme reductibile la găsirea unui drum (sau circuit) hamiltonian într-un graf, cum ar fi:

1. Problema poştaşului (găsirea traseului cel mai scurt care trece pe la toate locuinţele ce aparţin de oficiul poştal la care lucrează acesta); 2. Problema adunării deşeurilor (cel mai scurt drum care trece pe la toate punctele de depozitate a deşeurilor); 3. Problema succesiunii operaţiilor (executarea mai multor operaţii pe o maşină în acea ordine în care suma timpilor consumaţi cu pregătirea maşinii pentru trecerea de la o operaţie la următoarea să fie minim) 4. Ordinea lipirii unor componente electronice pe o placă, etc; Determinarea drumurilor hamiltoniene Problema determinării drumului (circuitului) hamiltonian de valoare optimă s-a dovedit deosebit de dificilă, neexistând nici acum un algoritm care să rezolve problema în timp polinomial şi nici măcar o metodă simplă prin care să se decidă dacă într-un graf dat există sau nu drumuri hamiltoniene. Există însă mai mulţi algoritmi, unii exacţi alţii heuristici, care reuşesc, întrun caz sau altul, să rezolve problema satisfăcător şi în timp util. Teorema Dacă într-un graf orientat fără circuite există un drum hamiltonian atunci acesta este unic. Demonstraţie Deoarece un drum hamiltonian se identifică cu o permutare a nodurilor grafului, existenţa a două drumuri hamiltoniene implică existenţa a două permutări distincte a nodurilor grafului şi cum două permutări distincte diferă prin cel puţin o inversiune vor exista două noduri x i şi x j în ordinea x i x j pe un drum şi invers pe celălalt, existând deci un drum atât de la x i la x j cât şi de la x j la x i, cele două formând împreună un circuit, în contradicţie 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