Существует четыре простых алгоритма английского языка для Башни Ханойской головоломки available on Wikipedia, но когда я впервые решил головоломку, я придумал алгоритм, отличный от любого из решений, которые у меня есть видел.Альтернативный простой алгоритм английского языка для Башни Ханоя
Википедии алгоритмы:
- Iterative solution
- Simpler statement of iterative solution
- Equivalent iterative solution
- Recursive solution
Конечно, результаты алгоритмов одинаковы, и они на самом деле просто разные способы думать о том же тонком g, но я говорю об простых английских способах описания процесса.
Мой процесс выглядит следующим образом:
- Никогда не перемещайте же плитку дважды подряд (очевидно)
- Расставьте приоритеты перемещение вправо
- При перемещении вправо, двигаться к ближайшему полюсу, который можно перемещать по закону к.
- При перемещении влево переместитесь на самый дальний полюс, на который можно легально перемещать.
..
Эти правила отличаются от других описаний алгоритма в том, что:
Начальный стек может быть размещен на любой из 3 столбов и по-прежнему работают без какой-либо корректировки необходимых правил. (В отличие от решений 2 и 3 и 4)
Вам не нужно нумеровать диски (в отличие от решений 1 и 3 и 4)
Я испытал это программно, и всегда решал головоломку в (2^n)-1
ходов, где n
- количество колец.
Мне кажется, что мое описание действительно отличается от других простых описаний английского языка, которые я нашел. Кто-нибудь видел это описание раньше? Если да, пожалуйста, дайте ссылку.
В то время как ваша первая синтаксическая разность действительна, это выглядит как однонаправленная версия решения номер 2. –
Вам не нужно менять правила при изменении начальной колонны; просто измените, как вы их называете. –
@ScottHunter Это правда. Тем не менее, решение 1 требует начальной настройки, если исходное положение отличается. Мое решение не соответствует исходной позиции. –