Basic Search Method: Iterative Deepening Search
|
반복적으로 깊게 내려가는 방식에 대한 설명 |
|---|
|
Iterative Deepening Search라고 불리우는 이 방식은 반복적으로 계속 한단계씩
내려가면서 답을 찾는 방식입니다. 이 방식은 기본적인 Breadth-first Search
와 Depth-first Search의 좋은점을 결합한 것이지요. 이 방식은 답을 찾는면에
의해서 완벽하고 최상의 답을 찾을수 있습니다. 여기서 완벽하다는 뜻은
여기에 검색 하는곳을 완벽하게 다 검사해보는것이고. 그 중에서 여러게의
답이 있을때, 최상의 답을 구할수 있다는 것 입니다. 반복적으로 내려 간다는
의미는 검색 장소에 있어서, 검색 했던 곳을 또 한다는 뜻이 있습니다.
검색 했던 곳을 또 하면서 내려가면 시간이 소비가 많이 될텐데, 검색하는
장소는 깊이 내려 가면서 많은 곳을 검색해야 하는 시간때문에 실제 시간은
Breadth-First와 같이 나옵니다.
|
|
Function 과 그림의 예제 |
|---|
|
function Iterative-Deepening-Search(problem) returns a solution sequence
|
|
|
|
위에 있는 함수는 Depth-Limited-Search를 사용하는 것입니다. 다만 여기서
깊이의 한계를 무한으로 바꾸는 것입니다. 무한 = ∽
|
|
이 코드는 제가 여기에 대한 예제를 lisp으로 만든것입니다. Common-lisp
으로 위에서 부터 하나씩 Evaluate해 나가시면서 사용할수 있습니다. Iterative
deepening search와 Common-lisp이 주는 것과 비교할수 있도록 만들었습니다.
|
|---|
|
(DEFUN ITERATIVE-DEEPENING (FIND-THIS FROM-HERE)
|
|
다른 검색 방법들과 비교 | ||||||
|---|---|---|---|---|---|---|
|
Criterion |
Breadth-First |
Uniform-Cost |
Depth First |
Depth-Limited |
Iterative Deepening |
Bidirectional (if applicable) |
|
Time(시간)
|
bd
|
bd
|
bm
|
bl
|
bd
|
bd/2
|
|
여기서의 b는 나누어지는 가지 수. (branching factor)
|
||||||
이 자료는 Artificial Intelligence, A Modern Approach에서 공부한 내용중의 하나를 한글로 쓴것입니다. 참고로 figure 3.16 그림은 책 79쪽에서 복사한 내용입니다. 그리고 코드 예제는 제가 이부분을 다른 분들에게 설명하기 위해 만든 예제입니다.
여기에 대한 질문이 있으시면 kee@unforgettable.com 으로 메일주시면 답변드리겠습니다.