General

Количество различных решений задачи о ханойских башнях

Puzzle
Worried about writing a unique paper?
Illustration

Use our free
Readability checker

Source: http://staff.um.edu.mt/jskl1/dp/th.html

Введение

Башня(и) из Ханой — хорошо известная игра (головоломка), обычно используемая для объяснения и демонстрации возможностей рекурсии. Есть очень много веб-сайтов, которые занимаются этим. Чтобы упомянуть некоторые из многих, вы можете посетить, например:

http://en.wikipedia.org/wiki/Tower_of_Hanoi
http://hanoitower.mkolar.org/
http://www.cut-the-knot.org/recurrence/hanoi.shtml
http://mathworld.wolfram.com/TowerofHanoi.html

и многие другие. Эту задачу также можно использовать для демонстрации возможностей динамического программирования. Чтобы узнать больше, прочитайте статью Моше Снидовича на http://archive.ite.journal.informs.org/Vol3No1/Sniedovich/ , где динамическое программирование использовалось для нахождения длины кратчайшего решения, а также длины почти игнорируемого решения. самое длинное решение (и многое другое). Здесь мы используем подход динамического программирования, чтобы найти несколько различных решений проблемы.

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

Количество различных решений башен Ханой Проблема

Ярослав Скленарь, 30 октября 2007 г.

Введение

Башня(и) из Ханой — хорошо известная игра (головоломка), обычно используемая для объяснения и демонстрации возможностей рекурсии. Есть очень много веб-сайтов, которые занимаются этим. Чтобы упомянуть некоторые из многих, вы можете посетить, например:

http://en.wikipedia.org/wiki/Tower_of_Hanoi

http://hanoitower.mkolar.org/

http://www.cut-the-knot.org/recurrence/hanoi.shtml

http://mathworld.wolfram.com/TowerofHanoi.html

и многие другие. Эту задачу также можно использовать для демонстрации возможностей динамического программирования. Чтобы узнать больше, прочитайте статью Моше Снидовича на http://archive.ite.journal.informs.org/Vol3No1/Sniedovich/ , где динамическое программирование использовалось для нахождения длины кратчайшего решения, а также длины почти игнорируемого решения. самое длинное решение (и многое другое). Здесь мы используем подход динамического программирования, чтобы найти несколько различных решений проблемы.

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

Теория

Здесь я предполагаю, что читатель знаком с проблемой, поэтому просто краткое изложение:

Три платформы (полюса) называются L (слева), C ​​(в центре) и R (справа).

Башня представляет собой набор дисков (колец), поставленных друг на друга таким образом, что меньший диск всегда находится на большем. Первоначально на платформе L находится башня высоты n , состоящая из дисков 1... n возрастающего размера, где 1 — самый верхний маленький диск.

Правила : при перемещении дисков мы должны соблюдать следующие правила:

-         можно перемещать только один диск за раз

-         диск можно поставить как на пустую платформу, так и на диск большего размера.

Задача : мы хотим переместить башню из дисков 1… n с платформы L на платформу R по правилам.

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

https://d3ueqtv14wizl1.cloudfront.net/image004_3a79c5d9f2.gif
https://d3ueqtv14wizl1.cloudfront.net/image006_5a3a45086e.gif
https://d3ueqtv14wizl1.cloudfront.net/image008_b34a02c4f3.gif
https://d3ueqtv14wizl1.cloudfront.net/image010_1f78189e89.gif

Решение — это последовательность ходов (альтернативно последовательность состояний, порожденных этими ходами), которая решает вышеуказанную проблему, следуя правилам. Мы рассматриваем только решения без циклов, в которых каждое состояние появляется чаще всего один раз.

Пусть F ( n , a , b , c ) — общее количество различных решений задачи о перемещении башни высоты n с платформы a на платформу b с использованием платформы c . Поскольку нет никакой разницы между платформами в отношении правил, мы можем использовать F ( n ) для краткости.

Теорема : F ( n ) можно вычислить по рекурсивной формуле

https://d3ueqtv14wizl1.cloudfront.net/website_a38bb7c583.gif

