...
깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘으로 스택 자료구조(혹은 재귀함수)를 이용한다.
def dfs(graph, node, visited):
print(node, visited)
visited[node] = True
for neighbor in graph[node]:
if visited[neighbor] == False:
dfs(graph, neighbor, visited)
dfs(graph, 1, visited)
스택을 통한 구현 방법도 있지만 재귀를 사용하면 코드의 가독성을 높인다.
BFS는 너비 우선 탐색이라고도 부르며, 그래프에 시작 노드로부터 가까운 노드부터 우선적으로 탐색하는 알고리즘으로 큐 자료구조를 이용한다.
인접 노드를 우선으로 탐색하기 때문에 목적지와 가까운 노드를 순차적으로 탐색한다.