Найти в Дзене
Массаракш Наизнанку

Карательная математика 2: Бесконечный отель.

Так, с самым большим имеющим смысл числом (я про число Грэма) мы уже знакомились. Мозг понапрягали, поморщили, попытались представить себе этот объём. Но теперь, я думаю, вы немного отошли и значит, давайте опять устроим вашему рациональному мозгу очередной сеанс карательной математики. И сразу замахнёмся на бесконечность! И дальше, да, спасибо тебе Базз за девиз. Короче, добро пожаловать в «Отель Гилберта». Назван в честь немецкого математика 1920-х годов Дэвида Гилберта. Однажды, этот замечательный человек, решил показать людям, насколько сложно осознать концепцию бесконечности и как далеко понимание этого термина, от народа... в смысле от попыток понять её с нашей рациональной точки зрения. И в качестве иллюстрации придумал мысленный эксперимент с отелем, который учёный представил на одной из своих лекций. Однако для большинства этот парадокс стал известен после того, как широкой публике о приколюхе рассказал Георгий Гамов в книге 1947 года «Тридцать лет, которые потрясли физику». Там он описал тот самый отель с оптимистичным девизом — «у нас всегда есть свободные номера, даже если все они заняты». Откуда такая уверенность владельцев этого отеля? Потому что в нём просто бесконечное (буквально) количество номеров. И давайте, посмотрим, как это работает. Начнём с самого простого. С открытия гостиницы.

Родоначальник нашего отеля. Тот самый Гилберт
Родоначальник нашего отеля. Тот самый Гилберт

Заведение распахнуло свои двери и туда поселился один человек. Пока всё просто. Он занимает комнату под номером 1. Потом приходит второй посетитель и селится в комнату 2. И так далее. Но вот, предположим, что у нас набежало бесконечное количество постояльцев и весь отель заполнен! Пора бы уже подсчитывать огромную, просто бесконечную, кучу денег. Но, внезапно начинаются сложности. К нам приходит ещё один посетитель, и говорит: я хочу снять комнату. Но у нас бесконечный отель уже забит посетителями. Мест, кажется, что и нет! Но, мы помним девиз нашего отеля? Консьерж просто просит всех постояльцев переехать в тот номер, который расположен по соседству. То есть гость из комнаты 1, переезжает во вторую комнату и так далее. И вот, заглянувший на огонёк становится дорогим постояльцем комнаты с номером 1. Теперь, даже если к гостинице подрулит автобус с сотней человек, вы знаете, что делать! Просто в два часа ночи поднимаете с постели всю бесконечность гостей и просим их сместиться на сто номеров по соседству. То есть в n+100. Всё логично. Количество денег увеличилось на 101. Мы подсчитываем прибыль и радуем владельцев.

Для самых непонятливых — вот памятка. Найдите свой номер в нем.
Для самых непонятливых — вот памятка. Найдите свой номер в нем.

Но теперь внезапно вопрос сложнее. Ведь только что на стоянку приехал целый бесконечный автобус, который полностью забит пассажирами. Все они сидят на креслах от 0 до ∞. Проще говоря — у нас только что образовалось новая бесконечность посетителей. Куда переселять всех гостей? В комнату n+∞? Но как об этом сообщить постояльцу в три часа ночи? Ему нужна чёткая инструкция, в какой номер переехать. Но мы не зря нашли умного управляющего. Он прекрасно помнит, что у нас есть бесконечное количество как чётных, так и нечётных чисел. И вот вам самое простое решение. Гости переезжают в номер, который равняется 2n. То есть постоялец первой комнаты переезжает во вторую, из комнаты 2 в четвёртую, из 3 — в шестую и так далее. Получается, что все текущие постояльцы занимают все чётные комнаты. Ну а в освободившуюся бесконечность нечётных номеров должны поселиться все пассажиры автобуса... Вот такой вот забавный парадокс. Оказывается, мы спокойно можем в одну бесконечность, запихать другую бесконечность. Всем спасибо, все — свободны. Парадокс тольк...

Еще одна памятка для гостей нашего гостепреимного отеля. Простите, что все время переселяем.
Еще одна памятка для гостей нашего гостепреимного отеля. Простите, что все время переселяем.

Так, стоп, это что за шум такой жуткий? О нет! Это новое испытание для психики, мозга и воображения консьержа. К нам едет бесконечное количество автобусов, аналогичных тому, что сейчас разгружается на стоянке рядом с гостиницей. То есть бесконечность бесконечностей. Урониться и не встать. Что же теперь делать нашему сотруднику? Пока мы будем расселять один автобус по той же схеме, пассажиры других будут сидеть и тупить? Как же поступить? Какой алгоритм использовать? На самом деле, здесь тоже есть несколько способов. Например, метод степени простого числа. Берём и всех постояльцев из комнаты n (number) переселяем в номер 2^n, то есть в 2 в степени n. Гость из первой комнаты переезжает во вторую, из второй в четвёртую, из третьего — в восьмой и так далее. А теперь каждому автобусу присваиваем своё простое число (3, 5, 7, 11, 13, 17 и так далее, на всех хватит — у нас их тоже бесконечность) и заселяем пассажиров в определённые комнаты, основываясь на номере автобуса. Выдаём каждому приехавшему памятку с «адресом комнаты». И он будет выглядеть так: номер автобуса в степени номера кресла (3^n для первого автобуса, 5^n для второго), которое занимал этот пассажир. И по основной теореме арифметике номера комнат не будут совпадать (просто поверьте). К сожалению, подобный метод будет затратным для отеля, так как у нас останется слишком много свободных комнат — те, номера которых не являются степенью простого числа — а их вполне себе достаточно.

