‘깊이 우선 탐색’은 시작점에서 ‘깊이 방향’으로 탐색하는 것입니다. 왼쪽에 있는 것부터 탐색을 한다고 했을 때, 목적지가 ❺라고 한다면 ‘❶-❸-❹-❷-❺’ 순서로 탐색하는 것입니다. 손가락으로 하나하나 짚어보며 다음 길을 따라가 보세요. 먼저 출발지에서 갈림길 ❶까지 갑니다. 글씨를 읽을 때 처럼 왼쪽부터 탐색한다면 ❶에서 ❸으로 갑니다. ❸은 길이 막혀 있어 더이상 탐색할 수 가 없네요. 그러면 다시 ❶로 돌아간 후, 아직 가보지 않은 ❹를 갑니다. ❹에서도 더 탐색할 곳이 없으면 다시 돌아갑니다. ❶에서 갈 수 있는 길은 모두 가보았으므로 출발지로 돌아가서 ❷로 갑니다. ❷에서 갈 수 있는 곳은 ❺ 하나뿐입니다. ❺를 탐색하였더니 목표상태에 도달했습니다!
‘너비 우선 탐색’은 ‘너비 방향’으로 탐색하는 것입니다. 시작점에서 갈 수 있는 길을 모두 가본 후, 다음 갈림길을 방문하는 예로 생각할 수 있습니다. 예를 들어 목적지가 ❺라면, ‘❶-❷-❸-❹-❺’ 순서로 탐색하는 것입니다. 마찬가지로 손가락으로 짚어보며 길을 따라가 보세요. 너비 방향이란 가로 방향입니다. 보통 왼쪽에서 오른쪽으로 탐색합니다. 그러므로 가장 먼저 방문할 곳은 ❶입니다. ❶을 탐색하였더니 목표 상태가 아니네요. 그러면 다시 출발지로 돌아가 ❷를 탐색합니다. 아직 문제가 해결되지 않았으므로 이번에는 ❶과 ❷보다 더 깊은 곳을 탐색해보겠습니다. 마찬가지로 너비 방향으로 탐색합니다. 다시 ❶로 돌아가 ❸을 탐색합니다. ❸에서도 문제가 해결되지 않으면 ❶로 돌아간 후 ❹를 갑니다. ❹도 목표 상태가 아니므로 초기 상태(출발지)로 돌아갑니다. 이번에는 ❷에서 다음 깊이로 가보겠습니다. ❷에서 갈 수 있는 길은 ❺입니다. ❺를 탐색하였더니 목표상태에 도달했습니다!
어떤 문제인지에 따라 깊이 우선 탐색이 필요할 수도 있고, 때로는 너비 우선 탐색이 필요할 수도 있습니다. 두 가지 방법의 장점만 취한 또 다른 방법을 사용하기도 합니다.