Введение

Мысленный эксперимент с бесконечными множествами. Парадокс отеля Гильберта (в разговорном смысле: Парадокс бесконечного отеля или отель Гильберта) — это мысленный эксперимент, иллюстрирующий контринтуитивное свойство бесконечных множеств. Он демонстрирует, что полностью заполненный отель с бесконечным числом комнат всё равно может принять дополнительных постояльцев, даже бесконечное их количество, и этот процесс можно повторять бесконечное число раз. Идея была предложена Дэвидом Гильбертом в лекции 1925 года «Über das Unendliche», переизданной в 1947 году, и получила широкую известность благодаря книге Джорджа Гамова 1947 года «Одна, две, три… бесконечность».

Парадокс

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

Определенно много новых гостей

С одним дополнительным гостем отель может разместить их и существующих гостей, если бесконечное количество гостей одновременно переедут в другие номера. Гость, находящийся сейчас в номере 1, переезжает в номер 2, гость из номера 2 – в номер 3, и так далее, перемещая каждого гостя из номера n в номер n+1. В бесконечном отеле нет последнего номера, поэтому для каждого гостя найдется место. После этого номер 1 освободится, и туда можно заселить нового гостя. Повторяя эту процедуру, можно освободить место для любого конечного числа новых гостей. В общем случае, если k гостей нуждаются в номере, отель может применить ту же процедуру и переместить каждого гостя из номера n в номер n + k.

Бесконечно много новых гостей

Также можно разместить счётное бесконечное число новых гостей: просто переместите человека, занимающего комнату 1, в комнату 2, гостя, занимающего комнату 2, в комнату 4, и, в общем случае, гостя, занимающего комнату n, в комнату 2n (дважды n), и все комнаты с нечётными номерами (которые счётны) освободятся для новых гостей.

Бесконечно много вагонов с бесконечно много гостей каждый

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

Метод простых степеней

Отправьте гостя из комнаты в комнату, затем разместите первую партию в комнаты, вторую партию – в комнаты; в общем случае, для автобуса номер *n* мы используем комнаты, где *n* – *k*-ое нечетное простое число. Это решение оставляет некоторые комнаты незанятыми (что может быть полезно или бесполезно для отеля); в частности, все числа, которые не являются простыми степенями, такие как 15 или 847, останутся свободными. (Таким образом, строго говоря, это показывает, что количество прибывших меньше или равно количеству освободившихся мест. Проще показать, что количество прибывших также больше или равно количеству освободившихся мест, и, следовательно, что они равны, чем модифицировать алгоритм для точного соответствия.) (Алгоритм работает одинаково хорошо, если поменять местами *n* и *k*, но какой бы выбор ни был сделан, он должен применяться последовательно во всем.)

Метод распределения простых чисел на множители

Каждый человек, сидящий на определенном месте в определенном вагоне, может быть помещен в номер (предполагая, что c=0 для людей, уже находящихся в отеле, 1 для первого вагона и т. д.). Поскольку каждое число имеет уникальную разложение на простые множители, легко увидеть, что всем людям будет предоставлена комната, и никакие два человека не окажутся в одной и той же комнате. Например, человек в комнате 2592 сидел в 4-м вагоне на 5-м месте. Как и метод с использованием простых степеней, это решение оставляет некоторые комнаты пустыми. Этот метод также можно легко расширить для бесконечного количества ночей, бесконечного количества прибывающих и т. д. ( )

Метод пересечения

Для каждого пассажира сравните длины номеров вагона и места, записанных в любой позиционной системе счисления, например, в десятичной. (Считайте каждого проживающего в отеле пассажиром вагона №0.) Если какое-либо число короче, добавьте ведущие нули, пока оба значения не будут иметь одинаковое количество цифр. Затем переплетите цифры, чтобы получить номер комнаты: его цифры будут [первая цифра номера вагона] [первая цифра номера места] [вторая цифра номера вагона] [вторая цифра номера места] и так далее. Гость отеля (вагон №0) в комнате 1729 переезжает в комнату 01070209 (то есть в комнату 1 070 209). Пассажир на месте 1234 вагона 789 отправляется в комнату 01728394 (то есть в комнату 1 728 394). В отличие от решения с использованием простых степеней, это решение полностью заполняет отель, и мы можем восстановить исходный номер вагона и места, обратив процесс переплетения. Сначала добавьте ведущий ноль, если номер комнаты содержит нечетное количество цифр. Затем разделите номер на два числа: номер вагона состоит из цифр, стоящих на нечетных позициях, а номер места – из цифр, стоящих на четных позициях. Разумеется, исходное кодирование произвольно, и роли двух чисел могут быть поменяны местами (место – нечетные позиции, вагон – четные), если это применяется последовательно.

Треугольный метод

