ヒルベルトの無限ホテルと疑似パラドックス
無限は直感で理解しづらく、古代ギリシャでは多くの数学者が無限を受け入れなかったと言われている。
例えば、一辺が1の正方形の対角線は長さが有限にも関わらず、その値は1.41421356…と無限に続く。また、円は円周の長さも面積も有限なのに、正確な値はどちらも整数の比では表せない。
「改めて考えると違和感あるよね。どれだけ計算しても終わらないんでしょ」
「そうだよ。数学で無限にまつわる話は多いけど、僕が好きなのは無限ホテルのパラドックスだね」
「無限ホテル?」
「数学の有名な思考実験のひとつだ。ドイツのダフィット・ヒルベルトという数学者が発案したもの」
「うわぁ、なんかまた難しそう……」
「まあ直感で理解するのは難しいかも知れないね。大筋は僕が説明するよ」
ある場所に無限ホテルという、部屋の数が無限のホテルがあった。ある日、ひとりの客が訪ねてきた。
「近くにホテルがここしかなかったんだ。どうにかして泊めてくれないか?」
しかし部屋は満室。支配人は考えた末、次のようにアナウンスで客にこう伝えた。
「現在泊まっている部屋番号に、1を足した番号の部屋に移動してください」
つまり、1号室に泊まっている客は2号室、2号室に泊まっている客は3号室、3号室に泊まっている客は4号室……というように移動してもらう。
これにより1号室が空室になり、客は無事ホテルに泊まることができた。
「……とまあ、こんな感じ」
成宮の説明に愛華は眉根を寄せた。明らかに納得していない。
「言いたいことはいっぱいあるけど、部屋の数が無限なのになんで満席になるの? おかしくない?」
「やっぱり最初はそう思うよね」
成宮は困ったように頬を掻いた。ちなみに、この話は「パラドックス」とついてるが正確には疑似パラドックス。直感的には矛盾しているように思えるが、論理的には正しく矛盾はしていない。
「おかしく感じるのは有限と無限がごっちゃになってるからだ。無限は数じゃなくて概念。1億、10京、100無量大数みたいに具体的な数を表わしているわけじゃない」
「じゃあ、∞号室はないの?」
「その表現はあまり適切じゃない。数は記号じゃなくてnやmみたいに文字で表すのが一般的だ。話を整理するために有限の場合を考えてみよう」
ホテルの部屋数が有限だとして、その数をn(nは自然数)とする。部屋が満席なら客の人数は当然n人だ。
今回のケースのように新規の客はn+1人目。有限のホテルにn+1号室は存在しないので客は泊まることができない。
しかし、無限ホテルは部屋が無限にあるのでn+1号室が存在する。だからn号室の客がn+1号室に移動して来たら、n+1号室の客はn+2号室に、n+2号室の客はn+3号室に、n+3号室の客はn+4号室…と無限に操作を行うことができる。
「客が2人なら部屋番号に2。数学的に表現するならn号室の客はn+2号室に移動するんだ。客が3人ならn+3号室。一気に100人来てもn号室の客がn+100号室に移動すれば全員泊まれる」
俺がそう言ってまとめると、愛華は腕を組んで思考する。
「うーん……無限と有限がまったく別物っていうのはわかった。でも、まだしっくりこないなぁ」
どれほどかみ砕いて説明しても、無限を万人に理解させるのは並大抵ではない。「学問に王道なし」とはまさにこのこと。
「無限ホテルのパラドックスってこれで終わり?」
愛華の言葉に成宮はかぶりを振る。
「いいや。今のは客の数が有限のケース。次は客が無限に訪ねてくるんだ」
「客の数も無限? これもさっきと同じ方法で移動するの?」
「そう単純にはいかない。『部屋番号に∞を足した部屋に移動してください』ってアナウンスされても具体的じゃないから客は困るだろう?」
「あー、確かに。じゃあどうするの?」
「自分の泊まっている番号を2倍した番号の部屋に移動するんだよ」
つまり、1号室の客は2号室、2号室の客は4号室、3号室の客は6号室…とn号室の客は2n号室に移動する。
1号室→2号室
2号室→4号室
3号室→6号室
4号室→8号室
…
n号室→2n号室に移動
移動後
1号室→空室
3号室→空室
5号室→空室
7号室→空室
…
奇数番号の部屋はすべて空室
「これなら具体的だから客もスムーズに移動できる」
「数が小さかったらそうかもしれないけど、大きくなったら面倒だよね。1億号室の人は2億号室まで行かなきゃいけないんでしょ」
「まあね。それでも、無限大に比べたら億なんて原子よりも小さいよ。もしかしたら電子より小さいかも」
「数学者って変わったこと考えるよね。部屋の数が無限のホテルとか普通ありえないもん」
「ありえないからこそ面白いんだ。でね、無限ホテルのパラドックスで本当に面白いのはここからなんだ」
「え、まだあるの?」
「そうだよ。安藤は内容知ってるだろ?」
俺は頷いた。無限ホテルのパラドックスで一番頭を使うところだ。
「最後のケースは無限の客を乗せたバスが無限にやってくる。解決策は複数あるんだが単純なものとしては素数の性質を使った方法だ」
まず、ホテルの1号室に泊まっている客は2号室、2号室に泊まっている客は4号室、3号室に泊まっている客は8号室…といったように、2を底として現在泊まっている部屋番号をべき。式で表現するとn号室の客は
次に1台目のバスに乗車している乗客の1人目は3号室、2人目は9号室、3人目は27号室。つまり
2台目のバスに乗車しているバスの乗客は
「この方法だと、小さい順に6、10、12、14、15…のように部屋番号が素数のべき乗ではない部屋はすべて空室になる」
「ってことは、今度は空室の数が無限になるってこと?」
「そう。俺が個人的に気に入ってるのは、インターリーブ方式と呼ばれるものだ。英語表記だと『Interleaving method』」
バスの台数をm、乗客の人数をnとして、m=1、n=234のとき、すなわち1台目のバスに乗っている234番目の客を考える。補足すると無限ホテルはm=0とする。
また、mとnの桁数を等しくするため、m=001とする。次にインターリーブと言う操作を行う。
バスの番号の1桁目0、乗客の番号の1桁目2、バスの番号の2桁目0、乗客の番号の2桁目3、バスの番号の3桁目1、乗客の番号の3桁目4を割り振って「020314」という数字を生成する。
そして、生成された020314の先頭の0を除いた数字。20314号室が乗客の泊まる部屋だ。
「ホテルの1111号室に泊まっている客は、m=0000、n=1111だからインターリーブすると01010101だ。つまり1010101号室に移動してもらう」
インターリーブ方式は逆の操作をすることで、客が乗っていたバスの番号と乗っていた順番がわかるのが利点だ。
「じゃあ、100号室に移動した客は元々……あれ? どこにいたの?」
「桁数が奇数の場合は先頭に0を加える。だから生成された数字は『0100』だ」
一旦数字を分解
0100→0 1 0 0
mの値 1番目と3番目を組み合わせる→00
nの値 2番目と4番目を組み合わせる→10
「よって、100号室に移動した客は元々ホテルの10号室に居たってことだ」
「なるほど。……あっ、今気付いたけど、このインターリーブって全部の部屋埋まるくない?」
「その通り。工夫次第では無限のバスを乗せた無限の船が来ても対処できる」
「何それ。もう何でもありじゃん」
インターリーグ方式は発想力が豊かでないととても思いつかない。ヒルベルト自身が考案したのか、ほかの誰かどうかは知らないがいい頭の体操になる。俺はふいにそう思った。
参考文献
数学を愛する会 会長 いっくん『数学クラスタが集まって本気で大喜利してみた 』 KADOKAWA 2021年
本書では3通りの解説があります。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます