728x90
반응형
BFS & DFS
1. 깊이 우선 탐색(DFS: Depth-First Search)
노드를 방문할 때 마다 인접한 노드를 모두 방문한다., Stack 이나 재귀로 구현
모든 경로를 방문해야 할 경우 사용에 적합
2. 너비 우선 탐색(BFS: Breadth-First Search)
레벨 단위로 노드를 방문한다., Queue로 구현
최소 비용(즉, 모든 곳을 탐색하는 것보다 최소 비용이 우선일 때)에 적합
3. DFS & BFS를 슈도 코드로 나타내기
-
깊이우선탐색(DFS)
// DFS - pseudo code // 1. 시작할 노드를 스택에 push 한다. // 2. 스택에서 노드를 하나 pop한다. // 3. If pop한 노드와 인접한 노드가 있는 지 확인한다. // 3-1. pop한 노드와 인접한 노드를 스택에 push한다. (이미 push/pop 했던 노드는 push하지 않는다.) // 4. else pop한 노드를 출력한다. // 5. 2번부터 Queue가 비워질 때 까지 반복한다.
// DFS with Recursion // 1. 현재 노드가 null 이면 종료한다. // 2. 현재 노드를 출력한다. // 2. If pop한 노드와 인접한 노드가 있는 지 확인한다. // 2-1. 재귀 함수를 호출하여 현재 노드를 매개변수로 넘긴다.
-
너비우선탐색(BFS)
/// BFS - pseudo code // 1. 시작할 노드를 Queue에 push 한다. // 2. Queue에서 노드를 하나 pop 한다. // 3. If pop한 노드와 인접한 노드가 있는 지 확인한다. // 3-1. pop한 노드와 인접한 노드를 스택에 push한다. (이미 push/pop 했던 노드는 push하지 않는다.) // 4. else pop한 노드를 출력한다. // 5. 2번부터 Queue가 비워질 때 까지 반복한다.
반응형
'Programming > Algorithm' 카테고리의 다른 글
[알고리즘] 트리와 이진트리 (0) | 2020.06.13 |
---|---|
[알고리즘] 6장 힙 정렬(Heap Sort) (0) | 2020.05.21 |
[알고리즘] 5강 빠른 정렬(Quick Sort) (0) | 2020.03.18 |
[알고리즘] 4강 병합정렬 (merge sort) (0) | 2020.03.13 |
[알고리즘] 3강 기본적인 정렬 알고리즘 정리 (0) | 2020.03.04 |