BFS(幅優先ナビゲーション)
グラフィックの参照
幅優先ナビゲーション(BFS:Bredth-First Search)
BFSの利点
BFSの欠点
BFSの実装
graph = dict()
graph['A'] = ['B', 'C']
graph['B'] = ['A', 'D']
graph['C'] = ['A', 'G', 'H', 'I']
graph['D'] = ['B', 'E', 'F']
graph['E'] = ['D']
graph['F'] = ['D']
graph['G'] = ['C']
graph['H'] = ['C']
graph['I'] = ['C', 'J']
graph['J'] = ['I']
def bfs(graph, start_node):
visited = list()
need_visit = list()
need_visit.append(start_node)
while need_visit:
node = need_visit.pop(0)
if node not in visited:
visited.append(node)
need_visit.extend(graph[node])
return visited
print(bfs(graph, 'A'))
~~>
['A', 'B', 'C', 'D', 'G', 'H', 'I', 'E', 'F', 'J']
start node A
は、bfs関数を最初に追加し、need_visit
に追加した.node
はAを含み、最初のvisited
はAを持たないので、need_visit
では図['A']の値が拡張される.(-> ['B', 'C']
) この過程はずっと繰り返される.
時間の複雑さ
V
E
Reference
この問題について(BFS(幅優先ナビゲーション)), 我々は、より多くの情報をここで見つけました https://velog.io/@ksj5738/BFS-너비-우선-탐색テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol