ПРОЛОГ

«Хочешь поиграть в пазлы?»  —  спросила мама своего 8-летнего ребёнка. «Конечно, мамочка!»  —  ответило дитя.

Все мы любим головоломки. И забавно, что эта любовь не имеет возрастных границ. С возрастом мы так же любим поломать голову над какой-нибудь сложной загадкой, а когда наконец приходим к её отгадке, хочется прыгать от радости и поделиться ею со всем миром. Эта статья посвящена головоломке, основанной на математическом парадоксе.

«И сказал Бог: да будет свет. И стал свет». (Третий стих книги Бытия)

ВОТ ТАКАЯ ГОЛОВОЛОМКА

В чём суть этого парадокса «Гранд-отель»?

Предположим, что на планете Титан есть отель со счётным бесконечным множеством номеров, начиная от первого и до бесконечности. Счётное множество является бесконечным, если оно имеет взаимно-однозначное соответствие с натуральными числами, такими как 1, 2, 3 и так далее до бесконечности.Этот отель известен на всю Вселенную. Каждый вечер в нём останавливается бесчисленное количество людей. И вот однажды отель оказался заполнен постояльцами. Теперь управляющий отеля ломает голову над тем, где разместить будущих посетителей.

Так сложно и в то же время так просто O(FINITE)

Тут открылись главные ворота.Управляющий поднял взгляд и застыл в изумлении.За всю свою жизнь он не видел такой очаровательной и ослепительной дамы.Она подошла к стойке администратора и сказала: «Монсеньор, меня зовут Мяяяу.Я  —  представитель планеты Р-616 из Шелковистой Галактики.Ваш отель знаменит на всю Вселенную, поэтому я решила остаться здесь на ночь.Не могли бы Вы выдать мне ключ-карту от моего номера?».

Так как это бесконечный отель, в нём всегда остаётся ещё один номер для заселения. Но управляющий не может предоставить ей любой номер, так как все гостиничные номера (не только 1-й, 2-й, 3-й, но и, скажем, 1284742018764398976755836-й) уже заняты. Так неужели заселить её в отель не получится? Было бы обидно отказать такой красотке 😉 Ну, конечно же, управляющий найдёт ей номер. А теперь оторвитесь от чтения, сделайте паузу и немного подумайте.

Предположим, мы попросим её занять первый номер. Но он ведь уже занят, верно? Куда девать его постояльца? Мы попросим его переселиться во второй номер, а постояльца второго номера  —  в третий и так далее. Таким образом, все постояльцы переселяются каждый в следующий, соседний номер. То есть в общем случае постоялец из номера N переселится в номер (N + 1). Но отель ведь бесконечный и всегда остаётся ещё один номер, поэтому ни у кого проблем с заселением не возникнет.

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

На один уровень сложнее O(INFINITE)

Мяяяу очень понравилось её пребывание в бесконечном отеле.Два месяца спустя, в рождественский сочельник, она появилась снова, но уже не одна, а со всеми жителями своей планеты, прилетев на специальном звездолёте!И все они хотят остановиться в этом бесконечном отеле.Но самое интересное: число жителей её планеты Р-616 не является конечным.Оно бесконечно.

Здесь логика перемещения (N + бесконечность) не применима. Но в таком случае каково же будет решение?

Давайте не складывать, а умножать. На 2. Постоялец первого номера переместится во второй номер, постоялец второго  —  в четвёртый, третьего  —  в шестой. В общем случае постоялец номера N переместится в номер (2 * N). Заметили закономерность? Все чётные номера заселяются теми, кто уже являются постояльцами отеля, а все нечётные номера освобождаются для вновь прибывающих. И таким образом, все нечётные номера (число которых бесконечно) могут быть заняты новыми, вновь прибывшими посетителями, число которых также бесконечно.

Преодолевая все ограничения O(INFINITE of INFINITE)

Всем жителям планеты Р-616 очень понравилось их пребывание в бесконечном отеле.Они стали публиковать в соцсетях фото и видео, которые мгновенно становились вирусными. Больше месяца хештег #stay_at_infinite_hotel был № 1 по популярности в твиттере.В отель прилетало всё больше и больше народу.И если вы думаете, что теперь никаких проблем возникнуть не может, то вы ошибаетесь.

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

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

Итак, давайте возьмём первое простое число 2. Теперь переместим постояльцев в их новые номера. Для этого число 2 возводим в степень, соответствующую занимаемому ими номеру. Так постоялец первого номера переместится в номер 2¹. Постоялец второго номера переместится в номер 2². Постоялец третьего номера переместится в номер 2³. В общем случае постоялец номера N перемещается в номер 2^N. А как насчёт первой планеты с бесконечным числом жителей? Возьмём число 3 и будем возводить его в степень, соответствующую порядковому номеру каждого прибывающего с этой планеты, и таким образом предоставим им всем номера. Первому  —  номер 3¹, второму  —  номер 3² и т. д. Так, P-й прибывший будет заселён в номер 3^P. Эта же логика будет применяться и в отношении прибывающих со всех остальных планет, то есть 5^P, 7^P, 11^P, 13^P и т. д. Теперь, когда каждому постояльцу соответствует его степень простого числа, все постояльцы будут размещены каждый в отдельном номере! Так что у нас есть способ принять бесконечное количество прибывающих с бесконечного количества планет  —  infinite of infinite!

ЭПИЛОГ

Приём в «Гранд-отеле» имел грандиозный успех!Всем очень понравилось отдохнуть в нём.Это был праздник галактического масштаба,который теперь будут отмечать ежегодно.

«Да будет свободный номер. И свободный номер появился!». (Управляющий бесконечного «Гранд-отеля»).

И в следующий раз, когда вам понадобится номер в отеле, загляните в этот бесконечный отель. Здесь для вас всегда найдётся свободный номер. Разве что ближе к вечеру, возможно, придётся переместиться в один из соседних номеров. 😉

Спасибо, что дочитали. А вы хотели бы остановиться в этом бесконечном отеле?

Ссылки на материалы, использованные в статье  —  «Википедия», Youtube, доказательство теоремы Евклида.

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Sayantan Banerjee: Infinite Hotel Paradox — A Mathematical Paradox

Предыдущая статьяОсновы SQLite на примере практической задачи
Следующая статьяМикрооптимизации в Java. Enum  -  хороший, красивый и медленный