반복 심화 깊이 첫 번째 검색은 실제 응용 프로그램에서 직접 사용되지 않을 수 있지만 무한 검색 공간에서 검색을 반복적으로 진행하는 기술은 매우 유용하며 많은 AI 응용 프로그램에 적용 될 수 있습니다. 구문을 이해하고 C가 학습하는 첫 번째 언어인 경우 예제를 살펴 보겠습니다. 연산자는 컴파일러가 작업을 수행하도록 지시하는 기호입니다. 아마도 가장 간단한 예는 + 연산자입니다. 이제 깊이 제한 검색의 아이디어를 가지고, 반복 심화 깊이 첫 번째 검색은 하나의 루프 떨어져있습니다! IDDFS에 대한 의사 코드는 아래와 같습니다 – 위의 예제에서 DLS를 수행하여 DLS를 이해합시다. 깊이 제한 검색에서 먼저 얼마나 깊은 (또는 루트에서 얼마나 멀리) 우리가 갈 것인가에 대한 제약 조건을 설정합니다. 우리의 한계 (깊이)는 2라고 가정 해 봅시다. 이제 위의 다이어그램에서 손을 놓아 깊이 3과 4의 노드를 덮습니다. 이제 나머지 노드를 살펴보면 일반 DFS가 노드를 방문하는 순서를 알 수 있습니까? 다음과 같이 될 것입니다 – 코드에 라이브러리를 포함시켜 이러한 라이브러리를 사용할 수 있습니다. 이 예제를 예로 들어 보겠습니다: 반복적인 심화 검색에서 맨 아래 수준의 노드는 한 번 확장되고, 아래쪽에 있는 노드는 두 번 확장되며, 검색 트리의 루트까지 확장되어 d+1 배 확장됩니다. 따라서 반복 심화 검색의 총 확장 수는 참조: https://en.wikipedia.org/wiki/Iterative_deepening_depth-first_search 시작 노드(A)는 깊이0입니다.

목표 노드(R)는 깊이가 4입니다. 위의 예제는 유한 트리이지만 위의 트리를 무한히 긴 트리로 간주하고 깊이 = 4까지만 다이어그램에 표시됩니다. 이제 반복 심화 깊이 첫 번째 검색에 대 한 코드를 작성할 수 있어야 합니다. 그것을 시도, 난 당신이 😉 수 있습니다 확신 당신은 내 코드를 참조할 수 있습니다 당신이 붙어 얻을 경우 – 이 예제는 시각적으로 디버깅하기 쉽지만, 일부 코드는 길고 믿을 수 없을만큼 복잡한 줄의 수천이며, C는 당신이 잘못 된 것을 찾는 데 도움이되지 않습니다. 대신 C는 당신에게 바보 같은 대답과 이유를 찾을 수있는 방법을 제공합니다. 아니면 거기에 있습니까? 이 극적인 소리 하는 동안, 그것은 일반적으로 하지 않습니다. 컴퓨터를 고장나게 하지 는 않습니다. 하지만 몇 가지 이상한 버그로 끝날 수 있습니다. 이 예를 들어, 반복 심화 깊이 첫 번째 검색 (IDDFS) BFS와 DFS의 하이브리드입니다.

IDDFS에서는 특정 “제한된 깊이”까지 DFS를 수행하고 모든 반복 후에이 “제한된 깊이”를 계속 증가시다. 데이터는 서로 다른 유형으로 제공됩니다. 어떤 유형의 데이터로 작업하고 있는지 아는 것이 중요합니다. 예를 들어 숫자 5는 숫자 5와 마찬가지로 정수일 수 있으며 문자(작성된 문자 5)가 될 수 있습니다. 여기에 문제가 있음을 이미 알 수 있습니다. 출력은 확실히 의미가 없습니다! 그래프를 통과하는 방법에는 BFS와 DFS라는 두 가지 일반적인 방법이 있습니다. 높이와 너비가 큰 나무(또는 그래프)를 고려할 때 BFS와 DFS는 다음과 같은 이유로 인해 매우 효율적이지 않습니다. 이제 혼동이 없으며 변수 번호에 정수 값 5가 할당됩니다.

C는 원하는 방식으로 작동하기 위해 어떤 유형이 예상되는지 알려주어야 합니다. IDDFS는 깊이 우선 검색의 공간 효율성과 폭 우선 검색의 빠른 검색(루트에 가까운 노드)을 결합합니다.