Algorithm 2

깊이 우선 탐색 (Depth-First Search)

그래프 자료구조를 탐색하는 두 가지 알고리즘이 있다. 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)이다. DFS란? 깊이 우선 탐색은 그래프를 탐색할 때 시작점에 해당하는 분기를 모두 탐색하고 탐색이 끝나면 다음 분기로 넘어가 탐색을 반복하는 방법이다. BFS가 넓게 탐색했다면, DFS는 깊게 탐색하는 것이다. DFS의 장점은 현재 분기에 있는 노드들만 저장하면 되기 때문에 큰 저장공간을 필요로 하지 않는다. 또한 탐색하고자 하는 노드가 시작점으로부터 깊은 곳에 있다면 더 짧은 시간에 탐색을 완료할 수 있다. 하지만 간단한 탐색의 경우 BFS보다 시간이 더 소요된다. PSEUDOCODE DFS를 구현하는 방법에는 두 가지 방법이 있다. 하나는 스택(Stack)을 사용하는 것이고, 또 하나는 순환 호..

너비 우선 탐색 (Breadth-First Search)

그래프 자료구조를 탐색하는 두 가지 알고리즘이 있다. 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)이다. BFS란? 너비 우선 탐색은 시작점으로부터 인접한 꼭짓점들을 탐색하는 방법이다. 시작점으로부터 가까운 점들 먼저 탐색하기에 뻗어나가는 모습이 된다. BFS를 사용하는 경우는, 두 점 사이의 최단경로를 찾을 때 사용된다. 시작점으로부터 가까운 점들을 우선으로, 너비를 이용하여 탐색하기에 한 개 이상의 경로가 존재하더라도, 경로가 존재하기만 한다면 최단경로를 찾을 수 있다. 대신 BFS는 재귀호출을 할 수 없기에 탐색할 꼭짓점들을 큐(Queue)에 담기 위한 더 큰 저장공간이 필요하다. 또한 꼭짓점의 수가 증가할수록 탐색해야 하는 꼭짓점의 수 또한 증가하기에, 꼭짓점이 많은 그래프에서 실행할 때는 ..