🙌

【数学】コラッツ予想を解きたい!03

2022/08/11に公開

前回のまとめ

前回はループ長さ集合の定義と、次の定理を証明しました:

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 \} \ \

をループ長さ集合といい、その元をループ長さと言う。

Thm:f の存在(必要十分条件)

有限集合 A 上の2つのツリー

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*}

まずは前回の続き

抽象的な話に入る前に、もう少し土台作りをやりましょう。
 なんと上記のThmは可算集合でも成立するようですね。

Thm:f の存在(必要十分条件)

可算集合 A 上の2つのツリー

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})\ \Leftarrow \ (\mathrm{ii}) は有限のときと同様にすればよい。問題は (\mathrm{i})\ \Rightarrow \ (\mathrm{ii}) である。
まず有限の時と同様に 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*}

重要なのは、この定義の場合、定義域が A 全体を覆っているとは限らないところである。
ある未定義の a \in A が1つあったら、

\begin{align*} \mathrm{1.} & \qquad \forall i, \quad f(a)=b_{1, \ 1} \\ \mathrm{2.} & \qquad t_1(x)=y \quad \Rightarrow \quad f(x)=t_2^{-1}(f(y)) \\ \mathrm{3.} & \qquad t_1(x)=y \quad \Rightarrow \quad f(y)=t_2(f(x)) \end{align*}

によって、定義域を拡張する。
まだ、未定義の a \in A が残っていれば、同様の方法で定義域を拡張し、以下無限回繰り返す。
A は可算なので、これで f は定義された。
またこの時、

f \circ t_1=t_2 \circ f

は成立する。(証明終)

可算なら問題なく成立するようですね。
土台作りは一旦ここまで。また、超抽象的で感覚的なお話になってきます。

こっからどうするか

さて、これから何をするか。まずは状況整理しましょう。

今までの流れ

コラッツ予想の肝は「ツリー」だと筆者は見ました。
なぜなら、それ以外に難しい発想をしていないと思うからです。3倍して1足すのも、2で割るのも、奇偶判定も、さほど難しいことではありません。コラッツ予想を未解決問題にまで難しくしている本質は、「ツリー」という発想にあるのではないかと考えているわけです。
まず初めにやったことは、ツリー上に「構造が等しい」という概念を導入したことです。
そこで、全単射写像 \sigma

\sigma \circ t_1=t_2 \circ \sigma

という式が出てきたわけです。
次にやったことは、この上式について一般の関数 f に対して成り立つ場合を考察しました。

f \circ t_1=t_2 \circ f

流れで言うと、f と一般に広げられたのですから、\mathrm{Tree}(f) を考察するのは自然でしょう。
また全体的なイメージとして、やりたくなることは、
\forall \exist \forallのような並びの概念の導入する
\max \min, \min \maxのような並びの概念を導入する
・この新しいツリー\mathrm{Tree}(f)全体を1点のノードと見なし、ツリー上のツリーを考えたくなるのも普通だと思います
 ただ、これらの概念を自然に定義するための「道」がないというのが実情です。

\mathrm{Tree}(f)を考察したい

ではとりあえず、\mathrm{Tree}(f)を考察しましょう。
しかし、これは意外と具体的に何をやるのか難しいです。というのも、今まで見てきたt_1, t_2と何が違うんだ、という気もします。やはり、起点としては、

f \circ t_1=t_2 \circ f

をこねくり回すしかないところでしょうか。
例えば、もしある関数\phi:A \rightarrow Aが存在して、

t_2 = t_1 \circ \phi

が成立するなら、

t_1 \circ (\phi \circ f) = f \circ t_1

とはなりますが。僕たち(私たち)入れ替わってる!? 状態ですが、発展性があるかどうかは微妙です。

他にもやれることはいくつか考えられますが、どれもどうやって発展させていくのかが難しい気がしています:

max-minの概念導入
T
1───2─┬─3───4
└───┘ └─5

というツリーに対して、ループするまでが一番長いのは、

4 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 2

です。このツリーに対し、ループするまでに最大4回かかるという意味で、「4」を対応させることを考えます。
これは定式化すると、関数 t: A \rightarrow A に対して、

\max_{x \in A} \min \{n \in \mathbb{N} \ | \ \exists i<n, \ t^n(x)=t^i(x) \}

となります。しかし、これをどう使っていくのかは難しいところです。

素因数分解的な概念(ちょっと違う?)

今までの定理で出現した概念として次のようなものがありました:

(\mathrm{i}) \qquad \forall l_1 \in L_1, \ \exists l_2 \in L_2, \qquad l_2はl_1の約数

この概念を直接使うことを考えた場合、次のようなツリーを考えたくなるでしょう:

T2
1───2  3───4───5  6───7───8───9───10  ...
└───┘  └───────┘  └───────────────┘

ループ長さが素数列 2,\ 3,\ 5,\ 7,\ 11,\ ... となるようなツリーを \mathrm{Tree}(t_2)として考えれば、任意のツリー \mathrm{Tree}(t_1) に対して、

f \circ t_1=t_2 \circ f

となる f が存在します。だから何だ感はありますが...

偶奇という概念を導入しよう

ではどうするか?
タイトルで言ってしまってますが、偶奇性もとりあえずいれとけ、みたいな話はある気がしています。コラッツ予想とは、

