Pagini recente » Diferente pentru problema/narbi intre reviziile 6 si 2 | Diferente pentru problema/cri intre reviziile 17 si 6 | Diferente pentru problema/carti intre reviziile 5 si 3 | Diferente pentru problema/kfib intre reviziile 69 si 36 | Diferente pentru problema/ciclueuler intre reviziile 3 si 4
Nu exista diferente intre titluri.
Diferente intre continut:
h2. Solutie
Conform unei 'teoreme':http://www.math.dartmouth.edu/~euler/docs/originals/E053.pdf datorate lui Leonhard Euler, un multigraf este Eulerian daca si numai daca toate nodurile sale au grad par.
Conform unei 'teoreme':http://www.math.dartmouth.edu/~euler/docs/originals/E053.pdf datorate lui Leonhard Euler, un multigraf este Eulerian (admite un ciclu Eulerian) daca si numai daca este conex si toate nodurile sale au grad par. Pentru a construi un astfel de ciclu putem folosi urmatoarele variante:
* Generam toate ciclurile simple ale multigrafului (spre exemplu, folosind metoda 'backtracking':http://en.wikipedia.org/wiki/Backtracking) si verificam proprietatea Euleriana. O astfel de abordare are, insa, complexitate exponentiala in raport cu dimensiunea datelor de intrare si o consideram lipsita de utilitate practica.
* Folosind _algoritmul lui Fleury_, pornim de la un nod oarecare si, la fiecare pas, parcurgem o muchie a carei stergere din graf nu l-ar deconecta. Stergem muchia respectiva si, deplasandu-ne in celalalt capat al ei, continuam algoritmul in aceeasi maniera pana cand vom epuiza toate muchiile grafului. Ciclul obtinut este Eulerian.
Pentru implementarea algoritmului lui Fleury, putem face o parcurgere in adancime din nodul de start, etichetand muchiile dupa tipul lor (muchii _de arbore_ si muchii _de intoarcere_). La fiecare pas in construirea ciclului, vom alege intotdeauna muchiile de intoarcere inaintea muchiilor de arbore. Implementata cu grija, aceasta solutie are complexitate liniara.
[...]
== include(page="template/taskfooter" task_id="ciclueuler") ==
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.