Изменения

Перейти к: навигация, поиск

Алгоритм A*

303 байта убрано, 08:52, 22 декабря 2011
Нет описания правки
Алгоритм '''А*'''("A star", "А звёздочка") {{---}} информированный алгоритм поиска, который находит во взвешенном графе маршрут наименьшей стоимости от начальной вершины до выбранной конечной.
==ЭвристикаОписание==В процессе работы алгоритма для вершин используется рассчитывается функция <tex>f(v) = g(v) + h(v)</tex>, где *<tex>g(v)</tex> {{--- }} наименьшая стоимость пути в <tex>v</tex> из стартовой вершины, *<tex>h(v)</tex> {{---}} эвристическое приближение стоимости пути от <tex>v </tex> до конечной цели. <tex>h(v)</tex> должна быть эвристически допустимой, то есть не должна переоценивать рассояние до цели. Например, если наш граф является некоторой картой, разбитой сеткой, то эвристику можно назначить минимальным числом перемещений из клетки в клетку.К примеру, если <tex>(h(v) == 0)</tex>, то алгоритм посетит вершины в том же порядке, что и [[алгоритм Дейкстры]]. Если <tex>h(v)</tex> всегда меньше истинной стоимости пути до цели, то А* гарантированно найдет кратчайший путь, причем чем меньше разница между эвристикой и истинной стоимостью, тем меньше вершин рассмотрит алгоритм. Если выйдет такЧем меньше <tex>f(v)</tex>, что эвристика превысила истинную стоимость, то А* тем раньше вершина будет работать быстрее, но возможно найдет не лучший путь, хотя его можно считать "хорошим" открыта и если производительность предпочтительнее точности можно использовать такую эвристикуисследована алгоритмом.Таким образом множество альтернативных путей хранится в очереди с приоритетом
==Псевдокод==
return failure; // Наша цель недостижима из start
}
==Свойства==
==Ссылки==
76
правок

Навигация