Ich beziehe mich auf Skiennas Buch über Algorithmen.Algorithmus zum Finden eines Hamilton-Pfades in einem DAG
Das Problem der Prüfung, ob ein Graph G
ein Hamiltonian path
enthält NP-hard
ist, wobei ein Hamilton-Pfad P
ist ein Weg, die jeden Scheitelpunkt genau einmal besucht. Es muss keine Kante in G von dem Endscheitelpunkt zu dem Anfangsscheitelpunkt von P geben, anders als in dem Hamilton-Zyklus-Problem.
Bei einem gerichteten azyklischen Graphen G (DAG
), eine O(n + m)
Algorithmus geben zu prüfen, ob es eine Hamilton-Pfad enthält.
Mein Ansatz,
Ich plane DFS
und Topological sorting
zu verwenden. Aber ich wusste nicht, wie ich die beiden Konzepte verbinden sollte, um das Problem zu lösen. Wie kann eine topologische Sortierung zur Bestimmung der Lösung verwendet werden?
Irgendwelche Vorschläge?
@ Peter Ivanov danke! – user2302617
Sie haben jedoch angenommen, dass der Graph verbunden ist. Kann es nicht eine topologische Sortierung für einen Graph geben, der Teile getrennt hat? – shinzou
Ich nehme NICHT an, dass der Graph verbunden ist. Wenn der Graph nicht verbunden ist, dann gibt es keinen Hamiltonoperator und dieser Algorithmus wird ihn erkennen, weil mindestens einer der aufeinanderfolgenden Knoten nicht verbunden ist (sonst wird der Graph verbunden)). –