Mi riferisco al libro sugli algoritmi di Skienna.Algoritmo per trovare un percorso Hamilton in un DAG
Il problema di verificare se un grafo G
contiene un Hamiltonian path
è NP-hard
, dove un percorso hamiltoniano P
è un percorso che visita ogni vertice esattamente una volta. Non deve esserci un margine in G dal vertice finale al vertice di partenza di P, diversamente dal problema del ciclo di Hamiltoniana.
Dato un grafico aciclico diretto G (DAG
), fornire un algoritmo tempo O(n + m)
per verificare se contiene o meno un percorso hamiltoniano.
Il mio approccio,
Sto progettando di utilizzare DFS
e Topological sorting
. Ma non sapevo come collegare i due concetti per risolvere il problema. Come si può usare un ordinamento topologico per determinare la soluzione.
Qualche suggerimento?
@Peter Ivanov, grazie! – user2302617
Ma si presuppone che il grafico sia connesso, non ci può essere un ordinamento topologico per un grafico che ha parti disconnesse? – shinzou
NON presumo che il grafico sia connesso. Se il grafico non è collegato, allora non c'è Hamiltonian e questo algoritmo lo rileverà, perché almeno uno dei vertici consecutivi non sarà connesso (altrimenti il grafico sarà collegato). –