見出し画像

幅優先探索について説明

幅優先探索(Breadth-First Search, BFS)はグラフや木構造などのデータ構造を探索するためのアルゴリズムです。

BFSは、最も近い頂点から順に探索します。

以下はPythonによるBFSの例です。

from collections import deque

def BFS(graph, start):
    # graphは隣接リストで表現されたグラフ、startは探索を開始する頂点
    visited = set() # 訪れた頂点を保存するset
    queue = deque([start]) # キュー
    while queue:
        vertex = queue.popleft() # キューから取り出す
        if vertex not in visited:
            visited.add(vertex) # 訪れたことを記録
            queue.extend(graph[vertex] - visited) # 訪れていない頂点をキューに追加
    return visited

使用例は下記に記載

graph = {0: set([1, 2]), 1: set([0, 3]), 2: set([0, 4]), 3: set([1]), 4: set([2])}
result = BFS(graph, 0)
print(result) # output: {0, 1, 2, 3, 4}

上記の例では、隣接リストで表現されたグラフを引数に、頂点0からBFSを実行し、訪れた頂点をsetで返しています。

BFSは、最短経路問題や、グラフの接続性の判定などにも使用されます。

この記事が気に入ったらサポートをしてみませんか?