Может быть, я упускаю что-то очень простое и очевидное.
Но я не понимаю, почему оценочная стоимость исходной вершины вычитается из общей оценочной стоимости, если эвристическая функция h
является монотонной (последовательной):
Монотонная функция: f(x) = g(x) + h(x)
Немонотонная функция: d'(x, y) = d(x, y) + h(y) − h(x)
UPD :
Я был смущен и совершенно не понял монотонную / немонотонную эвристику. @ ответ david-aisenstat помог мне внести исправления в вопрос:
Алгоритм * может использоваться как расширение алгоритма Дейкстры. На каждой итерации своего основного цикла он выбирает вершину с минимальной оценочной стоимостью плюс стоимость пути к этой вершине:
Для вершины u
и ее преемника v
общая стоимость вычисляется по формуле f(u, v) = d(u, v) + h(v)
с использованием некоторой эвристической функции h
. Где:
d(u,v)
стоимость пути от u
до v
h(v)
оценка стоимости от v
до целевой вершины t
Если для любых смежных вершин u
и v
верно, что h(u) <= d(u, v) + h(v)
, то h
является монотонным. Другими словами, граф содержит свойство треугольника .
Это указано на вики-странице A * алгоритма :
Если эвристика h удовлетворяет дополнительному условию h (x) ≤ d (x, y) + h (y) для каждого ребра (x, y) графа (где d обозначает длину этого ребра), то h называется монотонным или последовательным. В таком случае A * может быть реализован более эффективно - грубо говоря, ни один узел не должен обрабатываться более одного раза (см. Закрытый набор ниже) - и A * эквивалентно выполнению алгоритма Дейкстры с уменьшенной стоимостью d '(x, y) = d (x, y) + h (y) - h (x).
Мои вопросы:
и A * эквивалентно выполнению алгоритма Дейкстры с уменьшенной стоимостью d '(x, y) = d (x, y) + h (y) - h (x).
Есть ли доказательства этой эквивалентности?
Понятно, что 0 <= d(x, y) + h(y) - h(x)
, и это выполнимо. Но:
- Почему эта формула выбрана в качестве новой функции расстояния?
- Есть ли формальное доказательство того, что это работает?
- Почему недостаточно запустить Дейкстру с d '(x, y) = d (x, y) + h (y)?
- Что за этим стоит математика?