탐색(Search)란 많은 양의 데이터 중 원하는 데이터를 찾는 과정
: 깊이 우선 탐색 이라고 부르며 깊은 부분을 우선적으로 탐색하는 알고리즘
탐색 시작 노드를 스택에 삽입하고 방문 처리
스택의 최상단 노드에 방문하지 않은 노드가 하나라도 있으면 스택에 넣고 방문 처리,
없다면 스택에서 최상단 노드를 꺼내기
2번의 과정을 수행할 수 없을 때까지 반복
def DFS(graph, root):
visited = []
stack = [root]
while stack:
n = stack.pop()
if n not in visited:
visited.append(n)
stack += graph[n] - set(visited)
return visited
print(DFS(graph_list, root_node))
: 너비 우선 탐색 이라고 부르며 가까운 노드부터 우선적으로 탐색하는 알고리즘
탐색 시작 노드를 큐에 삽입하고 방문 처리
큐에서 노드를 꺼낸 뒤 해당 노드의 인접 노드 중 방문하지 않은 노드를 삽입하고 방문 처리
2번의 과정을 수행할 수 없으 ㄹ때까지 반복
def BFS(graph, root):
visited = []
queue = deque([root])
while queue:
n = queue.popleft()
if n not in visited:
visited.append(n)
queue += graph[n] - set(visited)
return visited
print(BFS(graph_list, root_node))