Доказательство: при n = 1 очевидно два решения без циклов: переместить диск из L в R или переместить диск из L в C и затем из C в R. Теперь предположим . Чтобы достичь конечного состояния, нужно переместить самый большой диск n из L в R. Это можно сделать (всегда без циклов) двумя разными способами, которые мы рассмотрим отдельно.

https://d3ueqtv14wizl1.cloudfront.net/image012_226bc20b2f.gif

1)  Переместите башню ( n -1) из L в C, переместите диск n из L в R, переместите башню ( n -1) из C в R. Перемещение башни ( n -1) из L в C имеет F ( n -1) различных решений, перемещение башни ( n -1) из C в R также имеет F ( n -1) различных решений. Эти два перемещения башен высоты ( n -1) независимы, поэтому первый случай приводит к F ( n -1) 2 различным решениям.

2)  Переместить башню ( n -1) из L в R, переместить диск n из L в C, переместить башню ( n -1) из R в L, переместить диск n из C в R, переместить башню ( n -1) из L в R. Мы видим, что существует три независимых хода башни ( n -1 ), поэтому общее количество различных решений в этом случае равно F ( n -1) 3 .

Поскольку случаи 1) и 2) взаимоисключающие, мы имеем общее число различных решений, заданное формулой теоремы.

Легенды

Существует легенда, вероятно, придуманная на пустом месте вместе с самой игрой в 1883 году французским математиком Эдуардом Лукасом:

 «Легенда гласит, что группа восточных монахов является хранителями трех башен, на которых сидят 64 золотых кольца. Первоначально все 64 кольца были сложены на одной башне, причем каждое кольцо было меньше нижнего. Монахи должны перемещать кольца из этой первой башни в третью по одному, но никогда не перемещая большее кольцо поверх меньшего. Как только все 64 кольца будут перемещены, миру придет конец».

