Shortest Path II
Agora que você já tem o código para verificar se o nó de destino está presente em neighbors, o próximo passo é estender a mesma função para escrever o código da condição em que o nó de destino não está presente em neighbors.
Todo o código que você precisa escrever está no bloco else; ou seja, se node2 não estiver em neighbors.
Este exercício faz parte do curso
Introdução à Análise de Redes em Python
Instruções do exercício
- Usando o método
.add(), adicione o nó atualnodeao conjuntovisited_nodespara acompanhar quais nós já foram visitados. - Adicione os neighbors do nó atual
nodeque ainda não foram visitados àqueue. Para fazer isso, você precisará usar o método.extend()dequeuejunto com uma list comprehension. O método.extend()adiciona todos os itens de uma lista fornecida.- A expressão de saída e a variável iteradora da list comprehension são ambas
n. O iterável é o iterador deneighbors, e a condicional é sennão estiver nos nós visitados.
- A expressão de saída e a variável iteradora da list comprehension são ambas
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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 ____])