2016-02-09 2 views
0

Эй, я думаю об использовании A * для поиска и оптимального решения проблемы Word Ladder, но я немного затруднен думать о подходящих g (x) и h (x) , Для этой конкретной задачи может ли g (x) быть число переходов из начальной вершины, а h (x) - количество разных символов из целевого слова? Я советую оказать большую помощь.Возможная эвристическая функция для Word Ladder

ответ

1

Я никогда не был поклонником обозначений A * f(x) = g(x) + h(x), потому что это упрощает алгоритм. A * основан на двух эвристиках; часто обозначается g(x) + h(x).

У вас уже есть большинство из них; для Djikstra's/g(x), вы хотите вернуть количество перелетов. Для Greedy/h(x) вы хотите проверить, сколько символов ошибочно; вы попадаете в цель, когда h(x) = 0.

Объединив эти два значения, у вас есть эвристика A *, которая, по сути, говорит о расширении лучших узлов вдоль кратчайшего пути. В других проектах вы можете добавить эвристику к A *, чтобы получить поведение, подобное избеганию врагов (поэтому я предпочитаю не думать A* = g+h).

EDIT: Не забудьте проверить каждого кандидата, используя файл словаря; словарная лестница требует, чтобы промежуточные слова были реальными словами.

+0

g (x) не является эвристикой, это реальная стоимость найденного пути, то есть для любого узла n, g (n) - стоимость пути (уже изученного) от начального узла до n. , а h (n) - расчетная или эвристическая стоимость для достижения целевого узла из n. – FrankS101

+0

В некотором смысле вы правы. Причина, по которой я называю это эвристикой, заключается в том, что нет гарантии, что расстояние * есть реальная стоимость пути. Вместо этого мы используем расстояние как фактор в решении нашей проблемы (путем сравнения решений). В зависимости от заданного набора, возможно, что расстояние не будет вообще рассматриваться. – Aaron3468

Смежные вопросы