[Algorytmy] Cykle hamiltona w grafie skierowanym

MathNoob
Użytkownik
Użytkownik
Posty: 17
Rejestracja: 18 maja 2012, o 22:12
Płeć: Mężczyzna
Lokalizacja: Katowice
Podziękował: 7 razy

[Algorytmy] Cykle hamiltona w grafie skierowanym

Post autor: MathNoob »

Witam,
potrzebuję algorytmu o złożoności \(\displaystyle{ n!}\) (więc najprostsza wersja) do wyszukiwania cykli Hamiltona w grafie skierowanym. Najlepiej w postaci pseudokodu. Pomoże ktoś ?
Ostatnio zmieniony 21 maja 2012, o 11:59 przez Afish, łącznie zmieniany 1 raz.
Powód: Taguj nazwę tematu.
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[Algorytmy] Cykle hamiltona w grafie skierowanym

Post autor: bartek118 »

Po prostu robisz wszystkie permutacje wierzchołków i sprawdzasz, czy któraś nie jest cyklem Hamiltona
MathNoob
Użytkownik
Użytkownik
Posty: 17
Rejestracja: 18 maja 2012, o 22:12
Płeć: Mężczyzna
Lokalizacja: Katowice
Podziękował: 7 razy

[Algorytmy] Cykle hamiltona w grafie skierowanym

Post autor: MathNoob »

Tyle wiem, tylko jak to zapisać ; )
Katana1
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 24 sty 2012, o 13:54
Płeć: Mężczyzna
Lokalizacja: Katowice
Podziękował: 3 razy

[Algorytmy] Cykle hamiltona w grafie skierowanym

Post autor: Katana1 »

Odświeżam. Może ktoś podrzuci jakiś uproszczony pseudokod chociaż?

Pozdrawiam
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[Algorytmy] Cykle hamiltona w grafie skierowanym

Post autor: bartek118 »

W czym problem? Permutacje generuje się rekurencyjnie:

Kod: Zaznacz cały

perm(k)
   if k==1
      print P
   else
      for i=1 to k do
         swap (P[i], P[k])
         perm(k-1)
         swap (P[i], P[k])
Wywołanie perm(n) wypisze wszystkie \(\displaystyle{ n}\)-elementowe permutacje.

Teraz sprawdzamy każdą, czy jest po kolei czy jest cyklem Hamiltona; trywialny hint: wystarczy sprawdzić, że kolejne wygenerowane krawędzie istnieją.
ODPOWIEDZ