Page 17 -
P. 17

1.2       알고리즘 예제(1): 깊이 우선 탐색과                                                   1
                                                                   A LG O RI T HM  &  D AT A  S TR U CT UR E S



                                너비 우선 탐색                                                              알고리즘이란?



                    앞으로 여러 문제를 제시하고 문제를 풀기 위한 알고리즘을 살펴볼 텐데, 우선 몇몇 알고리즘을
                    간단히 설명하겠습니다. 다양한 알고리즘의 기초가 되는 ‘탐색’부터 시작합시다.





                    1.2.1  빈 칸 채우기 퍼즐로 배우는 깊이 우선 탐색


                    그림 1-3과 같은 빈 칸 채우기 퍼즐로 깊이 우선 탐색(depth-first search, DFS)을 배워 봅시다. 빈 칸
                                                                                          1
                    채우기 퍼즐은 계산식이 성립하도록 네모 칸에 0에서 9 사이의 숫자를 채우는 퍼즐입니다.  단,
                    각 줄 처음에 있는 네모 칸에는 0을 넣으면 안 됩니다.


                       그림 1-3 빈 칸 채우기 퍼즐










                    깊이 우선 탐색은 무수한 선택지 중에서 무작정 값을 정해 풀어 보는 행위를 반복합니다. 하다가
                    막히면 한 단계 돌아가서 다른 선택지를 확인해 봅니다. 그림 1-3 왼쪽 퍼즐을 깊이 우선 탐색으
                    로 풀어 보면 그림 1-4와 같습니다. 우선 오른쪽 위 칸에 1을 넣어 봅니다. 그리고 그 아래 칸도
                    1이라고 가정합니다. 하지만 그림 1-4처럼 파란색 3과 모순됩니다. 모순을 발견하면 한 단계 되
                    돌아가서 다음 숫자를 시험해 봅니다. 이러한 탐색을 반복하는 것입니다.










                    1   빈 칸 채우기 퍼즐은 보통 답이 딱 하나만 있도록 만듭니다.

                                                                                                  033
   12   13   14   15   16   17   18   19   20   21   22