対関数 (ついかんすう、英 : Pairing function )とは、2つの自然数 を一意に符号化して1つの自然数を返す関数 である。
集合論 では、任意の対関数を用いて、有理数 全体の集合 Q が可算濃度 であることを証明できる。理論計算機科学 では、自然数の多変数関数 f : N k → N を一変数関数 g : N → N に変換するために使われる。
対関数は非可算無限個存在する。したがってその中には計算可能関数 でないものが非可算無限個存在する。計算可能性理論や計算複雑性理論の文脈では、ある複雑性クラスの中で対をコード化して扱いたいことがあることから、対関数とその逆関数がともに目的の関数クラスに属するような符号化を見つけることが重要となる。
定義
編集
対関数は次のような全単射 関数である。
π
:
N
×
N
→
N
.
{\displaystyle \pi :\mathbb {N} \times \mathbb {N} \to \mathbb {N} .}
カントールの対関数
編集
カントールの対関数は、2つの自然数の対に1つの自然数を割り当てる。
カントール の対関数は次のように定義される対関数である。
π
(
k
1
,
k
2
)
:=
1
2
(
k
1
+
k
2
)
(
k
1
+
k
2
+
1
)
+
k
2
{\displaystyle \pi (k_{1},k_{2}):={\frac {1}{2}}(k_{1}+k_{2})(k_{1}+k_{2}+1)+k_{2}}
k
1
{\displaystyle k_{1}}
と
k
2
{\displaystyle k_{2}}
への対関数の適用をするとき、それによって得られる数を
⟨
k
1
,
k
2
⟩
{\displaystyle \langle k_{1},k_{2}\rangle }
と表記することが多い。
この定義を帰納的に一般化すると、カントールのタプル関数となる。すなわち、
π
(
n
)
:
N
n
→
N
{\displaystyle \pi ^{(n)}:\mathbb {N} ^{n}\to \mathbb {N} }
であり、ここで
π
(
n
)
(
k
1
,
…
,
k
n
−
1
,
k
n
)
:=
π
(
π
(
n
−
1
)
(
k
1
,
…
,
k
n
−
1
)
,
k
n
)
{\displaystyle \pi ^{(n)}(k_{1},\ldots ,k_{n-1},k_{n}):=\pi (\pi ^{(n-1)}(k_{1},\ldots ,k_{n-1}),k_{n})}
カントールの対関数の逆関数
編集
ここで z を次のように定義する。
z
=
⟨
x
,
y
⟩
=
(
x
+
y
)
(
x
+
y
+
1
)
2
+
y
{\displaystyle z=\langle x,y\rangle ={\frac {(x+y)(x+y+1)}{2}}+y}
このときの x と y を求めたい。そのために中間的な値を定義する。
w
=
x
+
y
{\displaystyle w=x+y\!}
t
=
w
(
w
+
1
)
2
=
w
2
+
w
2
{\displaystyle t={\frac {w(w+1)}{2}}={\frac {w^{2}+w}{2}}}
z
=
t
+
y
{\displaystyle z=t+y\!}
ここで t は w の三角数 である。そこで次の二次方程式を解く。
w
2
+
w
−
2
t
=
0
{\displaystyle w^{2}+w-2t=0\!}
w を t の関数で表すと、次のようになる。
w
=
8
t
+
1
−
1
2
{\displaystyle w={\frac {{\sqrt {8t+1}}-1}{2}}}
t が非負実数であれば、これは単調増加する連続関数である。ここで
t
≤
z
=
t
+
y
<
t
+
(
w
+
1
)
=
(
w
+
1
)
2
+
(
w
+
1
)
2
{\displaystyle t\leq z=t+y<t+(w+1)={\frac {(w+1)^{2}+(w+1)}{2}}}
が成り立つので、次が得られる。
w
≤
8
z
+
1
−
1
2
<
w
+
1
{\displaystyle w\leq {\frac {{\sqrt {8z+1}}-1}{2}}<w+1}
従って
w
=
⌊
8
z
+
1
−
1
2
⌋
{\displaystyle w=\left\lfloor {\frac {{\sqrt {8z+1}}-1}{2}}\right\rfloor }
.
以上から z から x と y を計算すると次のようになる。
w
=
⌊
8
z
+
1
−
1
2
⌋
{\displaystyle w=\left\lfloor {\frac {{\sqrt {8z+1}}-1}{2}}\right\rfloor }
t
=
w
2
+
w
2
{\displaystyle t={\frac {w^{2}+w}{2}}}
y
=
z
−
t
{\displaystyle y=z-t\!}
x
=
w
−
y
{\displaystyle x=w-y\!}
以上のようにカントールの対関数には逆関数が存在し、一対一対応している。
順序の言葉で述べるならば、
(
x
,
y
)
{\displaystyle (x,y)}
を和
x
+
y
{\displaystyle x+y}
が小さい順に並べ、和が等しいものについては
y
{\displaystyle y}
が小さい順に並べたとき、
N
2
{\displaystyle \mathbb {N} ^{2}}
から
N
{\displaystyle \mathbb {N} }
への一意的な順序同型がカントールの対関数である。
ゲーデルの対関数
編集
対
(
x
,
y
)
{\displaystyle (x,y)}
を最大値
max
(
x
,
y
)
{\displaystyle \max(x,y)}
が小さい順に並べ、最大値が等しいものについては辞書式順序で並べれば、
N
2
{\displaystyle \mathbb {N} ^{2}}
から
N
{\displaystyle \mathbb {N} }
への一意的な順序同型
P
:
N
2
→
N
{\displaystyle P\colon \mathbb {N} ^{2}\to \mathbb {N} }
が存在する。この関数は次のように表せる。
P
(
x
,
y
)
=
{
x
+
y
2
x
<
y
x
2
+
x
+
y
x
≥
y
{\displaystyle P(x,y)={\begin{cases}x+y^{2}&x<y\\x^{2}+x+y&x\geq y\end{cases}}}
逆関数
Q
,
R
:
N
→
N
{\displaystyle Q,R\colon \mathbb {N} \to \mathbb {N} }
は次のように表せる。
Q
(
z
)
=
min
(
⌊
z
⌋
,
E
(
z
)
)
{\displaystyle Q(z)=\min(\lfloor {\sqrt {z}}\rfloor ,E(z))}
R
(
z
)
=
{
⌊
z
⌋
E
(
z
)
<
⌊
z
⌋
E
(
z
)
−
⌊
z
⌋
E
(
z
)
≥
⌊
z
⌋
{\displaystyle R(z)={\begin{cases}\lfloor {\sqrt {z}}\rfloor &E(z)<\lfloor {\sqrt {z}}\rfloor \\E(z)-\lfloor {\sqrt {z}}\rfloor &E(z)\geq \lfloor {\sqrt {z}}\rfloor \end{cases}}}
ただし
E
(
z
)
=
z
−
⌊
z
⌋
2
{\displaystyle E(z)=z-\lfloor {\sqrt {z}}\rfloor ^{2}}
である。
参考文献
編集
Pigeon, Steven. “Pairing function” . mathworld.wolfram.com (英語).
Nagashima, Takashi (1965), “On a certain class of recursive functions”, Hitotsubashi Journal of Arts and Sciences 16 : 72–81
関連項目
編集
外部リンク
編集
動画
編集