t(x) = \left\{ \begin{array}{ll} x/2 & (x:\mathrm{even}) \\ 3x+1 & (x:\mathrm{odd}) \end{array} \right.

なる t によって構成されるツリーに関する話題です。偶奇はコラッツ予想と切っても切れない関係と言いますか、概念として非常に重要な位置を占めるように見えます。なので、そもそも偶奇を含めてツリーを考えていくべきだったのかもしれません。
なお、偶数と奇数に限らず2つに分ければいい、と抽象化しておきます。

「Eから見た構造」という概念を導入しよう

集合 A を部分集合 E \subset A で分割することを考えます。
O = A \setminus E とすれば、A = E + O となります。この状況で、構造が等しいという概念はどうなるでしょうか。

\begin{align*} A &= \{e_1,\ e_2,\ e_3,\ o_1,\ o_2,\ o_3 \} \\ E &= \{e_1,\ e_2,\ e_3 \} \\ O &= \{o_1,\ o_2,\ o_3 \} \end{align*}

T_1

T_2

こんな感じで、それぞれのノードが E,\ O のどっちに所属しているのかということを含めて、構造の一致を考えるのが一番自然でしょう。

こんなイメージから、

\sigma(t_1(o_2))=\sigma(e_1)=e_3=t_2(o_1)=t_2(\sigma(o_2))

とやるのは、前の議論と同じ。変わるところは \sigma がただの全単射写像ではないというところです。

\sigma(o_i) = o_j \\ \sigma(e_i) =e_j

のように、\sigma によって O, E 集合のどちらかに所属するのかと言うのは変わらないはずなので、E 上の全単射 \sigma_eO 上の全単射 \sigma_o を用いて以下のように表せる必要があります。

\sigma(x) = \left\{ \begin{array}{ll} \sigma_e(x) & (x \in E) \\ \sigma_o(x) & (x \in O) \end{array} \right.

よって、新しい構造はこうなります:

Def:ツリーの構造

集合 A 上に2つのツリー \mathrm{Tree}(t_1),\ \mathrm{Tree}(t_2) がある。また E \subset A とする。
このとき、ある2つの全単射写像 \sigma_e:E \rightarrow E,\ \sigma_o:A \setminus E \rightarrow A \setminus Eが存在して、

\begin{align*} & \sigma(x) := \left\{ \begin{array}{ll} \sigma_e(x) & (x \in E) \\ \sigma_o(x) & (x \in A \setminus E) \end{array} \right. \\ \\ & \sigma \circ t_1=t_2 \circ \sigma \end{align*}

が成り立つとき、T_1T_2E から見た構造は等しいという。

fの一般化

さらに、今までの議論展開と同様のことをしていきましょう。
つまり、

\begin{align*} & f(x) := \left\{ \begin{array}{ll} f_e(x) & (x \in E) \\ f_o(x) & (x \in A \setminus E) \end{array} \right. \\ \\ & f \circ t_1=t_2 \circ f \end{align*}

となるような一般の関数 f_e:E \rightarrow E,\ f_o:A \setminus E \rightarrow A \setminus E が存在する条件を考えたいということです。
例えば次のような2つのツリーに対して考えてみましょう。

T_1

T_2

パソコンの力を借りると、答えはただ1つあることが分かります。

f= \begin{pmatrix} e_1 & e_2 & o_1 & o_2 \\ e_1 & e_1 & o_1 & o_1 \end{pmatrix} \
ソースコード
python
e1 = 0
e2 = 1
o1 = 2
o2 = 3
A_name = ['e1', 'e2', 'o1', 'o2']
A = [e1, e2, o1, o2]
t1 = [o1, o2, e1, e1]
t2 = [o1, e1, e1, e2]

def check(f):
    for i in range(4):
        if(f[t1[i]] - t2[f[i]]):
            return 0
    return 1

for ie1 in range(2):
    for ie2 in range(2):
        for io1 in range(2, 4):
            for io2 in range(2, 4):
                if(check([ie1, ie2, io1, io2])):
                    print(A_name[ie1], A_name[ie2], A_name[io1], A_name[io2])

では次のようなものだったらどうでしょうか。

T_1

T_2

これは解なしのようです。
では次は...

T_1

T_2

これは解が1つあります。

f= \begin{pmatrix} e_1 & e_2 & o_1 & o_2 \\ e_1 & e_2 & o_1 & o_1 \end{pmatrix} \

では次は...

T_1

T_2

これは最初の例の T_1, T_2 を逆にしたものですが、どうやら解なしのようですね。

なんとなく条件は分かってきているでしょう。
しかし、スッキリとして表現を見つけられるでしょうか?
今までの約数的な発想を使おうとすると、結構ごちゃごちゃする気がします。

なので次のような新しい概念を中心に考えてみてはどうでしょうか:

Def:巡回列

集合 A 上にツリー \mathrm{Tree}(t) がある。また E \subset Aとその定義関数を

\chi_E(x) = \left\{ \begin{array}{ll} 1 & (x \in E) \\ 0 & (x \in A \setminus E) \end{array} \right.

とする。このとき、a \in A に対し、次の数列

\chi_E(a),\ \chi_E(t(a)),\ \chi_E(t^2(a)),\ \chi_E(t^3(a)),\ ...

a を起点とする E についての巡回列という。

巡回列という言葉があるのかは知りませんが、こんな定義をしてみました。

例えば、
T

について、o_2は、

o_2 \rightarrow e_2 \rightarrow e_1 \rightarrow o_1 \rightarrow e_1 \rightarrow o_1 \rightarrow ...

のように推移していくので、o_2 を起点をする巡回列は、

0,\ 1,\ 1,\ 0,\ 1,\ 0,\ ...

となるということです。
今回はこれで終了。次回はこの新しい概念を使ってどこまで行けるかというゲームになりそうですね。では。

Discussion