Documente Academic
Documente Profesional
Documente Cultură
1
•Reamintim
•Definitia 2 - Un lanț L ce contine fiecare muchie a unui graf G o singura data se numeste lanț Euler / lanț eulerian.
•
- Daca extremitatile lanțului sunt identice si lanțul este eulerian atunci ciclul se numeste ciclu eulerian.
• O problemă mai cunoscută legată de noțiunile de ciclu si lanț eulerian este aceea de a desena cu o singură linie
neîntreruptă o anumită figură geometrică.
•Teorema (Euler) Un graf G conex (|V | ≥ 3) este eulerian dacă si numai dacă gradul fiecarui vârf este par.
•
2
•Reamintim
•Definitia 1 Se numește arbore liber (”free tree”) un graf simplu G = (V, E) neorientat, conex și aciclic.
•Definitia 2 Dacă se alege un vârf sau nod drept rădăcina arborelui, atunci un arbore liber devine
• arbore cu rădăcină.
• Definitia 3 Un vârf terminal (frunz ̆aeste un vˆarf f ̆ar ̆a descendent ̧i. Vˆarfurile care
•nu sunt terminale sunt neterminale (sau noduri interioare). De obicei, se consider ̆a c ̆a
•exist ̆a o ordonare a descendent ̧ilor aceluia ̧si p ̆arinte.
• O problemă mai cunoscută legată de noțiunile de ciclu si lanț eulerian este aceea de a desena cu o singură linie
neîntreruptă o anumită figură geometrică.
•Teorema (Euler) Un graf G conex (|V | ≥ 3) este eulerian dacă si numai dacă gradul fiecarui vârf este par.
•
3
Algoritmul lui Rosenstiehl
Algoritmul construiește un lanţ L, care la final va deveni un ciclu eulerian, folosind pentru aceasta o stivă drept
structură de date auxiliară:
• pentru nodul curent u se caută o muchie incidentă cu el, și care să nu mai fi fost parcursă la unul
din
pașii anterior.
• dacă există o astfel de muchie (e = [u, v]), atunci se salvează pe stivă nodul u, iar nodul v devine
nodul current
• în momentul în care nodul curent u nu mai are muchii nevizitate, se adaugă u lanțului L, și se
extrage din stivă nodul anterior (din care s-a ajuns în u)
• 1: function Rosenstiehl(u, G)
• 2: for e ∈ E do
• 3: vizit e ← 0
• 4: end for
• 5: S⇐u ⊲ Se inserează în stivă nodul u
• 6: while (S ≠ ∅) do
• 7: S⇒u ⊲ Se extrage din stivă nodul curent
• 8: while (∃e = [u, v] ∈ E) ∧ (vizit e = 0)) do
• 9: vizit e ← 1 ⊲ Se marchează muchia e ca fiind utilizată
• 10: S⇐u ⊲ Se salvează în stivă nodul curent u
• 11: u←v ⊲ Nodul current(u) devine nodul v
• 12: end while
• 13: L⇐u ⊲ Se adaugă la lista L nodul curent
• 14: end while
• 15: return L
• 16: end function
2
3
5
6
4
Un ciclu eulerian: 1 3 6 5 4 2 5 3 2 1
Lungimea ciclului: 9
6