-> A B C D G H I E F J
-> A B D E F C G H I J
def bfs(graph, start_node):
visit = list()
queue = list()
queue.append(start_node)
while queue :
node = queue.pop(0)
if node not in visit :
visit.append(node)
queue.extend(graph[node])
return visit
def dfs(graph, start_node):
visit = list()
stack = list()
stack.append(start_node)
while stack :
node = stack.pop()
if node not in visit :
visit.append(node)
stack.extend(graph[node])
return visit
DFS
BFS
깊이 우선 탐색(DFS)으로 경로를 검색할 경우 처음으로 발견되는 해답이 최단거리가 아닐 수 있음.
너비 우선 탐색(BFS)으로 현재 노드에서 가까운 곳부터 찾기 때문에경로를 탐색 시 먼저 찾아지는 해답이 곧 최단거리
import sys
sys.serrecursionlimit
BFS
DFS
https://devuna.tistory.com/32
https://itholic.github.io/python-bfs-dfs/