Краткий ответ
Ответ @chaos немного вводит в заблуждение (можно выделить)
Переоценка точно не делает алгоритм неверным; это означает, что у вас больше нет допустимой эвристики, которая является условием для того, чтобы A* гарантировало оптимальное поведение. С недопустимой эвристикой алгоритм может выполнить массу лишней работы.
как намекает @AlbertoPL
Вы можете найти ответ быстрее, переоценивая, но вы можете не найти кратчайшего пути.
В конце концов (помимо математического оптимума) оптимальное решение сильно зависит от того, учитываете ли вы вычислительные ресурсы, время выполнения, специальные типы карт/пространств состояний и т. д.
Длинный ответ
В качестве примера я мог бы подумать о приложении реального времени, в котором робот быстрее достигает цели, используя эвристику с завышенной оценкой, потому что преимущество во времени при более раннем старте больше, чем преимущество во времени при выборе кратчайшего пути, но при более длительном ожидании вычисления этого решения.
Чтобы дать вам лучшее впечатление, я делюсь некоторыми примерными результатами, которые я быстро создал с помощью Python. Результаты основаны на одном и том же алгоритме A*, отличается только эвристика. Каждый узел (ячейка сетки) имеет ребра со всеми восемью соседями, кроме стен. Стоимость диагональных ребер sqrt(2)=1,41
На первом рисунке показаны возвращаемые пути алгоритма для простого примера. Вы можете увидеть некоторые неоптимальные пути из-за переоценки эвристики (красный и голубой). С другой стороны, существует несколько оптимальных путей (синий, желтый, зеленый), и от эвристики зависит, какой из них будет найден первым.
Различные изображения показывают все расширенные узлы, когда цель достигнута. Цвет показывает предполагаемую стоимость пути с использованием этого узла (учитывая также уже пройденный путь от начала до этого узла; математически это стоимость до сих пор плюс эвристика для этого узла). В любой момент алгоритм расширяет узел с наименьшей оценочной общей стоимостью (описано ранее).
![Пути](https://i.stack.imgur.com/Gu3MS.png)
<сильный>1. Ноль (синий)
- Соответствует алгоритму Дейкстры
- Расширено узлов: 2685
- Длина пути: 89,669
![Ноль](https://i.stack.imgur.com/5yMTF.png)
<сильный>2. По прямой линии (желтый)
- Расширено узлов: 658
- Длина пути: 89,669
![](https://i.stack.imgur.com/75eFV.png)
<сильный>3. Идеально (зеленый)
- Кратчайший путь без препятствий (если следовать восьми направлениям)
- Максимально возможная оценка без завышения (следовательно, идеальная)
- Расширено узлов: 854
- Длина пути: 89,669
![](https://i.stack.imgur.com/VqMtF.png)
<сильный>4. Манхэттен (красный)
- Кратчайший путь без препятствий (если вы не двигаетесь по диагонали; другими словами: стоимость движения по диагонали оценивается как 2)
- Завышает
- Расширено узлов: 562
- Длина пути: 92.840
![](https://i.stack.imgur.com/gD9t4.png)
<сильный>5. Как ворона умножает на десять (голубой)
- Завышает
- Расширено узлов: 188
- Длина пути: 99,811
![](https://i.stack.imgur.com/SZuFH.png)
person
Felix
schedule
05.05.2018