Вот так, например, будет выглядеть памятка для пассажиров первого автобуса.
Вот так, например, будет выглядеть памятка для пассажиров первого автобуса.

Второй способ справиться с бесконечным потоком взять все наши транспорты и сказать — номер автобуса b (bus), а у гостиницы это число будет равно нулю, а ещё есть место n внутри автобуса. И вот теперь мы берём и назначаем каждому человеку комнату 2^b*3^n. То есть гость из четвёртой комнаты в отеле должен переехать в... подсчитаем... 2^0*3^4 = 81. А из шестого автобуса и третьего места поселится в номер (2^6*3^3) = 64* 27 = 1728. Но у нас всё ещё останутся пустующие помещения. Вновь не получилось. Зато инструкции для гостей и постояльцев вполне себе чёткие и понятные. Но вот вам прекрасный способ, позволяющий не оставлять незанятых комнат. Вновь берём номер автобуса и номер места, где сидит наш гость, и комбинируем их методом чередования. Вот, например, у пассажира есть автобус 345 и место 789. И, значит, ему нужно будет занять комнату с номером 374859. Если не хватает разрядов, то мы добавляем к началу более короткого числа 0. То есть, человек из автобуса 12 и с кресла 93573 отправится в номер 09030501723. Ну и да, здесь опять мы считаем, что отель — это такой же бесконечный автобус, просто с номером 0. И этот способ гарантирует нам, что все комнаты в отеле будут заселены. Вот оно! Отличный метод. Фух... мы разобрались с этими? Но... Чу! Что это? Блин, я забыл сказать, что наш отель стоит на берегу моря и к нам приближаются бесконечное количество паромов, на каждом из которых стоит бесконечное количество автобусов с... да, вы догадались, бесконечным количеством пассажиров. И как теперь быть?

А кстати, вот так можно тоже обслуживать гостей. По строкам — номер автобуса, а по столбцам — номер кресла. И вот так мы всех обойдем.
А кстати, вот так можно тоже обслуживать гостей. По строкам — номер автобуса, а по столбцам — номер кресла. И вот так мы всех обойдем.

На самом деле, сейчас всё гораздо проще будет — мы можем использовать все те же способы, что и в предыдущем случае, только добавляем ещё и номер парома (p). И для этого подойдёт метод факторизации простых чисел 2^p*3^b*5^n или чередование (то есть смешиваем уже не два, а три числа). И так можно поступать даже с бесконечным количеством морей (s), на которых к нам прибывают бесконечное количество паромов с бесконечным количеством автобусов с бесконечным количеством пассажиров 2^s*3^p*5^b*7^n. Всё. Задача решена для любого количества бесконечностей. А ещё мы выяснили, что лозунг нашего отеля нас не подвёл... «В каждой комнате находится постоялец», и «в гостинице всегда есть место для ещё одного гостя» — в случае с бесконечностью теряют взаимоисключаемость. Как бы подобное ни ломало ваш мозг. На этом мы прощаем... Так, стоп. Это что ещё за шум?

Картинку не нашел, поэтому вот.
Картинку не нашел, поэтому вот.

А, всего лишь ещё один автобус с бесконечным количеством пассажиров, сейчас секунду, мы с ними разделаемся и вернёмся для прощания с вами. Ничего страшного. Наш консьерж без проблем с бесконечными морями разбирался, а здесь — всего-то бесконечный автобус. Так, что там у нас? Хм... странно. В нём бесконечное количество робопассажиров, но у всех есть имена из двух цифр — 0 и 1. Число этих символов в каждом имени... да, вы догадались — бесконечно. То есть можно встретить роботов с позывными вроде 00110... или 01010... и так до ∞. Всё просто, да? Мы такие проблемы на завтрак кушаем. Но... внезапно, наша система начинает рассыпаться, при попытке заполнить адресную книгу. Просто посмотрите на таблицу. У нас всегда будет один человек, который останется без номера. И его имя будет составлено из цифр по диагонали, но с переменой символа. Он не находится в номере 1, ведь имя робота начинается с другой цифры. Этот гость не из комнаты 2, так как вторая цифра ника не соответствует аналогичному символу постояльца из комнаты два. И так далее, вплоть до бесконечности. В математическом смысле это означает следующее: бесконечное количество всех чисел, состоящих только из 0 и 1, настолько велико, что просто не сможет вместиться в наш отель. Всё дело в том, что мы пытаемся запихать неисчисляемое множество роботов из автобуса в гостиницу, где номера бесконечны, но исчисляемы.

Вот как-то так это выглядит.
Вот как-то так это выглядит.

Непонятно? Ну вот возьмём мы все целые положительные числа, начиная с нуля. Вот и наш первый член этой последовательности — 0, потом пойдёт 1, затем 2 и так до ∞. Это исчисляемая бесконечность. А теперь возьмём все дробные числа между 0 и 1. Какое число будет первым в этой последовательности? Ладно, 0. А второе? 0.1? Или 0.01? Или 0.0000000001? Кто знает? Никто. Неисчисляемая бесконечность. И это только что рассыпало гордый девиз нашего заведения. Как получилось, что мы можем вместить в наш отель бесконечное количество бесконечностей, но при попытке вселить числа жёстко ограниченные двумя цифрами, всё рассыпается как карточный домик? Или чё? В общем, добро пожаловать на сервер карательной математики, где ваш мозг подвергается столкновением с иррациональным. Оставайтесь с нами, мы скоро вернёмся с ещё более потрясающими вещами.

----

Тут обязательная просьба поставить лайк и подписаться. Собираюсь писать еще
о многом интересном. А еще у меня есть телеграм-канал:
Массаракш Наизнанку. Там подобные статьи появляются раньше, но без подробностей. А
еще там бывают всякие новости.