平面に「8」の字を描くパズル

とあるパズルで、答えに納得するまでにひと悶着あった。

 

そのパズルとは、次のようなものである。

問題

「8」の字を、平面上に互いに重なり合わないように非可算個描くことができるだろうか。

 

数学パズルらしい問題文である。

私は最初、できると思った。

まず「8」の字を1つ描き、その2つの輪っかの中にそれぞれ「8」を描く。そして、その小さな「8」の輪っか計4つの中にも同様に「8」を描く。この手順を永遠に繰り返す。どんなに小さくても、「8」を描く以上、面積は0でないからである。すると、ある一つの「8」が01の列で特定されるようになり、01の列が実数と対応するため非可算個になると考えた。

 

しかし、この問題の答えは「できない」であった。

なぜなら、平面上の「8」を、その輪っか2つの内側に含まれる有理数座標(いずれか)のペアに対応させることができるからである。1つの輪っかでx座標y座標があるので、全部で有理数4つ組になる。

こうして対応させると、同じ4つ組になるような「8」は2つ以上描けないことが分かる。せいぜい、片方の輪っかで全体を囲むことしかできない。

そして、有理数が可算である理由を知っていれば、有理数の4つ組が可算であることもすぐに分かる。よって、「8」を非可算個描くことはできないというわけだ。

 

さて、私の最初の説明では非可算個描けるはずだったのだが、問題の答えによると可算個しか描けないらしい。何が間違いだったのか。

 

解説

間違っていたのは、もちろん私の説明である。

01の列が実数に対応するのは、その列が無限長で果てしない場合である。

私の方法で描いた「8」を特定するとして、それを特定するための01の列は有限長である。確かに、その01の列の長さはいくらでも長くなる。しかし、実際に捉えた時、その長さは自然数である。

実数というのは、一つ一つが無限の仕組みなのである。

 

 

今回の勘違いは、可算→非可算の向きだったが、逆もあり得るだろう。

 

非可算を可算に見せかける

次のような主張を考えてみよう。

「実数は可算である。なぜなら、二分探索の要領で番号付けできるからである。0~1の間で考えると、1番目が0.5、その次は0.25と0.75、その次は0.125, 0.375, 0.625, 0.875、という風に番号を付けながら出力するプログラムを考えることができる。」

 

これは先ほどと同じ理由で誤りである。

この方法で小数を出力し続けたとしても、円周率π=3.1415...が出力される時は永遠に来ない。

 

 

このように、勘違いから、新しいパズルの着想を得ることもある。