Shortest Path II
이제 목적지 노드가 이웃(neighbors)에 존재하는지 확인하는 코드를 작성하셨으니, 다음으로는 목적지 노드가 이웃에 없을 때를 처리하도록 같은 함수를 확장해 보겠습니다.
작성해야 할 코드는 모두 else 조건문 안에 있습니다. 즉, node2가 neighbors에 없을 때의 처리입니다.
이 연습은 강의의 일부입니다
Python으로 시작하는 네트워크 분석
연습 안내
.add()메서드를 사용해 현재 노드node를 집합visited_nodes에 추가하여 이미 방문한 노드를 기록하세요.- 아직 방문하지 않은 현재 노드
node의 이웃을queue에 추가하세요. 이를 위해 리스트 컴프리헨션과 함께queue의.extend()메서드를 사용해야 합니다..extend()메서드는 주어진 리스트의 모든 항목을 이어 붙입니다.- 리스트 컴프리헨션의 output expression과 iterator variable은 모두
n이고, iterable은neighbors의 이터레이터입니다. 조건은n이 방문한 노드에 없을 때입니다.
- 리스트 컴프리헨션의 output expression과 iterator variable은 모두
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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 ____])