(Подробнее см. на странице http://hanoitower.mkolar.org, откуда была взята легенда).

Хорошо известно, что оптимальное решение игры в n башен требует 2 n -1 ходов. Предполагая, что один ход занимает 1 секунду, после некоторых простых вычислений мы приходим к результату, что решение для n = 64 занимает около 585x10 9 лет.

Можем предложить еще одну легенду:

«Возьмите всего 5 колец и попробуйте все возможные решения. Тогда Вселенная придет к концу».

Если мы примем (нереалистичное) предположение, что каждое решение занимает в среднем (у них разная длина) всего 1 секунду, то на то , чтобы попробовать их все, уйдет около 89,67x10 20 лет. Достаточно времени для многих больших взрывов.

Еще одна легенда:

«Возьмите всего 4 кольца и пусть каждый человек на Земле решает игру по-своему. Когда будут использованы все различные решения, Вселенная придет к концу».

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

Полученные результаты

Это номера решений для увеличения высоты башни:

Ф (1) = 2

Ф (2) = 12

Ф (3) =   1872

F (4) =   6 563 711 232

F (5) ≈   2,827798101718050e+029

Ниже приведены все решения для башен высотой 1, 2 и 3 (выдержка). Каждая строка содержит одно решение, начиная с его номера. Ходы, разделенные пробелами, имеют формат:

    кАБ

где k — номер диска, который мы перемещаем с платформы A на платформу B. Обратите внимание, что первое решение — самое короткое с 2 n -1 ходами, последнее решение — самое длинное с 3 n -1 ходами.

1 (высота башни)
2 (количество сгенерированных решений)    
1 1LR
2 1ЛК 1КР    

2 (высота башни)
12 (количество сгенерированных решений)
1 1ЛК 2ЛР 1КР
2 1ЛК 2ЛР 1КЛ 1ЛР
3 1LR 1RC 2LR 1CR
4 1LR 1RC 2LR 1CL 1LR
5 1LR 2LC 1RL 2CR 1LR
6 1LR 2LC 1RL 2CR 1LC 1CR
7 1LR 2LC 1RC 1CL 2CR 1LR
8 1LR 2LC 1RC 1CL 2CR 1LC 1CR
9 1ЛК 1КР 2ЛК 1РЛ 2КР 1ЛР
10 1LC 1CR 2LC 1RL 2CR 1LC 1CR
11 1LC 1CR 2LC 1RC 1CL 2CR 1LR
12 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR

3 (высота башни)
1872 (количество сгенерированных решений)
1 1LR 2LC 1RC 3LR 1CL 2CR 1LR
2 1LR 2LC 1RC 3LR 1CL 2CR 1LC 1CR
3 1LR 2LC 1RC 3LR 1CR 1RL 2CR 1LR
4 1LR 2LC 1RC 3LR 1CR 1RL 2CR 1LC 1CR
5 1LR 2LC 1RC 3LR 1CR 2CL 1RC 2LR 1CR
6 1LR 2LC 1RC 3LR 1CR 2CL 1RC 2LR 1CL 1LR
7 1LR 2LC 1RC 3LR 1CR 2CL 1RL 1LC 2LR 1CR
8 1LR 2LC 1RC 3LR 1CR 2CL 1RL 1LC 2LR 1CL 1LR
9 1LR 2LC 1RC 3LR 1CL 1LR 2CL 1RC 2LR 1CR
10 1LR 2LC 1RC 3LR 1CL 1LR 2CL 1RC 2LR 1CL 1LR
11 1LR 2LC 1RC 3LR 1CL 1LR 2CL 1RL 1LC 2LR 1CR
12 1LR 2LC 1RC 3LR 1CL 1LR 2CL 1RL 1LC 2LR 1CL 1LR
13 1LR 2LC 1RL 1LC 3LR 1CL 2CR 1LR
14 1LR 2LC 1RL 1LC 3LR 1CL 2CR 1LC 1CR
15 1LR 2LC 1RL 1LC 3LR 1CR 1RL 2CR 1LR
16 1LR 2LC 1RL 1LC 3LR 1CR 1RL 2CR 1LC 1CR
17 1LR 2LC 1RL 1LC 3LR 1CR 2CL 1RC 2LR 1CR
18 1LR 2LC 1RL 1LC 3LR 1CR 2CL 1RC 2LR 1CL 1LR
19 1LR 2LC 1RL 1LC 3LR 1CR 2CL 1RL 1LC 2LR 1CR
20 1LR 2LC 1RL 1LC 3LR 1CR 2CL 1RL 1LC 2LR 1CL 1LR

1865 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3КР 1ЛР 2ЛК 1РЛ 2КР 1ЛР

 1866 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LR 2LC 1RL 2CR 1LC 1CR

 1867 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LR 2LC 1RC 1CL 2CR 1LR

 1868 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LR 2LC 1RC 1CL 2CR 1LC 1CR

 1869 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3КР 1ЛК 1КР 2ЛК 1РЛ 2КР 1ЛР

 1870 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LC 1CR 2LC 1RL 2CR 1LC 1CR

 1871 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LC 1CR 2LC 1RC 1CL 2CR 1LR

 1872 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR 3LC 1RC 1CL 2RC 1LC 1CR 2CL 1RC 1CL

      3CR 1LC 1CR 2LC 1RC 1CL 2CR 1LC 1CR

Вы можете скачать текстовый файл со всеми решениями для башни высотой 3.

Количество различных решений даже для небольших башен впечатляет. Чтобы проверить формулу, я написал программы на Turbo Pascal 7, которые генерируют решения в текстовом файле в указанном выше формате, проверяют, все ли решения разные, и имитируют их, чтобы проверить, правильны ли они. Их также можно использовать для созданных вручную решений. Если хотите, можете скачать эти программы . Все должно быть понятно из комментариев в исходных файлах.

Essay writing services have gained popularity in recent years due to their convenience and efficiency in helping students meet academic demands. These services offer a lifeline to overwhelmed students who are juggling multiple tasks and deadlines. One common request, "write my paper for me cheap", echoes the financial constraints often faced by students. These services cater to such needs, providing well-structured and well-researched papers at affordable rates.

However, it's important to approach essay writing services cautiously. While they can be a valuable tool for learning and time management, students should ensure the service is reputable and doesn't compromise on quality. Thoroughly reviewing samples, customer reviews, and clarifying terms and conditions can help in making an informed decision. In essence, essay writing services, when used judiciously, can offer academic support and alleviate the pressures of coursework, ultimately contributing to a more balanced and successful educational journey.

Article posted on:Aug 15, 2023
Article updated on:Aug 16, 2023