Table of Contents
알고리즘 A* 및 Dijkstra의 기본은 pathfinding 및 그래프 트래버스에 있습니다. 그들은 항해 시스템, 로봇 및 네트워크 라우팅에서 널리 사용됩니다. 수학 기반을 이해하는 것은 성능과 응용성을 최적화하는 데 도움이됩니다.
그래프 대표
두 알고리즘은 노드(변환) 및 가장자리로 구성된 그래프에서 동작합니다. Edge는 비용, 거리 또는 시간을 나타내는 무게가 있을 수 있습니다. 그래프는 지시되거나 비접촉될 수 있으며, 무게는 보통 비 부정적입니다.
비용 기능 및 헤리티지
이 알고리즘의 핵심은 각 노드에 도달하는 비용을 계산하는 것이 포함됩니다. Dijkstra의 알고리즘은 시작 노드에서 누적 비용을 사용합니다. A*는 목표에 남은 비용의 심각성 견적을 추가합니다. 허리적은 허용되어야하며, 실제로 비용을 초과하지 않는 것을 의미해야합니다.
수학 정립
G = (V, E)는 vertices V와 edges E와 그래프가 될 수 있습니다. 각 가장자리 (u, v)에는 무게 w (u, v)가 있습니다. 목표는 노드의 목표 노드 t에 시작된 경로를 찾을 수 있습니다.
Dijkstra의 알고리즘은 d(s) = 0 및 d(v) = ∞의 v △ s로 초기화 된 각 vertex v의 거리 d(v)를 업데이트합니다. 그것은 가장 작은 d(v)로 vertex를 선택하여 이웃 가장자리를 편안하게합니다.
A*는 v에서 t로 비용을 추정하는 헤리티지 h(v)를 통합하여 이것을 수정합니다. 우선 함수는 f(v) = d(v) + h(v)가 됩니다. 알고리즘은 가장 낮은 f(v)를 기반으로 노드를 확장합니다.
Algorithm 효율성
효율성은 사용되는 데이터 구조에 달려 있습니다. Dijkstra의 알고리즘은 O(|E|+|V|LOG|V|)의 우선 순위를 가진 복잡한 시간을 가지고 있습니다. A*는 설계가 잘 설계되어 노드의 수를 늘리면 더 빠르게 될 수 있습니다.
- 비 부정적인 무게를 가진 도표
- A*에 대한 허용 가능한 헤리티지
- 노드 선택에 대한 우선 순위
- 비용을 업데이트하기 위해 가장자리의 Relaxation