Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект.docx
Скачиваний:
35
Добавлен:
28.05.2022
Размер:
2.46 Mб
Скачать
      1. Задача о Ханойской башне

Рекомендуемая литература: [2]

Рассмотрим еще одну интересную задачу и отметим на ее примере некоторые другие этапы решения.

1 2 3

Рисунок 3: Ханойская башня

Известная головоломка ханойская башня изображена на рисунке 3. Головоломка состоит из трех колышков и некоторого числа дисков разного диаметра. Каждый диск имеет в середине отверстие для надевания на колышки.

В исходный момент все диски нанизаны на один из колышков в порядке уменьшения размера. Диски можно перемещать с колышка на колышек при соблюдении двух условий: за один раз можно перенести только один диск и больший диск нельзя помещать на меньший. Задача состоит в том, чтобы, при соблюдении правил перемещения, перенести все диски с исходного на какой-нибудь другой колышек.

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

Задача 1.2.5 . Каково наименьшее число перекладываний Tn, которое

необходимо совершить, чтобы переместить в рамках задачи о ханойской башне пирамиду из n дисков с одного колышка на другой.

Рассмотрим крайние случаи. Довольно часто ответ на задачу легко находится в частных случаях, при малых значениях аргумента. Такие, казалось бы, очевидные случаи могут помочь лучше понять общие закономерности. Так, совершенно очевидно, что T1 = 1, и не сложно убедиться, что T2 = 3. Так же можно положить T0 = 0, поскольку для перемещения пирамиды из 0 дисков не требуются перекладывания.

Теперь попытаемся понять, как же переместить пирамиду в общем случае. Если предположить, что изначально диски находятся на колышке с номером 1, для двух дисков нам требуется переложить меньший диск на колышек 2, затем больший на колышек 3 и наконец меньший диск с колышка 2 на колышек 3.

Для трех дисков задача усложняется, но идея остается той же. Мы можем переложить, как мы уже умеем, два диска на колышек номер 2, затем переложить большой диск на колышек 3 и в завершение переложить два меньших диска с колышка 2 на колышек 3.

Итак мы можем переместить пирамиду любой высоты n, если воспользуемся следующим алгоритмом: 1) переложить верхние n 1

дисков на второй колышек; 2) переложить диск n на третий колышек;

3) переложить n 1 меньший диск со второго колышка на третий. Таким

образом, для перемещения n дисков нам достаточно Tn1 + 1 + Tn1

перекладываний:

Tn 2Tn1 + 1, n > 0.

Кроме того, когда-нибудь нам несомненно потребуется переложить самый большой диск с первого колышка на то место, где мы снова соберем нашу пирамиду, например на третий колышек. В этот момент все меньшие диски должны лежать на колышке 2. Значит мы не сумеем переместить башню быстрее, чем за время равное 2Tn1 + 1.

Tn 2Tn1 + 1, n > 0.

Таким образом мы получили рекурентное соотношение

T0 = 0,

Tn = 2Tn1 + 1, n > 0.

(1)

Равенства (1) дают возможность посчитать значение Tn для любого натурального числа n. В частности уже известные нам T1 = 1 и T2 = 3 согласуются с этими формулами. С другой стороны использовать рекурентность для получения значений Tn не удобно при достаточно больших n. Мы бы хотели получить замкнутую форму выражения для Tn.

Как же решить рекурентное соотношение и получить его замкнутую

форму? Для начала попробуем просто угадать. Здесь как и раньше нам помогут крайние случаи. Воспользуемся рекурентным соотношением (1) и вычислим Tn для нескольких первых натуральных чисел:

T3 = 2 · 3 + 1 = 7,

T4 = 2 · 7 + 1 = 15,

T5 = 2 · 15 + 1 = 31,

T6 = 2 · 31 + 1 = 63.

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

Можно предположить, что Tn = 2n 1 для любых n 0.

Действительно, это выражение довольно просто доказать по индукции.

n1

Оно выполняется для T0 и T1. Предположим, что Tn1 = 2

− 1. Тогда

Tn = 2Tn1 + 1 = 2(2

n1

− 1) + 1 = 2n

  • 1, что и требовалось доказать.

Метод математической индукции очень часто помогает в решении

проблем, но он потребовал от нас "угадать" ответ. Когда это возможно, хорошо получить результат напрямую, не полагаясь на везение. Продемонстрируем, как соотношение (1) может быть разрешено без использования индукции.

Интересно, как помогает "упростить" второе выражение в (1) добавление единицы с обоих сторон от знака равенства: Tn + 1 = 2Tn1 + 2 = 2(Tn1 + 1). Введем всопмогательную величину Un = Tn + 1. Тогда

из (1) имеем

U0 = 1,

Un = 2Un1, n > 0.

Очевидно, что Un = 2n. Отсюда, по определению величины Un следует, что Tn = 2n 1 для любых n > 0.

Итак, на примере задачи о ханойской башне мы разобрали следующие стадии решения задачи:

  1. рассмотрение крайних случаев;

  2. нахождение и доказательство математического выражения для интересующей величины (в нашем случае это рекурентное выражение);

  3. нахождение и доказательство замкнутой формы для математического выражения.

Соседние файлы в предмете Дискретная математика