Подробное описание проблемы выглядит следующим образом:
Учитывая два слова (beginWord и endWord) и список слов в словаре, найдите, есть ли последовательность преобразования из beginWord в endWord, такая что:
- За один раз можно изменить только одну букву
- Каждое преобразованное слово должно существовать в списке слов.Обратите внимание, что beginWord не является преобразованным словом.
Я знаю, что это слово можно найти с помощью поиска в ширину.После того, как я предложил нормальное решение BFS, интервьюер спросил меня, могу ли я сделать это быстрее.Я не нашел способ ускорить.И интервьюер сказал мне, что я должен вместо этого использовать PriorityQueue, чтобы выполнить «поиск в первую очередь».И приоритет отдается расстоянию Хэмминга между текущим словом и целью.
Я не совсем понимаю, почему это может ускорить поиск.Я чувствую, что с помощью priorityQueue мы пытаемся найти путь, по которому идет прогресс (т. Е. Сократить расстояние Хэмминга).
Кажется, это жадный метод.Мои вопросы:
Почему это решение быстрее, чем решение поиска в ширину?Я чувствую, что реальный путь может быть таким: сначала не делать никакого прогресса или даже увеличивать расстояние Хемминга, но после достижения слова расстояние Хемминга постепенно уменьшается.В этом сценарии, я думаю, решение приоритетной очереди будет медленнее.
Любые предложения будут оценены!Спасибо