Existe-t-il un algorithme ou un ensemble d'algorithmes qui vous permet de trouver la distance de marche la plus courte d'un nœud de départ arbitraire afin que chaque nœud soit visité dans un graphe non orienté? Ce n'est pas tout à fait un vendeur ambulant, car je me fiche qu'un nœud soit visité plus d'une fois. (Cela n'a même pas d'importance si vous revenez au début - le marcheur peut se retrouver dans un nœud lointain tant qu'il est le dernier à visiter tous les nœuds.) Ce n'est pas tout à fait le spanning tree minimum, car il se peut que aller A -> B -> C -> A -> D est un chemin (non unique) le plus court pour visiter A, B, C et D. Mon intuition dit que ce n'est pas le cas. C'est plutôt un problème NP, car il n'a pas les restrictions qui rendent les problèmes NP si difficiles. Je pourrais, bien sûr, avoir complètement tort.Chemin non cyclique vers tous les nœuds
Répondre
de l'article de Wikipédia sur Travelling Salesman Problem:
Retrait de la condition de visiter chaque ville « une seule fois » ne supprime pas le NP-dureté, car il est facile de voir que dans le cas planaire il y a une visite optimale qui ne visite chaque ville qu'une seule fois (sinon, par l'inégalité du triangle, un raccourci qui saute une visite répétée n'augmenterait pas la durée du tour).
Wiki est au moins à moitié faux cette fois. Considérons le graphique pondéré 1 -> 2 (1), 1 -> 3 (1), 1 -> 4 (1), 2 -> 3 (1000). Si nous pouvons visiter une ville plus d'une fois, un outil optimal évitera le bord 2 -> 3 du coût 1000, donc nous pouvons faire par exemple 2 -> 1 -> 3 -> 1 -> 4. Ou est-ce que je manque quelque chose? – IVlad
Eh bien, cela répond à cela, alors. – Jon
Votre exemple ne satisfait pas à "l'inégalité triangulaire", qui est impliquée par la distinction "cas planaire". – Larry
Vous ne savez pas exactement ce que l'étiquette est pour ajouter une réponse à une question avec une réponse déjà acceptée.
J'ajoute cette réponse juste pour ne pas avoir à sauter à une autre page, pour ne pas avoir à faire face aux graphes planaires et à l'inégalité triangulaire et le fait que c'est simple et probablement plus facile à comprendre.
problème hamiltonien Path peut être réduit à ceci:
Supposons que nous ayons un algorithme polynomial pour résoudre notre problème de trouver un moins à pied de poids qui rend visite à tous les sommets. Étant donné un graphique dont nous devons décider si un chemin hamiltonien existe ou non, nous l'alimentons tel quel, à l'algorithme du problème, en définissant des poids de bord = 1. Si l'algorithme renvoie une valeur> n- 1, alors il n'y a pas de chemin hamiltonien dans le graphe original, sinon il y en a.
Ce problème est donc NP-difficile.
Merci - cela aide à expliquer le problème plus loin. – Jon
- 1. Comment trouver le chemin le plus court qui couvre tous les nœuds d'un graphe cyclique dirigé?
- 2. Résumer tous les nœuds
- 3. Comment trouver le chemin le plus long dans un graphique cyclique entre deux nœuds?
- 4. Comment obtenir tous les nœuds non vides de XElement?
- 5. Convertir les attributs de tous les nœuds en nœuds enfants
- 6. Comment interroger tous les nœuds entre deux nœuds d'un arbre?
- 7. Tous les nœuds ayant un attribut
- 8. Extension de tous les nœuds dans dijit.Tree
- 9. xsl pour supprimer les commentaires de tous les nœuds
- 10. Comment trouver tous les nœuds de texte entre les nœuds d'éléments avec Javascript/JQuery?
- 11. Conserver tous les nœuds enfants en retrait dans la liste non ordonnée
- 12. php déplace les nœuds vers le tableau parent
- 13. BlackBerry - Horizontal cyclique centré HorizontalFieldManager
- 14. C# chemin vers l'icône dans les ressources
- 15. Comment parcourir tous les nœuds d'une arborescence YAML dans Ruby?
- 16. Développez tous les nœuds dans SQL Reporting Service?
- 17. Traverser tous les nœuds dans un fichier XML avec VBScript
- 18. Trouver tous les nœuds XML à l'aide coldfusion
- 19. xslt apply-templates sélectionne tous les nœuds texte restants
- 20. Etat ouvert de tous les nœuds dans l'arborescence Flex
- 21. xml parser impossible de lire tous les nœuds du xml
- 22. OpenMPI: Tous les nœuds s'exécutent en tant que nœud 0
- 23. Liste de tous les nœuds d'un cluster Erlang
- 24. XPATH - Sélectionner tous les nœuds enfants avec un attribut spécifique
- 25. XPath: Sélectionnez tous les nœuds suivants jusqu'à un nœud
- 26. Afficher tous les nœuds de cet utilisateur: filtres ou arguments
- 27. Comment désélectionner tous les nœuds d'arborescence dans Ext.tree.TreePanel?
- 28. Ecriture d'un système pour surveiller tous les nœuds d'un cluster
- 29. SiteMap RootNode, obtenir tous les nœuds enfants où rootNode = « Accueil »
- 30. Pourquoi le contrôle TreeView réduit-il tous les nœuds enfants?
Le graphique est-il pondéré ou non? Comment A -> B -> C -> A peut-il être le chemin le plus court? Sauf si vous pouvez avoir des coûts négatifs A -> B -> C sera toujours plus court ... – IVlad
Désolé - oui, le graphique est pondéré et non orienté. La raison pour laquelle il peut être plus court est que vous pourriez avoir A, B, C et D tels qu'il y a des bords: A <-[3]-> B [3], B <-[5]-> C, A <-[3]-> C, B <-[15]-> D et A <-[5]-> D. Dans ce cas , un chemin optimal (non unique) serait A -> B -> C -> A -> D. – Jon