タッパーの自己言及式 part 1

タッパーの自己言及式

http://www.dgp.toronto.edu/people/mooncake/papers/SIGGRAPH2001_Tupper.pdf

とは\displaystyle\mod \lfloor (\lfloor \frac{y}{17}\rfloor 2^{-17\lfloor x\rfloor-\mod(\lfloor y\rfloor,17)},2)\rfloor[0,106]\times [k,k+17]のグラフを描くとこの式自体が表示されるというものだ。ここで\lfloor a\rfloora以下の最大の整数で日本ではガウス記号[a]と同じ。\mod(a,b)xyで割ったあまりのこと。

 

この式を理解するための準備をしておこう。

 

(1) 2進数n2^kの位の数字が0か1かを知る方法

シフト演算子を使いたい所であるが、これを式で表現する。2で割ると1桁右にずれるので、2^{k}で割った商の2^{0}の位を求めれば良い。つまり

 

\mod(\lfloor n\times 2^{-k}\rfloor,2)

 

となる。これは0または1の値をとるので、\displaystyle\frac{1}{2}と比べて、真なら1、偽なら0となる評価を行えば良いので、

 

\displaystyle\frac{1}{2} \lt \mod (\lfloor n\times 2^{-k}\rfloor,2 )

 

が2進数n2^kの位の数字となる。

原論文とは床関数をとる場所が少し違うが、タッパーの自己言及式の本質は、ここにある。

 

(2)2次元配列と1次元配列の行き来

abの長方形の中の座標(x,y)を縦に一列に並べる。

但し座標はx=0,1,...,b-1及びy=0,1,...,a-1とする。このとき、座標(p,q)ap+q番目にあることになる。

 

この操作の逆を考える。1次元配列のn番目(最初は0番目)の要素を縦abの長方形に並べるとき、

\displaystyle\left(\lfloor\frac{n}{a}\rfloor,\mod(n,a)\right)

という座標に対応する。

 

2023.12.25追記

言及されたという通知がきました。自己言及式だけに。

taq.hatenadiary.jp