Кажется, верно , но я не могу найти никого в Интернете, кто бы сказал, что это так, поэтому я хотел бы убедиться.Пожалуйста, скажите мне, если вы согласны, и если да, то почему.В идеале это ссылка на статью или, если вы не согласны, контрпример.
Пусть G
- ориентированный граф с некоторыми отрицательными ребрами.Мы хотим запустить A * на G
.
Во-первых, если G
имеет отрицательные циклы, достижимые из источника и достигающие цели, нет допустимой эвристики, поскольку невозможно недооценить стоимостьдостижение цели, потому что это -∞
.
Если таких циклов, однако, не существует, может быть некоторая допустимая эвристика.В частности, сумма всех отрицательных граней всегда будет недооценивать стоимость достижения цели.
У меня сложилось впечатление, что в этом случае A * может работать просто отлично.
PSЯ мог бы запустить Беллмана-Форда на графике, обнаружить отрицательные циклы, а если их нет, перевесить, чтобы избавиться от отрицательных ребер.Но, если я знаю , что нет отрицательных циклов, я могу просто пропустить это и запустить A *.
Это тривиально неправильно.Стоимость вершины - это сумма эвристики и пути, построенной до сих пор ... в то время как эвристика недооценивает стоимость достижения цели, сумма эвристики и пройденного пути может и не быть.Максима виноват.
Кажется, что сортировка открытого множества с помощью функции, которая недооценивает стоимость достижения цели, при прохождении через данную вершину может работать, хотя ... если использовать <sum of negative edges in the graph>
в качестве такой функции, она выглядиткак будто вырождается в обход графа.