Le code est de déterminer un chemin entre deux nœuds pour les graphes orientés. This est le code:Une question de code dans la théorie des graphes de python essais
def find_path(graph, start, end, path=[]):
path = path + [start]
if start == end:
return path
if not graph.has_key(start):
return None
for node in graph[start]:
if node not in path:
newpath = find_path(graph, node, end, path)
if newpath: return newpath
return None
Étant nouveau python, je deux ont des questions petites et insignifiantes. J'espère que cela ne vous dérange pas.
Q1. Que signifie if newpath:
dans la deuxième dernière ligne du code?
Q2. Est-ce que ce code donne chemins possibles dans le graphe orienté?
Merci.
Merci user507787. Pouvez-vous dire quel chemin serait-ce? Serait-ce le chemin possible à partir de la première valeur de la clé rencontrée? – Pupil
Renseignez-vous sur Depth-First-Search et Breadth-First-Search sur Wikipedia. L'algorithme implémenté par le code ci-dessus est DFS, ce qui signifie que si on vous donne un ordre de traversée des arêtes à chaque nœud, il trouvera le chemin avec une séquence associée (m0, m1, m2, ...) où nous choisirons le mo-th edge au début, etc. d'une manière telle que la séquence soit la plus petite possible dans l'ordre lexicographique. – user507787
D'accord. Merci :) – Pupil