始める無料で始める

グラフへの深さ優先探索の実装

この演習では、グラフを走査する深さ優先探索アルゴリズムを実装します。

手順を確認しましょう。

  1. ランダムな頂点から開始する
  2. その頂点を訪問済み頂点リストに追加する
  3. 現在のノードに隣接する各頂点について
    • 訪問済みの場合 -> 無視する
  • 未訪問の場合 -> 再帰的に深さ優先探索を実行する

コードのテスト用に、次のグラフが辞書を使って読み込まれています。

グラフの図。

graph = {
  '0' : ['1','2'],
  '1' : ['0', '2', '3'],
  '2' : ['0', '1', '4'],
  '3' : ['1', '4'],
  '4' : ['2', '3']
}

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

Pythonで学ぶデータ構造とアルゴリズム

コースを見る

演習の手順

  • current_vertexがまだ訪問されていないかどうかを確認してください。
  • current_vertexvisited_verticesに追加してください。
  • 適切な値を渡して、dfs()を再帰的に呼び出してください。

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

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

def dfs(visited_vertices, graph, current_vertex):
    # Check if current_vertex hasn't been visited yet
    if current_vertex not in ____:
        print(current_vertex)
        # Add current_vertex to visited_vertices
        ____.add(____)
        for adjacent_vertex in graph[current_vertex]:
            # Call recursively with the appropriate values
            ____(____, ____, ____)
            
dfs(set(), graph, '0')
コードを編集して実行