【数学】コラッツ予想を解きたい!02
前回のまとめ
前回見たのは2点です。
1.ツリー
2.ツリー構造が等しいということの定義。全単射写像
を満たすとき構造が等しいと定義しました。
次に何をするか?
正直、今書いている段階でもどうしたらいいか分からないところではあるのですが、現状、これだけでは何もできないので新しい概念を持ち込みたいところですよね。
さてどうするか。
こういうのはどうでしょう?
上の定義を見ると、
なのでもっと広く、一般の
となるような状況について、考察してみるのも面白いかもしれません。
例えば、こんな感じの
1───2─┬─3
└───┘ └─4
1───2───3───4
└───┘
この場合、(総当たり的にやると)答えは5つあるようですが、その内の1つを挙げておきます:
これが条件を満たすことは簡単でしょう。
(※こういう書き方は置換の場合にしかないかもしれませんが、まあいいでしょう)
では、
1───2───3───4
└───────┘
1───2───3───4
└───┘
これは意外と難問のようですね。
やってみると、むむっ? 意外と見つからないぞ!? ってなりました(笑)
とりあえず、コンピューターの力を借りて、総当たりしてみましょう。
ソースコード
t_1 = [3, 1, 2, 3]
t_2 = [2, 1, 2, 3]
def check(f):
for i in range(4):
if(f[t_1[i]-1] - t_2[f[i]-1]):
return 0
return 1
for i0 in range(1, 5):
for i1 in range(1, 5):
for i2 in range(1, 5):
for i3 in range(1, 5):
if(check([i0, i1, i2, i3])):
print([i0, i1, i2, i3])
ななんと! 答えは「なし!」という結果に...
これの結果は、予想外でした。
だって、関数
もう少し状況を調べてみましょう。
1───2───3───4
└───────┘
1─┐ 2───3───4
└─┘ └───┘
こんな状況だったら、答えは
の1つ。
1─┐ 2───3───4
└─┘ └───┘
1───2───3───4
└───────┘
上の状況だったら、答えはなし、となるようです。
その他、いろいろな条件で調査してみると、次のような概念と仮説が生まれます:
Def:ループ長さ
集合
上のツリー A T=\mathrm{Tree}(t) について、ループする要素からなる集合
K = \{ \ x \in A \ | \ \exists n \in \mathbb{N} , \quad x = t^{n}(x) \ \} をとる。このとき、次の集合
L = \{ \ \min \{ n \in \mathbb{N} \ | \ x = t^{n}(x) \} \ | \ \ x \in K \} \ \ をループ長さ集合といい、その元をループ長さと言う。
少し定義はごちゃついてますが、概念はシンプルです。
1─┐ 2───3───4
└─┘ └───┘
なら、
となりますし、
1───2───3───4
└───────────┘
なら、
となるということです。
仮説:f の存在(必要条件)
集合
上の2つのツリー A T_1=\mathrm{Tree}(t_1), \quad T_2=\mathrm{Tree}(t_2) について、ループ長さ集合をそれぞれ
とする。 L_1, \ L_2 \forall l_1 \in L_1, \ \exists l_2 \in L_2, \qquad l_2はl_1の約数 が成り立つならば、
\exists f:A \rightarrow A, \qquad f \circ t_1=t_2 \circ f が成り立つ。
例えば、以下のような時は、
1───2───3───4───5───6
└───────────────────┘
1───2───3─┬─4───5
└───────┘ └─6
ループ長さは、
となるので、条件を満たします。
そして実際、総当たりすると3つの
ソースコード
t_1 = [6, 1, 2, 3, 4, 5]
t_2 = [3, 1, 2, 3, 4, 3]
def check(f):
for i in range(6):
if(f[t_1[i]-1] - t_2[f[i]-1]):
return 0
return 1
for i0 in range(1, 7):
for i1 in range(1, 7):
for i2 in range(1, 7):
for i3 in range(1, 7):
for i4 in range(1, 7):
for i5 in range(1, 7):
if(check([i0, i1, i2, i3, i4, i5])):
print([i0, i1, i2, i3, i4, i5])
そして同時に、これは仮説を証明する上でコアとなるような発想を与えてくれています。
例えば、2つのツリーのループする部分が以下のようだったとしましょう。
1───2───3───4───5───6
└───────────────────┘
7───8───9
└───────┘
まず
を用いて、他の行先を決定します。つまり、例えば
となって、すべて決定されます。また
では、次のような場合はどうでしょうか。
1───2───3───4───5───6───11───12───13───...
└───────────────────┘
7───8───9
└───────┘
そして、最もシンプルな発想は、同じく
とするということです。
一般化のため、これを
の両辺に右から
となるので、これを使うイメージです。
(※数式はイメージです)
こんなイメージ。
正確に書くとこうなります:
のループしている要素の集合 T_2 上で \{ 7, \ 8, \ 9 \} は全単射。よってこの上で、逆関数 t_2 を定義できる。 t_2^{-1}
ここでとなる任意の t_1(x)= 6 に対し、 x f(x)=t_2^{-1}(f(6)) と定める。
では実際に、仮説を証明してみましょう。
このような発想でやる場合、
proof.)
のループ長さ集合 T_1 とそのそれぞれの元に対応するループ要素集合 L_1 は次のように書ける: K_i^{1} L_1 = \{l_1^{1}, \ ... \ , l_n^{1} \} \\ K_i^{1} = \{a_{i, \ 1}, \ ... \ , a_{i, \ l_i^{1}} \} このとき、各
に対し、 l_i^{1} が存在して、 l_i^{2} \in L_2 は l_i^{2} の約数となるとできる。 l_i^{1} ここで、各
に対応するループ要素集合 l_i^{2} は次のように書ける: K_i^{2} K_i^{2} = \{b_{i, \ 1}, \ ... \ , b_{i, \ l_i^{2}} \}
は集合 t_2 上で全単射だから、この上で、逆関数 \cup_i K_i^{2} を定義できる。 t_2^{-1}
ここでを次の2つにより定義する: f \begin{align*} \mathrm{1.} & \qquad \forall i, \quad f(a_{i, \ 1})=b_{i, \ 1} \\ \mathrm{2.} & \qquad t_1(x)=y \quad \Rightarrow \quad f(x)=t_2^{-1}(f(y)) \end{align*} これがwell-definedであることは、ループしない要素に対しては明らか。ループする要素についても、
は l_i^{2} の約数だから整合性は取れている。 l_i^{1}
また、の像は集合 f 上にある。 \cup_i K_i^{2}
最後、f \circ t_1=t_2 \circ f を見る。
t_1(x)=y, \ f(x)=t_2^{-1}(f(y)) が成り立っているとき、
f(t_1(x))=f(y)=t_2(t_2^{-1}(f(y)))=t_2(f(x)) が成立する。
の定義より、上式は任意の f に対して成立する。(証明終) x \in A
となんとか証明できました。
これ、我ながら、なかなか筋の良い展開な気がしています。というのも、コラッツ予想は(発散する列がなければ)ループする要素があるかどうかの議論なので、なんとなくおぼろげですが近づけた感じはありますよね。
そして、さらにこの定理を発展させる上で、気になるのは以下の2点です:
・無限に対しても成り立つか?
・逆も成り立つか?
実は、逆については意外と簡単のようなのでやってみましょう。
Thm:f の存在(必要十分条件)
有限集合
上の2つのツリー A T_1=\mathrm{Tree}(t_1), \quad T_2=\mathrm{Tree}(t_2) \ \ \ について、ループ長さ集合をそれぞれ
とする。 L_1, \ L_2
次のは同値である。 (\mathrm{i}), \ (\mathrm{ii}) \begin{align*} & (\mathrm{i}) \qquad \forall l_1 \in L_1, \ \exists l_2 \in L_2, \qquad l_2はl_1の約数 \\ & (\mathrm{ii}) \qquad \exists f:A \rightarrow A, \qquad f \circ t_1=t_2 \circ f \quad \end{align*}
proof.)
は既に示したので、 (\mathrm{i})\ \Rightarrow \ (\mathrm{ii}) を示す。 (\mathrm{i})\ \Leftarrow \ (\mathrm{ii})
任意にを取り、対応するループ集合の元の1つを l_1 \in L_1 とする。 a a_i = t_1^{i}(a) によって
を定義すると、 a_i を考えればよい。さらに、 i=1, \ ... \ , \ l_1 b_i = f(a_i) とする。このとき、任意の
に対して、 i t_2(b_i)=t_2(f(a_i))=f(t_1(a_i))=f(a_{i+1})=b_{i+1} が成り立つ。この等式を
に対して考えれば、 i=1, \ ... \ , \ l_1 b_1 = t_1^{l_1}(b_1) が言える、これで十分性は示された。(証明終)
みんな大好き同値が言えました。
ってことは今回は終了です。
次回は...どうするんでしょうかね? う~ん、どうするんでしょう?
分かりませんが、今回はおしまい! ではでは。
Discussion