Те, кто уже находится в отеле, будут переведены в номер, или в треугольный номер. Те, кто прибывает на автобусе, будут размещены в номере, или в треугольном номере плюс. Таким образом, все комнаты будут заполнены ровно одним гостем. Эту функцию можно визуально представить, построив отель в виде пирамиды с одним рядом комнат в глубину и бесконечной высотой. В верхнем ряду пирамиды находится одна комната: номер 1; во втором ряду – комнаты 2 и 3; и так далее. Столб, образованный крайними правыми комнатами, будет соответствовать треугольным числам. После заполнения этих комнат (переселенными гостями отеля) оставшиеся пустые комнаты образуют пирамиду, точно такую же, как исходная. Следовательно, процесс можно повторять для каждого бесконечного множества. Размещение каждого автобуса по отдельности потребовало бы бесконечного числа шагов, но, используя полученные формулы, гость может заранее определить, в какой комнате он окажется, когда его автобус будет обслужен, и сразу же занять ее.

Метод произвольного подсчета

Пусть множество счётное, поскольку множество счётное, следовательно, мы можем перенумеровать его элементы. Теперь, если , назначим k-го гостя из k-го вагона в k-ю комнату (считая гостей, уже находящихся в отеле, как гостей из k-го вагона). Таким образом, у нас есть функция, которая назначает каждому человеку комнату; более того, это назначение не пропускает ни одной комнаты.

Дальнейшие слои бесконечности

Предположим, что отель находится рядом с океаном, и к нему прибывает бесконечное количество автомобильных паромов, каждый из которых перевозит бесконечное количество автобусов, каждый из которых перевозит бесконечное количество пассажиров. Это ситуация, включающая три "уровня" бесконечности, и её можно решить, расширив любое из предыдущих решений. Метод простых множителей можно применить, добавляя новое простое число для каждого дополнительного слоя бесконечности ( , где – паром). Решение с использованием степеней простых чисел можно применить, возводя простые числа в ещё более высокие степени, что приведёт к очень большим номерам комнат даже при небольших входных данных. Например, пассажир на втором сиденье третьего автобуса на втором пароме (адрес 2 3 2) возведёт второе нечётное простое число (5) в степень 49, что является результатом возведения третьего нечётного простого числа (7) в степень номера его сиденья (2). Номер этой комнаты будет состоять более чем из тридцати десятичных цифр. Метод переплетения можно использовать с тремя переплетёнными "нитей" вместо двух. Пассажир с адресом 2 3 2 пойдёт в комнату 232, а пассажир с адресом 4935 198 82217 пойдёт в комнату #008,402,912,391,587 (ведущие нули можно удалить). Предугадывая возможность любого количества слоёв бесконечных гостей, отель может назначить номера комнат таким образом, чтобы ни одному гостю не пришлось переезжать, независимо от того, сколько гостей прибудет позже. Одно из решений – преобразовать адрес каждого прибывающего в двоичное число, в котором единицы используются в качестве разделителей в начале каждого слоя, а число внутри данного слоя (например, номер автобуса гостя) представляется соответствующим количеством нулей. Таким образом, гость с предыдущим адресом 2 5 1 3 1 (пять бесконечных слоёв) пойдёт в комнату 10010000010100010 (десятичное 295458). В качестве дополнительного шага в этом процессе можно удалить один ноль из каждого сегмента числа; в этом примере новая комната гостя будет 101000011001 (десятичное 2585). Это гарантирует, что каждая комната может быть занята гипотетическим гостем. Если не прибудет бесконечного количества гостей, то будут заняты только номера комнат, являющиеся степенью двойки.

Бесконечные слои гнездования

Хотя комнату можно найти для любого конечного числа вложенных бесконечностей людей, это не всегда верно для бесконечного числа слоев, даже если в каждом слое существует конечное число элементов.

Анализ

Парадокс Гильберта — это истинный парадокс: он приводит к контринтуитивному результату, который является доказуемо верным. Утверждения "в каждой комнате есть гость" и "больше гостей разместить невозможно" не эквивалентны, когда комнат бесконечно много. Поначалу это может показаться нелогичным. Свойства бесконечных множеств существенно отличаются от свойств конечных множеств. Парадокс Гранд-отеля Гильберта можно понять, используя теорию трансфинитных чисел Кантора. Так, в обычном (конечном) отеле с более чем одной комнатой количество комнат с нечётными номерами очевидно меньше общего числа комнат. Однако в Гранд-отеле Гильберта количество комнат с нечётными номерами не меньше общего "числа" комнат. В математических терминах, кардинальность подмножества, содержащего комнаты с нечётными номерами, равна кардинальности множества всех комнат. Действительно, бесконечные множества характеризуются наличием собственных подмножеств той же кардинальности. Для счётных множеств (множеств с той же кардинальностью, что и натуральные числа) эта кардинальность такова: для любого счётного бесконечного множества существует биекция, отображающая это счётное бесконечное множество в множество натуральных чисел, даже если счётное бесконечное множество содержит натуральные числа. Например, множество рациональных чисел — чисел, представимых в виде дроби — содержит натуральные числа как подмножество, но не превосходит множество натуральных чисел, поскольку рациональные числа счётны: существует биекция между натуральными и рациональными числами.