Mam na myśli Księgę Skienna na temat algorytmów.Algorytm znajdowania ścieżki Hamiltona w DAG
Problem testowania czy wykres G
zawiera Hamiltonian path
jest NP-hard
, gdzie Hamiltonian ścieżka P
jest ścieżka, która odwiedza każdy wierzchołek dokładnie raz. Nie musi być krawędzi G od wierzchołka końcowego do początkowego wierzchołka P, w przeciwieństwie do problemu z cyklem Hamiltona.
Biorąc pod uwagę skierowany wykres acykliczny G (DAG
), należy podać algorytm czasowy O(n + m)
, aby sprawdzić, czy zawiera ścieżkę hamiltonowską.
Moje podejście,
Mam zamiar użyć DFS
i Topological sorting
. Ale nie wiedziałem, jak połączyć te dwie koncepcje w rozwiązywaniu problemu. W jaki sposób można użyć sortowania topologicznego do określenia rozwiązania.
Wszelkie sugestie?
@Peter Ivanov dziękuję! – user2302617
Ale założyłeś, że wykres jest podłączony, czy nie może istnieć sortowanie topologiczne dla wykresu, który ma odłączone części? – shinzou
NIE zakładam, że wykres jest podłączony. Jeśli wykres nie jest połączony, to nie ma Hamiltonana i ten algorytm go wykryje, ponieważ co najmniej jeden z kolejnych wierzchołków nie zostanie podłączony (lub wykres zostanie podłączony). –