2015-06-02 6 views
4

Существует четыре простых алгоритма английского языка для Башни Ханойской головоломки available on Wikipedia, но когда я впервые решил головоломку, я придумал алгоритм, отличный от любого из решений, которые у меня есть видел.Альтернативный простой алгоритм английского языка для Башни Ханоя

Википедии алгоритмы:

  1. Iterative solution
  2. Simpler statement of iterative solution
  3. Equivalent iterative solution
  4. Recursive solution

Конечно, результаты алгоритмов одинаковы, и они на самом деле просто разные способы думать о том же тонком g, но я говорю об простых английских способах описания процесса.

Мой процесс выглядит следующим образом:

  1. Никогда не перемещайте же плитку дважды подряд (очевидно)
  2. Расставьте приоритеты перемещение вправо
  3. При перемещении вправо, двигаться к ближайшему полюсу, который можно перемещать по закону к.
  4. При перемещении влево переместитесь на самый дальний полюс, на который можно легально перемещать.

..

Towers of hanoi

Эти правила отличаются от других описаний алгоритма в том, что:

  • Начальный стек может быть размещен на любой из 3 столбов и по-прежнему работают без какой-либо корректировки необходимых правил. (В отличие от решений 2 и 3 и 4)

  • Вам не нужно нумеровать диски (в отличие от решений 1 и 3 и 4)

Я испытал это программно, и всегда решал головоломку в (2^n)-1 ходов, где n - количество колец.

Мне кажется, что мое описание действительно отличается от других простых описаний английского языка, которые я нашел. Кто-нибудь видел это описание раньше? Если да, пожалуйста, дайте ссылку.

+0

В то время как ваша первая синтаксическая разность действительна, это выглядит как однонаправленная версия решения номер 2. –

+0

Вам не нужно менять правила при изменении начальной колонны; просто измените, как вы их называете. –

+1

@ScottHunter Это правда. Тем не менее, решение 1 требует начальной настройки, если исходное положение отличается. Мое решение не соответствует исходной позиции. –

ответ

1

Это решение является однонаправленной версией первого iterative solution.

Разница между однонаправленным решением и мононаправленной версией - это однонаправленное решение, не указывающее конечную позицию.

Простое решение для игрушек головоломки: Альтернативные перемещается между наименьшим элементом и не-наименьшей части. При перемещении самого маленького , всегда перемещайте его в следующее положение в том же направлении (до справа, если начальное количество штук четное, влево, если стартовое число штук нечетно). Если в позиции нет положения башни, выбранное направление, переместите деталь на противоположный конец, но затем продолжают двигаться в правильном направлении. Например, если вы запустили с тремя частями, вы переместили бы самую маленькую часть на противоположный конец , затем продолжите в левом направлении после этого. Когда поворот , чтобы переместить не самый маленький кусок, есть только один законный ход. Выполнение завершает головоломку в наименьшем числе ходов.

Это описание моно-направленная версия может быть изменен, чтобы быть в одном направлении, если направление выбор направления движения заменяется правилами из однонаправленного решения вращающегося вокруг приоритезации перемещения вправо.

1

Я думаю, что ваше описание в значительной степени совпадает с Iterative Solution. Представьте себе столбы, расположенные вокруг круга или треугольника, стиль мод 3. Ваши инструкции и инструкции Википедии переводят одно и то же в этом способе просмотра вещей.

+0

Да, это в основном то, что я написал здесь. http://stackoverflow.com/a/30603298/2487476 –

+1

Yup ... Я бы не опубликовал, если бы увидел ваш ответ. :-) –