Найти в Дзене

Ханойская башня: головоломка, которая научила мир думать рекурсивно

Представьте: в древнем храме монахи день и ночь перекладывают 64 золотых диска с одного алмазного стержня на другой. Когда работа будет завершена — наступит конец света. Звучит как миф, но эта головоломка, придуманная математиком Эдуардом Люка в 1883 году, содержит в себе один из самых элегантных алгоритмических принципов — рекурсию. Правила просты, как и все гениальное: Необходимо переложить пирамидку на другой стержень с соблюдением условий выше. Кажется, что задача для 3-4 дисков решается за пару минут. Но попробуйте в уме представить процесс для 7 дисков. А для 64? Здесь и кроется магия. Секрет решения — в рекурсивном мышлении. Забудьте на мгновение о 64 дисках. Давайте решим задачу для одного: Теперь для двух дисков: А вот ключевой прорыв — алгоритм для N дисков: Вы только что свели задачу сложности N к двум задачам сложности (N-1) и одному простому действию. Это и есть рекурсия: задача вызывает саму себя, но каждый раз — для меньшего числа дисков, пока не дойдет до тривиальног
Оглавление

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

Звучит как миф, но эта головоломка, придуманная математиком Эдуардом Люка в 1883 году, содержит в себе один из самых элегантных алгоритмических принципов — рекурсию.

Эдуард Люка - автор задачи
Эдуард Люка - автор задачи

Часть 1: Легенда и правила: когда монахи перемещают мир

Правила просты, как и все гениальное:

  1. Есть три стержня и N дисков разного размера.
  2. Все диски начинают свой путь на первом стержне, уложенные пирамидкой: самый большой внизу, самый маленький наверху.
  3. За один раз можно перемещать только один диск.
  4. Нельзя класть больший диск на меньший.

Необходимо переложить пирамидку на другой стержень с соблюдением условий выше. Кажется, что задача для 3-4 дисков решается за пару минут. Но попробуйте в уме представить процесс для 7 дисков. А для 64? Здесь и кроется магия.

Три стержня и пирамида из дисков
Три стержня и пирамида из дисков

Часть 2: Разбираем на слои: от страшной задачи к простому шагу

Секрет решения — в рекурсивном мышлении. Забудьте на мгновение о 64 дисках. Давайте решим задачу для одного:

  • 1 диск: просто переложите его с первого стержня на третий. Готово.

Теперь для двух дисков:

  1. Перенесите маленький диск на вспомогательный (второй) стержень.
  2. Переложите большой диск сразу на целевой (третий) стержень.
  3. Перенесите маленький диск поверх большого.

А вот ключевой прорыв — алгоритм для N дисков:

  1. Переложите верхние (N-1) дисков на вспомогательный стержень (используя третий как временный).
  2. Переложите самый большой (N-й) диск на целевой стержень.
  3. Переложите башню из (N-1) дисков со вспомогательного стержня на целевой, поставив её поверх большого диска.

Вы только что свели задачу сложности N к двум задачам сложности (N-1) и одному простому действию. Это и есть рекурсия: задача вызывает саму себя, но каждый раз — для меньшего числа дисков, пока не дойдет до тривиального базового случая (1 диск).

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

Решение для четырех колец
Решение для четырех колец

Часть 3: Волшебная формула: почему 64 диска — это конец света

Давайте посчитаем необходимое количество перекладываний.

Для 1 диска требуется 1 перекладывание.

Для 2 дисков — 3 (переложить 1 диск, потом 2-й, потом снова 1).

Для 3 дисков — 7 перекладываний.

Пусть T(N) минимальное необходимое количество перекладываний, тогда
прослеживается закономерность: T(N)=2ᴺ − 1

Проверим на малых числах:

  • 2¹ − 1 = 1
  • 2² − 1 = 3
  • 2³ − 1 = 7

Эту формулу можно доказать через ту же математическую индукцию: если для (N-1) дисков нужно M ходов, то для N дисков нужно: M (чтобы убрать верх) + 1 (для нижнего) + M (чтобы вернуть верх) = 2M + 1. Эта формула как раз и приводит к 2ᴺ − 1.

А теперь — леденящий душу факт. Для 64 дисков нужно 2⁶⁴ - 1 ходов.
2^64 = 18 446 744 073 709 551 616
Минус один — не сильно меняет масштаб. Если монахи будут делать по одному ходу в секунду, без сна и ошибок, им потребуется около 585 миллиардов лет.
Возраст Вселенной — примерно 13.8 миллиардов лет. Так что, пожалуй, легенда о конце света — неплохая метафора для непостижимости экспоненциального роста.

Часть 4: Где живет ханойская башня в реальном мире

Эта головоломка — не просто игра:

  • Основы программирования: Ханойская башня — классический пример для обучения рекурсии. Каждый студент-программист пишет для неё алгоритм.
  • Математика: задача связана с алгоритмами поиска, бинарными деревьями, кодами Грея и фракталами.
  • Психология/логика: существуют головоломки и даже игрушечные наборы, развивающие логику у детей. Башню используют для изучения планирования и решения задач.

Красота ханойской башни в том, что она превращает непреодолимо сложную на вид проблему в последовательность идентичных простых шагов. Она учит нас: чтобы решить большую проблему, сведи её к чуть меньшей такой же проблеме — и повторяй, пока не дойдешь до очевидного решения.

Заключение

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

P.S. (для особенно любопытных): Возьмите 3 монетки разного размера и попробуйте решить задачу для 3 дисков, записывая ходы. Вы не просто сложите пирамидку — вы вручную исполните тот же алгоритм, который лежит в основе миллионов компьютерных программ. Магия самоподобия в ваших руках.

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

👉 Подписаться на Telegram-канал

  1. Сколько минимально ходов потребуется для 5 дисков? А для 10?
  2. Существует ли стратегия, позволяющая всегда делать минимальное количество ходов, или можно запутаться и сделать больше?
  3. Что будет, если добавить четвертый стержень? Сильно ли уменьшится число ходов?

#ханойскаябашня #рекурсия #алгоритмы #математика #головоломка #информатика #этоинтересно