Esiste un algoritmo o un insieme di algoritmi che consentono di trovare la distanza di cammino più breve da un nodo di avvio arbitrario in modo che ogni nodo venga visitato in un peso, un grafico non orientato? Non è un commesso viaggiatore, perché non mi interessa se un nodo viene visitato più di una volta. (Non importa nemmeno se si ritorna all'inizio - il walker può finire in un nodo lontano purché fosse l'ultimo necessario per visitare tutti i nodi.) Non è un albero spanning minimo, perché potrebbe essere che andare A -> B -> C -> A -> D è un percorso (non univoco) più breve per visitare A, B, C e D. La mia intuizione dice che questo non è È un bel problema di NP, perché non ha le restrizioni che rendono i problemi di NP così complicati. Potrei, naturalmente, essere completamente sbagliato.Percorso non ciclico a tutti i nodi
risposta
Dall'articolo di Wikipedia su Travelling Salesman Problem:
rimozione della condizione di visitare ogni città "solo una volta" non rimuovere la NP-difficile, dal momento che è facilmente visibile che nel caso planare c'è un tour ottimale che visita ogni città una sola volta (altrimenti, per la disuguaglianza del triangolo, una scorciatoia che salta una visita ripetuta non aumenterebbe la durata del tour).
Wiki ha sbagliato almeno per metà questa volta. Considerare il grafico ponderato 1 -> 2 (1), 1 -> 3 (1), 1 -> 4 (1), 2 -> 3 (1000). Se possiamo visitare una città più di una volta, uno strumento ottimale eviterà il margine 2 -> 3 del costo 1000, quindi possiamo fare per esempio 2 -> 1 -> 3 -> 1 -> 4. O mi manca qualcosa? – IVlad
Bene, questo risponde, allora. – Jon
L'esempio non soddisfa la "disuguaglianza triangolare", che è implicita nella distinzione "caso planare". – Larry
Non so quale sia l'etichetta per aggiungere una risposta a una domanda con una risposta già accettata.
Aggiungo questa risposta solo per non dover saltare a un'altra pagina, per non avere a che fare con grafici planari e disuguaglianze triangolari e il fatto che sia semplice e probabilmente più facile da capire.
Hamiltoniana problema Path può essere ridotta a questo:
Supponiamo di avere un algoritmo di tempo polinomiale per risolvere il nostro problema di trovare un minimo di passeggiata di peso che visita tutti i vertici.
Dato un grafico di cui abbiamo bisogno di decidere se esiste o meno un percorso hamiltoniano, lo alimentiamo così com'è, all'algoritmo del problema, impostando i pesi del bordo = 1. Se l'algoritmo restituisce un valore> n- 1, quindi non vi è alcun percorso hamiltoniano nel grafico originale, altrimenti non esiste.
Quindi questo problema è NP-Hard.
Grazie - questo aiuta a spiegare ulteriormente il problema. – Jon
- 1. Il percorso più breve per visitare tutti i nodi
- 2. Come trovare il percorso più lungo in un grafico ciclico tra due nodi?
- 3. Accesso a tutti i nodi in TreeView Control
- 4. NSOutlineView - Espansione automatica di tutti i nodi
- 5. mongo DB - Tutti i nodi secondari
- 6. La selezione Jsoup non restituisce tutti i nodi
- 7. Jenkins: esiste un modo per rimuovere tutti i nodi non in linea (slave)/eliminare i nodi in batch/eliminare tutti i nodi?
- 8. JTree: selezione programmata di tutti i nodi
- 9. Mostra tutti i nodi e le relazioni
- 10. Restituisce tutti i nodi nel percorso più breve come elenco di oggetti
- 11. Come selezionare tutti i nodi figlio tranne i nodi di testo?
- 12. Percorso più corto a una via attraverso più nodi
- 13. Come selezionare tutti i nodi foglia utilizzando l'espressione XPath?
- 14. Come posso aprire tutti i nodi in jQuery Jstree?
- 15. : percorso più breve tra tutti i punti
- 16. Come forzare tutti i nodi nella stessa colonna in graphviz?
- 17. jstree jquery come iterare attraverso tutti i nodi
- 18. Leggere tutti i nodi figlio XML di ciascun nodo specifico
- 19. Algoritmo molto veloce per tutti i percorsi tra due nodi
- 20. XPATH - Seleziona tutti i nodi figlio con un attributo specifico
- 21. Come selezionare tutti i root o tutti i nodi figli in VirtualStringTree?
- 22. XSLT Copiare tutti i nodi tranne 1 elemento
- 23. E 'possibile iterare attraverso tutti i nodi con py2neo
- 24. Tutti i percorsi tra 2 nodi nel grafico
- 25. Come cancellare un modello JTree? (Rimozione di tutti i nodi)
- 26. Come trovare tutti i nodi in un grafico equidistante da un determinato set di nodi?
- 27. XSLT Seleziona tutti i nodi contenenti una sottostringa specifica
- 28. Ottenere un elenco di tutti i nodi dell'albero (in tutti i livelli) in TreeView Controls
- 29. Come ottenere tutti i nodi foglia di un albero?
- 30. Trova tutti i nodi di testo nella pagina HTML
Il grafico è ponderato o no? Come può A -> B -> C -> A essere il percorso più breve? A meno che non si possano avere costi negativi A -> B -> C sarà sempre più breve ... – IVlad
Mi spiace - sì, il grafico è ponderato e non orientato. Il motivo per cui può essere più breve è perché potresti avere A, B, C e D in modo tale che ci siano bordi: A <-[3]-> B [3], B <-[5]-> C, A <-[3]-> C, B <-[15]-> D e A <-[5]-> D. In questo caso , un percorso ottimale (non unico) sarebbe A -> B -> C -> A -> D. – Jon