J'utilise le paquet networkx de Python.Python: Comment trouver si un chemin existe entre 2 nœuds dans un graphique?
Répondre
>>> import networkx as nx
>>> G=nx.empty_graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> G.add_edge(4,5)
>>> nx.path.bidirectional_dijkstra(G,1,2)
(1, [1, 2])
>>> nx.path.bidirectional_dijkstra(G,1,3)
(2, [1, 2, 3])
>>> nx.path.bidirectional_dijkstra(G,1,4)
False
>>> nx.path.bidirectional_dijkstra(G,1,5)
False
>>>
Vous pouvez également utiliser le résultat comme une valeur booléenne
>>> if nx.path.bidirectional_dijkstra(G,1,2): print "path exists"
...
path exists
>>> if nx.path.bidirectional_dijkstra(G,1,4): print "path exists"
...
>>>
dijkstra_path(G, source, target)
Renvoie le chemin le plus court de source vers la cible dans un graphe pondéré G.
Utilisez
shortest_path(G, source, target)
ou l'une des méthodes Shortest Path. Restez à l'écart des méthodes qui renvoient des chemins entre tous les nœuds, mais si vous avez simplement deux nœuds spécifiques à tester pour la connectivité.
En utilisant une structure de données de jeu disjoints:
Créer un singleton pour chaque sommet du graphe, puis les syndicats ensembles contenant chacun des deux sommets pour chaque bord dans le graphique. Enfin, vous savez qu'un chemin existe entre deux sommets s'ils sont dans le même ensemble.
Voir la page wikipedia sur la structure de données des ensembles disjoints.
Ceci est beaucoup plus efficace que d'utiliser un algorithme de recherche de chemin.
Pour vérifier s'il y a un chemin entre deux noeuds dans un graphe -
>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> nx.has_path(G,1,3)
True
>>> G.add_edge(4,5)
>>> nx.has_path(G,1,5)
False
Pour plus d'informations, s'il vous plaît se référer has_path — NetworkX 1.7 documentation
- 1. Comment trouver le chemin le plus long dans un graphique cyclique entre deux nœuds?
- 2. Comment vérifier si un chemin réseau existe?
- 3. Existe-t-il un moyen portable de trouver si un chemin est absolu, en utilisant Python?
- 4. Comment puis-je trouver le chemin le plus court dans un graphique, en ajoutant le moins de nouveaux nœuds?
- 5. Comment trouver le chemin le plus long entre deux nœuds dans Lisp?
- 6. Vérifiez si un exécutable existe dans le chemin d'accès Windows
- 7. Dans un graphique, comment trouver le nœud le plus proche d'un groupe de nœuds?
- 8. Comment vérifier si un chemin est un chemin absolu ou un chemin relatif en mode multiplateforme avec Python?
- 9. trouver si un entier existe dans une liste d'entiers
- 10. Python: trouver un élément dans un tableau
- 11. XPath: Comment vérifier si un attribut existe?
- 12. Vérifier si un chemin est valide en Python
- 13. Déterminez si un chemin dans un NSString est dans un répertoire ou un fichier?
- 14. Chemin le plus court (nombre de nœuds le plus court) pour un graphique non pondéré
- 15. Comment détecter si un graphique sera tramé?
- 16. Comment vérifier si un répertoire existe avant d'insérer un fichier
- 17. Comment valider un chemin dans ASP.NET MVC 2?
- 18. python analyse un bloc de texte entre 2 lignes connues
- 19. Java: Ajout de nœuds à un bogue graphique
- 20. Comment trouver mon chemin python en utilisant python?
- 21. vérifier si un nœud xml existe dans ASP Classic
- 22. comment trouver fifférence entre 2 dates dans DB2
- 23. Comment savoir si un fichier existe en C#/.NET?
- 24. Indépendant réglé dans un graphique
- 25. Recherche de cycle de 3 nœuds (ou triangles) dans un graphique
- 26. Déterminer si un chemin est un chemin réseau VBA
- 27. RaphaelJS - Trouver un point dans un chemin en animant
- 28. Comment déterminer si un fichier existe dans un SPFolder SharePoint
- 29. Comment vérifier si un fichier existe dans un fichier war?
- 30. Comment vérifier si un fichier existe dans un fichier makefile
si chemin n'existe pas entre 2 noeuds donnés? Qu'est-ce que la fonction retourne alors? – Bruce
Je ne veux pas trouver le chemin le plus court. Je veux juste savoir si un chemin existe entre 2 nœuds donnés. – Bruce