A* Search

An optimization of Dijkstra's algorithm that uses a heuristic function to prioritize paths. It is widely used in pathfinding for games and navigation systems

Article body and graph labels may still appear in Russian where English translations have not been added yet.
📖2 min read📊Level 7📅April 16, 2026

Loading map...

A* (A-star) — алгоритм поиска кратчайшего пути в графе, сочетающий принцип алгоритма Дейкстры с эвристической оценкой расстояния до цели. Разработан Питером Хартом, Нилсом Нильссоном и Бертрамом Рафаэлем в 1968 году. Является оптимальным и полным при допустимой (admissible) эвристике.

Принцип работы

A* оценивает каждую вершину v функцией f(v) = g(v) + h(v), где:

  • g(v) — реальная стоимость пути от старта до v
  • h(v) — эвристическая оценка расстояния от v до цели
  • f(v) — полная оценка; алгоритм всегда расширяет вершину с минимальным f

Алгоритм сохраняет открытый список (вершины для рассмотрения, priority queue) и закрытый (уже обработанные). На каждом шаге берётся вершина с минимальным f, проверяются её соседи.

Требования к эвристике

  • Admissible (допустимая) — h(v) никогда не переоценивает истинное расстояние: h(v) ≤ d*(v). Это гарантирует оптимальность пути
  • Consistent (согласованная) — h(u) ≤ cost(u,v) + h(v) для любого ребра. Более сильное условие, гарантирует монотонность

Примеры эвристик: Евклидово расстояние √[(x₁−x₂)²+(y₁−y₂)²] для 2D-сетки, Манхэттенское расстояние |x₁−x₂|+|y₁−y₂| для движения по четырём направлениям.

Применение

A* — стандарт в игровом AI для нахождения пути персонажей. Используется в навигационных системах (Google Maps, Яндекс.Навигатор) вместе с иерархическими улучшениями. Применяется в робототехнике для планирования маршрутов. На больших графах используют A* с «jump point search» или bidirectional A* для ускорения.