アルゴリズム勉強 #2 幅優先探索(BFS)をpythonで実装する
2021.10.24
今回は幅優先探索について勉強しました。
幅優先探索とは?
- 経路探索を行いたいときなどに使う
- スタート地点から近い順に探索していく(=幅優先)
試したコード
pythonfrom collections import deque n = 4 nodes =[[1, 2], [2, 3], [3, 4], [4, 2]] graph = [[] for _ in range(n+1)] for i in range(len(nodes)): a, b = nodes[i] graph[a].append(b) graph[b].append(a) # graph[i] = [X, X...] #i地点はX, X, ...とつながっているというリスト # スタートは地点1 dist = [-1] * (n+1) # dist: dist[i]はスタート地点(地点1)から地点iまでの距離 dist[0] = 0 dist[1] = 0 # dist[1]は地点1から地点1までなので距離0 d = deque() d.append(1) while d: v = d.popleft() for i in graph[v]: if dist[i] != -1: continue dist[i] = dist[v] + 1 d.append(i) ans = dist[1:] print(*ans, sep="\n")