始める無料で始める

Shortest Path I

近傍ノードの見つけ方を応用して、ネットワーク内で経路を探してみましょう。2つのノード間の経路探索アルゴリズムの1つに「幅優先探索(BFS)」があります。BFS では、特定のノードから開始し、その近傍ノード、さらにその近傍ノードへと順にたどって、目的地のノードが見つかるまで探索します。

経路探索アルゴリズムは、ノードの重要度を評価する別の視点を与えてくれるため重要です。この点は後の演習で確認します。

この3問の演習では、最終的な BFS アルゴリズムに向けて段階的に組み立てていきます。問題は3つのパートに分かれており、順に解いていくことで BFS の最初の実装に到達できます。

この演習はコースの一部です

Pythonで学ぶネットワーク分析入門

コースを見る

演習の手順

  • Gnode1node2 の3つの引数を取り、2つのノード間に経路が存在するかどうかを返す関数 path_exists() を作成します。
  • 訪問予定ノードのキューを、最初のノード node1 で初期化します。queue はリストにしてください。
  • queue 内のノードを順に反復処理します。
  • グラフ G.neighbors() メソッドを使って、そのノードの近傍ノードを取得します。
  • 目的地のノード node2neighbors の集合に含まれているか確認し、含まれていれば True を返します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Define path_exists()
def ____:
    """
    This function checks whether a path exists between two nodes (node1, node2) in graph G.
    """
    visited_nodes = set()

    # Initialize the queue of nodes to visit with the first node: queue
    queue = ____

    # Iterate over the nodes in the queue
    for node in ____:

        # Get neighbors of the node
        neighbors = ____

        # Check to see if the destination node is in the set of neighbors
        if node2 in ____:
            print('Path exists between nodes {0} and {1}'.format(node1, node2))
            return ____
            break
コードを編集して実行