시작하기무료로 시작하기

Shortest Path II

이제 목적지 노드가 이웃(neighbors)에 존재하는지 확인하는 코드를 작성하셨으니, 다음으로는 목적지 노드가 이웃에 없을 때를 처리하도록 같은 함수를 확장해 보겠습니다.

작성해야 할 코드는 모두 else 조건문 안에 있습니다. 즉, node2neighbors없을 때의 처리입니다.

이 연습은 강의의 일부입니다

Python으로 시작하는 네트워크 분석

강의 보기

연습 안내

  • .add() 메서드를 사용해 현재 노드 node를 집합 visited_nodes에 추가하여 이미 방문한 노드를 기록하세요.
  • 아직 방문하지 않은 현재 노드 node의 이웃을 queue에 추가하세요. 이를 위해 리스트 컴프리헨션과 함께 queue.extend() 메서드를 사용해야 합니다. .extend() 메서드는 주어진 리스트의 모든 항목을 이어 붙입니다.
    • 리스트 컴프리헨션의 output expressioniterator variable은 모두 n이고, iterableneighbors의 이터레이터입니다. 조건은 n이 방문한 노드에 없을 때입니다.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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 ____])
코드 편집 및 실행