DFS(Depth-First Search, 깊이 우선 탐색)
- 그래프 탐색
- 임의의 노드에서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법
- 구현이 너비 우선 탐색(BFS) 보다 간단함, 단순 검색 속도는 너비 우선 탐색(BFS) 보다 느림
- 전위 순회 등 트리 순회는 모두 DFS의 한 종류
- 해가 없는 경우에 빠질 가능성이 있음
- 깊이 우선 탐색은 해를 구하면 탐색이 종료되므로, 구한 해가 최단 경로가 된다는 보장이 없음
- 어떤 노드를 방문했었는지 여부를 반드시 검사 해야 한다(check, visited 등)
- 1)스택을 사용 2)재귀사용
예시
BFS(Breadth-First Search, 너비 우선 탐색)
- 그래프 탐색
- 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 주로 사용
- 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법
- BFS는 재귀적으로 동작하지 않는다
- 선입선출(FIFO) 원칙으로 탐색
- 'Prim', 'Dijkstra' 알고리즘과 유사
- 큐에 다음에 탐색할 정점들을 저장해야 하므로 저장공간이 많이 필요하다.
- 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 큐를 사용
예시
'알고리즘' 카테고리의 다른 글
버블정렬, 선택정렬, 삽입정렬, 힙정렬, 퀵정렬, 병합정렬 (0) | 2021.09.23 |
---|---|
[최단경로]플로이드 와샬, 다익스트라, 최소 신장트리(프림, 크루스칼) (0) | 2021.09.15 |
[알고리즘]비트마스크(BitMask), 비트조작 - 파이썬 (0) | 2021.03.24 |
[알고리즘]MST(Minimum Spanning Tree, 최소신장트리), 파이썬 (0) | 2021.03.13 |