My Blog

완전탐색 알고리즘 예제

by kai on 2. August 2019 , No comments

A*의 일반적인 구현은 우선 순위 대기열을 사용하여 확장할 최소(예상) 비용 노드를 반복적으로 선택합니다. 이 우선 순위 대기열을 열린 집합 또는 프린지라고 합니다. 알고리즘의 각 단계에서 가장 낮은 f(x) 값을 가진 노드가 큐에서 제거되고, 해당 이웃의 f 및 g 값이 그에 따라 업데이트되고 이러한 인접가 큐에 추가됩니다. 알고리즘은 목표 노드가 큐의 모든 노드보다 낮은 f 값을 가질 때까지(또는 큐가 비어 있는 때까지) 계속됩니다. [a] 목표의 f 값은 목표의 h가 허용 가능한 추론에서 0이기 때문에 가장 짧은 경로의 비용입니다. A*는 양방향 검색 알고리즘에 맞게 조정할 수도 있습니다. 정지 기준을 위해 특별한주의를 기울여야합니다. [32] 지금까지 설명된 알고리즘은 가장 짧은 경로의 길이만 제공합니다. 실제 단계 시퀀스를 찾기 위해 경로의 각 노드가 이전 단계를 추적하도록 알고리즘을 쉽게 수정할 수 있습니다. 이 알고리즘을 실행한 후 종료 노드는 일부 노드의 선행 노드가 시작 노드가 될 때까지 이전 노드를 가리킵니다.

제한 주위 최고의 경로 찾기 알고리즘 이지만, A * 검색 알고리즘 항상 짧은 경로 생성 하지 않습니다., 그것은 추론에 크게 의존 으로 / 근사 계산 – h 그래서 우리가 대상 셀에 도달 하려는 경우 아래 그림에서와 같이 가정 소스 셀에서 A* 검색 알고리즘은 아래와 같이 경로를 따릅니다. 아래 그림은 유클리드 거리를 휴리스틱으로 고려하여 작성됩니다. 노드가 도로와 연결된 도시이고 h(x)가 대상 지점까지직선 거리인 A* 알고리즘의 예: A* 알고리즘에는 실제 응용 프로그램도 있습니다. 이 예에서 모서리는 철도이고 h(x)는 대상까지의 원 거리(구에서 가능한 가장 짧은 거리)입니다. 이 알고리즘은 워싱턴 DC와 로스앤젤레스 사이의 경로를 찾고 있습니다. 최적의 효율성은 노드 확장 횟수(A*의 주 루프의 반복 수)가 아니라 확장된 노드 집합에 관한 것입니다. 사용 중인 추론이 허용되지만 일관성이 없는 경우 노드를 A*로 여러 번 확장할 수 있으며 최악의 경우 기하급수적으로 횟수가 됩니다. [12] 이러한 상황에서 Dijkstra의 알고리즘은 큰 차이로 A*를 능가할 수 있습니다. 최적의 솔루션을 반환하는 것이 보장되는 경우 검색 알고리즘을 사용할 수 있다고합니다. A*에서 사용하는 추론 함수가 허용되는 경우 A*는 허용됩니다.

이에 대한 직관적인 „증명“은 다음과 같습니다: A*의 시간 복잡성은 추론에 따라 다릅니다. 무한 검색 공간의 최악의 경우 확장된 노드 수는 솔루션 의 깊이(가장 짧은 경로) d: O(bd)에서 지수로 지수가 되며 b는 분기 계수(주당 평균 후속 자 수)입니다. [20] 이것은 목표 상태가 전혀 존재하고 시작 상태에서 도달할 수 있다고 가정합니다. 그렇지 않고 상태 공간이 무한이면 알고리즘이 종료되지 않습니다.

kai완전탐색 알고리즘 예제