Shortest Path II
Maintenant que vous avez le code pour vérifier si le nœud de destination est présent dans les voisins, vous allez étendre la même fonction pour écrire le code du cas où le nœud de destination n’est pas présent parmi les voisins.
Tout le code à écrire se trouve dans la condition else ; c’est-à-dire si node2 n’est pas dans neighbors.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- À l’aide de
.add(), ajoutez le nœud courantnodeà l’ensemblevisited_nodespour garder une trace des nœuds déjà visités. - Ajoutez à
queueles neighbors du nœud courantnodequi n’ont pas encore été visités. Pour cela, vous devez utiliser la méthode.extend()dequeueavec une compréhension de liste. La méthode.extend()ajoute tous les éléments d’une liste donnée.- L’expression de sortie et la variable d’itération de la compréhension de liste sont toutes deux
n. L’itérable est l’itérateur deneighbors, et la condition est quenne soit pas dans les nœuds visités.
- L’expression de sortie et la variable d’itération de la compréhension de liste sont toutes deux
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
def path_exists(G, node1, node2):
"""
This function checks whether a path exists between two nodes (node1, node2) in graph G.
"""
visited_nodes = set()
queue = [node1]
for node in queue:
neighbors = G.neighbors(node)
if node2 in neighbors:
print('Path exists between nodes {0} and {1}'.format(node1, node2))
return True
else:
# Add current node to visited nodes
____
# Add neighbors of current node that have not yet been visited
queue.extend([____ for ____ in ____ if ____ not in ____])