X



トップページ数学
1002コメント517KB
コラッツ予想がとけたらいいな
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001132人目の素数さん
垢版 |
2012/10/14(日) 10:32:39.71
525 名前:132人目の素数さん[sage] 投稿日:2012/09/03(月) 18:24:27.22
http://d.hatena.ne.jp/righ1113/
コラッツ予想について、証明を考えてみました。
ご指摘ご意見ご感想など、ぜひよろしくお願いします。
0839132人目の素数さん
垢版 |
2018/05/03(木) 17:32:04.01ID:Edef9/wk
プログラム化は難しいと思うけど、
奇数kについて
R_1(k)={奇数m|ある整数r≧0について3m+1=k・2^r}
R_n+1(k)=∪_[m∈R_n(k)] R_1(m)
という操作でできる集合R_n(k)を考えると、
n→∞におけるR_n(1)の極限R(1)がすべての奇数の集合と一致するかどうか、という問題はコラッツ予想と同じにならないかな?
0840132人目の素数さん
垢版 |
2018/05/03(木) 17:40:34.30ID:Q+4f9U1i
証明が完成するまでmodに何回3をかけたかに注目したら何か出てくるかな?
0841786 ◆5A/gU5yzeU
垢版 |
2018/05/03(木) 17:56:31.46ID:VqsJsG3V
>>837
うーん、そうですね…
k が既に 1 に到達することが分かっている数の場合、
a=k と取れてしまうわけですから調べる意味がなくなります。
wikipediaによると、5*2^60 までは 1 に到達することが分かっているそうなので、
k を 5*2^60 より大きくしないといけないことになりますが…

>>838
今のところそうですね。
まあ、やってみたら自然とそうなったという感じです。
0843132人目の素数さん
垢版 |
2018/05/03(木) 18:03:43.93ID:Q+4f9U1i
プログラム組めるとデータ量が圧倒的に違うからなんとかしたいなあ
0844132人目の素数さん
垢版 |
2018/05/03(木) 20:14:22.88ID:Q+4f9U1i
>>786がプログラム組めないのが痛いなあ
可能な限りシステマチックな手順に証明手順を落とし込めないですか?
0845786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 00:22:45.95ID:he9tcl6d
n が素数の場合に限りましたが、なんとか手順をまとめてみました。
以下の操作が終了すれば、n=p の場合に任意の k で予想が成り立つことになるはずです。

プログラムに関しては素人なので、おかしいところ、実装が難しいところ等あるかもしれません。
例を併記して述べますが、あとで操作だけをまとめたものも書きます。


p を 5 以上の素数とする。
以下の例は、p=7 の場合である。

(1) Z/pZ において、2 を何回かかけることによって移りあう元を同じグループとして A1,A2,… とグループ分けする。


Z/7Z において
A1={0}
A2={1,2,4}
A3={3,5,6}

(2) Z/3pZ において、3 の倍数でも p の倍数でもない数について同様に B1,B2,… とグループ分けする。


Z/21Z において
B1={1,2,4,8,11,16}
B2={5,10,13,17,19,20}

(3) Z/pZ の各元 a に対し、a がどの Ai に属すか、3a+1 がどの Bj に属すかを見る。(どの Bj にも属さないこともある)
各 a に対して得られた組 (Ai,Bj) を記録していく。組が被った場合、改めて記録しなくてもよい。


a=0 に対しては 0∈A1,3*0+1=1∈B1 なので、組 (A1,B1) を得る。
全て調べると、(A1,B1),(A2,B1),(A2,B2),(A3,B1),(A3,B2) を得る。
0846786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 00:24:05.38ID:he9tcl6d
(4) A1,A2,… のうち、全ての Bj との組が得られていないものがあれば、それをひとつ選び、A'とする。
以下の操作を全て終えた後、まだ選んでない A' の候補があれば A' を取り換えてまたここからやり直す。
A' の候補が残っていなければ操作を終了する。


得られていない組は (A1,B2) だけなので、A'=A1 とする。

(5) Z/9pZ において、条件
「mod 3p で見た時、組 (A',Bj) が得られていないような Bj に属する」
を満たす数全体を考え、この数たちを (1), (2) と同様にグループ分けし、C1,C2,… とする。


組 (A',Bj) が得られていないような Bj は B2 しかない。
mod 21 で B2 に属するような Z/63Z の元を列挙すると
{5,10,13,17,19,20,26,31,34,38,40,41,47,52,55,59,61,62}
となり、これをグループ分けすると
C1={5,10,17,20,34,40}
C2={13,19,26,38,41,52}
C3={31,47,55,59,61,62}
を得る。

(6) 組 (A',Bj) が得られているような Bj 全てと、C1,C2,… に対して (3) と同じことを行う。


組 (A',Bj) が得られているような Bj は B1 のみ。
B1 の元 a に対し、3a+1 が C1,C2,C3 に属するかを見ていく。
(B1,C1),(B1,C2) を得る。
0847786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 00:25:04.52ID:he9tcl6d
(7) (4) の「A1,A2,…」を「組 (A',Bj) が得られているような Bj 全て」に、
Bj を Cj に、A' を B' に取り換えて同じことをする。
さらに (5),(6) の A,B,C をそれぞれ B,C,D に、p を 3p に取り換えて同じことをする。


組 (B1, C3) のみ得られていないので、B'=B1 とする。

組 (B',Cj) が得られていないような Cj は C3 しかない。
mod 63 で C3 に属するような Z/189Z の元を列挙すると
{31,47,55,59,61,62,94,110,118,122,124,125,157,173,181,185,187,188}
となり、これをグループ分けすると
D1={31,47,55,59,61,62,94,110,118,122,124,125,157,173,181,185,187,188}
という一つのみのグループを得る。

組 (B',Cj) が得られているような Cj は C1, C2 の二つ。
(3) と同様に調べると、組 (C1,D1),(C2,D1) を得る。

(8) (7) と同様に、さらに再帰的に繰り返す。


C' の候補がないので、(8)を終了する。
(7)に戻るが、B' の候補が残っていないので(7)を終了する。
(4)に戻るが、A' の候補が残っていないので全ての操作を終了する。
0848786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 00:25:44.66ID:he9tcl6d
操作だけをまとめます

p を 5 以上の素数とする。

(1) Z/pZ において、2 を何回かかけることによって移りあう元を同じグループとして A1,A2,… とグループ分けする。

(2) Z/3pZ において、3 の倍数でも p の倍数でもない数について同様に B1,B2,… とグループ分けする。

(3) Z/pZ の各元 a に対し、a がどの Ai に属すか、3a+1 がどの Bj に属すかを見る。(どの Bj にも属さないこともある)
各 a に対して得られた組 (Ai,Bj) を記録していく。組が被った場合、改めて記録しなくてもよい。

(4) A1,A2,… のうち、全ての Bj との組が得られていないものがあれば、それをひとつ選び、A'とする。
以下の操作を全て終えた後、まだ選んでない A' の候補があれば A' を取り換えてまたここからやり直す。
A' の候補が残っていなければ操作を終了する。

(5) Z/9pZ において、条件
「mod 3p で見た時、組 (A',Bj) が得られていないような Bj に属する」
を満たす数全体を考え、この数たちを (1), (2) と同様にグループ分けし、C1,C2,… とする。

(6) 組 (A',Bj) が得られているような Bj 全てと、C1,C2,… に対して (3) と同じことを行う。

(7) (4) の「A1,A2,…」を「組 (A',Bj) が得られているような Bj 全て」に、
Bj を Cj に、A' を B' に取り換えて同じことをする。
さらに (5),(6) の A,B,C をそれぞれ B,C,D に、p を 3p に取り換えて同じことをする。

(8) (7) と同様に、さらに再帰的に繰り返す。
0849132人目の素数さん
垢版 |
2018/05/04(金) 01:15:28.20ID:PAX/KItK
おおお凄い
あんたプログラムの才能あるよ
まあ数学できる人はプログラムできても不思議じゃないけど
あとは>>1に任せたっwww
0850786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 09:55:57.24ID:he9tcl6d
すいません、(7) 以降に無駄があったので次のように修正します。

(7) (6) で得られた組に全ての Ci が現れれば操作を終了する((4)に戻る)。
一度も現れなかった Ci があれば、
Z/27pZ において、条件
「mod 9p で見た時、(6)の組に一度も現れなかった Ci に属する」
を満たす数全体を考え、この数たちを (1), (2) と同様にグループ分けし、D1,D2,… とする。

(8) (6)の組に現れた Cj 全てと D1,D2,… に対して (3) と同じことを行う。

(9) (7)(8) の C,D をそれぞれ D,E に、p を 3p に、(6) を (8) に変えて同じこと行う。
以降、同様に繰り返す。


例に変化はありません。
(7) 以降は再帰ではなく単なる繰り返しになります。
0851786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 10:25:18.46ID:he9tcl6d
いくつか補足をば。

このアルゴリズムの正当性を説明するには、次の補題が必要です。

補題
p を 5 以上の素数とする。
任意の木には、3 の倍数でも p の倍数でもない数が含まれる。

証明
T を木とし、3 の倍数でない数 b∈T を任意に取る。
b が p の倍数でなければ示すことはない。
b が p の倍数であるとき、
奇数になるまで b を 2 で割って得られる奇数を b' とおくと
3b'+1∈T であり、3b'+1 は 3 の倍数でも p の倍数でもない。□


上で書いた例を元に、
n=7 でどのように証明ができるのかをざっと説明します。

T を木とし、3 の倍数でも 7 の倍数でもない b∈T を任意に取る。
b は mod 21 で B1,B2 のいずれかに含まれる。
B1 であれば Z/7Z の全ての数を構成できる。
B2 であれば Z/7Z の 0 以外の全ての数を構成できる。

b∈B2 のときは、b は mod 63 で C1,C2,C3 のいずれかに含まれる。
C1,C2 であれば、B1 に含まれる数を構成できる。

b∈C3 のときは、b は mod 189 で D1 に含まれる。
よって C1 または C2 に含まれる数を構成できる。

大体こんな流れです。


あと、特定の k のみについて検証したければ
(1)の出力を k が含まれるグループのみにして下さい。
0854132人目の素数さん
垢版 |
2018/05/04(金) 11:06:01.81ID:PAX/KItK
おっさすが
頑張れー
工数はどれくらいかな
1週間位?
0856132人目の素数さん
垢版 |
2018/05/04(金) 11:37:11.89ID:PAX/KItK
できればプログラムは計算過程を出力して
>>786が検証できるようにして欲しいな
0857132人目の素数さん
垢版 |
2018/05/04(金) 15:57:32.57ID:ksPNdhsW
ちなみにこのアルゴリズム素数限定らしいですが
合成数を入力したらどうなるんですかね
無限ループ?
0858786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 17:00:03.61ID:he9tcl6d
>>1>>852もありがとうございます。

>>857
素数に限ったのは>>851の補題があるから…と思っていたのですが、
よく考えたらこれ p が素数じゃなくても奇数なら成り立ちますね。
アルゴリズムの方も、素数に限らず奇数なら大丈夫な気がしてきました。

偶数を入れてしまうと、2倍写像が可逆にならないことにより
仮にプログラムがうまく動いたとしても証明になりません。
0859righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/04(金) 17:42:36.90ID:Y7qh+Kgz
今日は(3)までできました。Haskellでやっています。

*CollatzMod> main
素数pを入力してください
7
Z/pZ : [0,1,2,3,4,5,6]
A : [[0],[1,2,4],[3,5,6]]
Z/3pZ : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
B : [[1,2,4,8,11,16],[5,10,13,17,19,20]]
(3) tuple : [([0],Just [1,2,4,8,11,16]),([1,2,4],Just [1,2,4,8,11,16]),([1,2,4],Nothing),([3,5,6],Just [5,10,13,17,19,20]),([1,2,4],Just [5,10,13,17,19,20]),([3,5,6],Just [1,2,4,8,11,16])]
*CollatzMod>
0861righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/04(金) 17:51:58.20ID:xZSMHkYS
難易度は、チョイ難しい、ってとこですかね〜
0863132人目の素数さん
垢版 |
2018/05/04(金) 18:21:33.28ID:PAX/KItK
しかし>>786もプログラム覚えたらいいのに
メキメキ上達すると思いますよ?
便利だし
0864786 ◆5A/gU5yzeU
垢版 |
2018/05/04(金) 23:46:39.07ID:he9tcl6d
>>859
おお、なんか感動した。
ありがとう、続きもなにとぞよろしく頼みます。

>>862
いや、難しさを共有できるだけでもありがたいです。
n=19 の場合は 2 が原始根になるので A は
 A1={0}, A2={0以外}
の2つ、B も2つで得られない組は1つのみ、
それから C が3つ、という感じになるはずですがどうだったでしょうか。

2 が原始根かつ p≡1 (mod 3) のときは必ずこうなります。
ですが、この後それぞれの C を含む組が得られるか、という部分について一般的な理論がまだできていません。
プログラムを通じてその辺のヒントが得られればいいなと思っています。

>>863
いや、やろうとしたことはあるんですが、
プログラミングができる環境を得る方法がよく分からなくて断念した経験がありまして。
また試してみようかな
0865132人目の素数さん
垢版 |
2018/05/05(土) 02:25:34.92ID:vsDCVod3
PCが一台あれば、無償アプリのどれかを使ってなんとかなりそうに思う
0866132人目の素数さん
垢版 |
2018/05/05(土) 19:02:00.90ID:WEgbDwmq
>>1のプログラム作成の進捗具合はどうですかね?
そろそろ本格的に難しい部分に差し掛かって手が止まってもおかしくないですが
>>1をみくびりすぎかな?
0868132人目の素数さん
垢版 |
2018/05/05(土) 20:43:19.54ID:WEgbDwmq
乙です
順調そうでなによりです
0869786 ◆5A/gU5yzeU
垢版 |
2018/05/05(土) 23:35:20.36ID:WoiID/ke
>>867
乙です。
重ね重ねありがとうございます。


>>805で挙げたものの証明が終わってないので
ちょっと進めときます。

・n が 5 以上の素数、Z/nZ において 2 が原始根、k≠0 の場合

まず、k=1,2,…,n-1 の場合は n=5 の場合と同様。

定理
T を木とする。p を 5 以上の素数とし、Z/pZ において 2 が原始根であると仮定する。
k を 1,2,…,n-1 のいずれかとする。このとき、ある a∈T が存在して a≡k (mod p) となる。

証明
n=5 の場合(>>833) と全く同様なので省略。□


これで>>805の残りは4つめと5つめですが、5つめはプログラムで確認できることなので
あとは4つめだけを書いていくことにします。
今日はちょっと時間がないので明日にでも。
0870132人目の素数さん
垢版 |
2018/05/06(日) 13:40:43.22ID:JU60Gd4S
新参です
コラッツ予想が解ける一歩手前でしたが一瞬寝落ちして表が消えた状態で上書き保存されて泣きそうです
証明はきわめてシンプルになります
0872786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 16:07:53.88ID:qQXj/e4z
昨日の続き。
群論を使います。
Z/nZ の乗法群を (Z/nZ)* と書きます。


・n が 5 以上の素数、Z/nZ において 2 が原始根、k=0 の場合

素数であることを強調するために、n=p とおく。
概ね>>848,>>850のアルゴリズムに沿って進める。

まず (Z/3pZ)* における 2 の位数を求める。
(Z/3pZ)* は (Z/3Z)*×(Z/pZ)* に同型である。
(Z/3Z)*, (Z/pZ)* それぞれにおいて 2 の位数は 2, p-1 であるから、
(Z/3pZ)* における 2 の位数はそれらの最小公倍数 p-1 である。

(Z/3pZ)* の位数は 2(p-1) であるから、2 で生成される部分群 B1 の指数は 2 である。
(Z/3pZ)* の B1 による剰余類を {B1, B2} とおく。

さて、T を木とし、3 の倍数でも p の倍数でもない b∈T を任意に取る。
b を mod 3p で見た時に b∈B1 であれば、ある d∈N で
 b*2^d≡1 (mod 3p)
とできるので、あとは>>787補題(4)によって p の倍数を得る。

以下、b∈B2 とする。
射影 Z/9pZ→Z/3pZ による B2 の引き戻しを C とおく。
b を mod 9p で見ると b∈C である。
もし上と同様に>>787補題(4)を用いて B1 の元を得られれば、予想の証明が完了する。
式で表すと、
 b*2^d≡1 (mod 3) かつ (b*2^d-1)/3≡2^e (mod 3p)
を満たす d,e∈N が存在すればよいことになる。
これはまとめて一つの式で
 b*2^d-1≡3*2^e (mod 9p) …@
と表せる。

@を満たす d,e が存在するかどうかを考える
ここから p≡1 (mod 3) か p≡2 (mod 3) かで状況が変わる。
0873786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 16:09:14.44ID:qQXj/e4z
定理
上の状況で p≡2 (mod 3) のとき、@を満たす d,e が存在する。
したがって、この場合>>786の予想が成り立つ。

証明
(Z/9pZ)* における 2 の位数を調べる。
(Z/9pZ)* は (Z/9Z)*×(Z/pZ)* に同型である。
(Z/9Z)*, (Z/pZ)* それぞれにおいて 2 の位数は 6, p-1 であるから
(Z/3pZ)* における 2 の位数はそれらの最小公倍数 3(p-1) である。

一方 C の要素の個数を考えると、
Z/9pZ→Z/3pZ の核が {0,3p,6p} であることから
 |C|=3*|B2|=3(p-1)
となり、これは 2 の位数と一致する。
C が 2 倍写像で閉じていることから、
C のどの2元も 2 を何回かかけることで互いに移りあう。

ここで、整数 c を
 c≡1 (mod 9) かつ c≡2 (mod p)
を満たすようにとる。
c が mod 9p で C に属することを確かめる。
そのためには、c が mod 3p で 2 の累乗で表せないことを示せばよい。
c≡2^m (mod 3p) と仮定すると
2^m≡c≡1 (mod 3) かつ 2^m≡c≡2 (mod p)
であるが、第1式より m は偶数、第2式より m は奇数なので矛盾。
したがって、c が mod 9p で C に属する。
0874786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 16:10:09.58ID:qQXj/e4z
C の2元は 2 を何回かかけることで互いに移りあうので、
方程式@の b を c に変えても解の有無は変わらない。そこで方程式
 c*2^d-1≡3*2^e (mod 9p)
を考える。この式が成り立つことは、mod 9, mod p で両辺が等しいことと同値。
c の取り方から、
 2^d-1≡3*2^e (mod 9) …A
 2^(d+1)-1≡3*2^e (mod p) …B
の共通解を探せばよいことになる。

Aを解くと、
「d≡2 (mod 6) かつ e が偶数」または「d≡4 (mod 6) かつ e が奇数」
を得る。
前者の場合、d=6d'+2, e=2e' とおいてBに代入すると
 2^(6d'+3)-1≡3*2^(2e') (mod p) …C
となる。ここで、Z/pZ において 2 が原始根であることから、
2 の偶数乗であることと 0 でない平方数であることは同値。
さらに、2 の位数 p-1 は 3 の倍数でないから、2^3=8 も原始根である。
したがって、2^(6d') は 0 でない全ての平方数をとり得る。
2^(6d'+2) も0 でない全ての平方数をとり得る。
このことから、Cは方程式
 2x^2-1≡3y^2 (mod p) …D
と同値である。同様にして、Aの解が後者であった場合は
 2x^2-1≡6y^2 (mod p) …E
に同値である。

2 が原始根であるから、3,6 のいずれかは平方数である。
よって、D,Eのいずれかは方程式
 2x^2-1≡y^2 (mod p)
に同値。これは x=y=1 を解に持つ。したがって元の@も解を持つ。□
0875786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 16:11:07.90ID:qQXj/e4z
p≡1 (mod 3) の場合も同様に考えると、
C が 3 つのグループに分かれてしまうため、考えるべき方程式が増える。。
計算は省略するが、この場合は次のようになる。

F 3x^2+1≡8y^6 (mod p)
G 6x^2+1≡32y^6 (mod p)
H 3x^2+1≡32y^6 (mod p)
I 6x^2+1≡4y^6 (mod p)
J 3x^2+1≡2y^6 (mod p)
K 6x^2+1≡8y^6 (mod p)
について
「FとGの少なくとも一つが解を持つ」かつ
「HとIの少なくとも一つが解を持つ」かつ
「JとKの少なくとも一つが解を持つ」
が成り立てば、@は解を持つ。

なお、解が見つからなかったとしても
上で書いたアルゴリズムのように次は Z/27pZ で考えて D を構成して…と進めることができる。
0876righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/06(日) 16:36:10.03ID:97gvpP/W
今日は(7)まで作りました。残りは繰り返し処理です。
*CollatzMod> main
素数pを入力してください
7
Z/pZ : [0,1,2,3,4,5,6]
A : [[0],[1,2,4],[3,5,6]]
Z/3pZ : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
B : [[1,2,4,8,11,16],[5,10,13,17,19,20]]
(3) tuple : [(0,Just 0),(1,Just 0),(1,Nothing),(2,Just 1),(1,Just 1),(2,Just 0)]
(4) A' No. : [0]
C : [[5,10,17,20,34,40],[13,19,26,38,41,52],[31,47,55,59,61,62]]
(6) tuple : [(0,Nothing),(0,Just 1),(0,Just 0)]
(7) B' No. : [0]
*CollatzMod>
0877righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/06(日) 16:38:47.09ID:97gvpP/W
現状のソースも貼っておきます。

import Data.List (nub, sort, findIndex, (\\), intersect)
import Data.Maybe (fromJust)

twoTimes :: Int -> Int -> [Int]
twoTimes x p = take p $ iterate (\y -> y*2 `mod` p) x

makeA :: Int -> [[Int]]
makeA p = nub $ map sort [nub $ twoTimes x p | x <- [0..p-1]]
makeB :: Int -> [[Int]]
makeB p = nub $ map sort [nub $ twoTimes x (3*p) | x <- [0..(3*p)-1], x `mod` 3 /= 0, x `mod` p /= 0]

findA :: Int -> Int -> Int
findA x p = fromJust $ findIndex (elem x) (makeA p)
findB :: Int -> Int -> Maybe Int
findB x p = findIndex (elem x) (makeB p)
findX :: Int -> [(Int, Maybe Int)]
findX p = nub [(findA x p, findB (3*x+1 `mod` p) p) | x <- [0..p-1]]

-- (4)A1,A2,…のうち、全てのBjとの組が得られていないもの を調査
makeFour' :: Int -> Int -> Bool
makeFour' x p = [Just y | y <- [0..((length $ makeB p) -1)]] /= sort [v | (k, v) <- findX p, v /= Nothing, k==x]
makeFour :: Int -> [Int]
makeFour p = filter (\x -> makeFour' x p) [0..((length $ makeA p) -1)]

-- 組(A',Bj)が得られていないようなBj を見つける
makeCBefore :: Int -> Int -> [Int]
makeCBefore x p = [0..((length $ makeB p) -1)] \\ [fromJust v | (k, v) <- findX p, v /= Nothing, k==x]
-- Bjの元
makeCBefore2 :: Int -> Int -> [Int]
makeCBefore2 x p = concat [(makeB p) !! y | y <- makeCBefore x p]
makeC :: Int -> Int -> [[Int]]
makeC x p = nub $ map sort [nub $ twoTimes y (9*p) | y <- [0..(9*p)-1], elem (y `mod` (3*p)) (makeCBefore2 x p)]
0878righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/06(日) 16:41:20.99ID:97gvpP/W
makeCAfter :: Int -> Int -> [Int]
makeCAfter x p
= concat [(makeB p) !! y | y <- intersect [0..((length $ makeB p) -1)] [fromJust v | (k, v) <- findX p, v /= Nothing, k==x]]
findC :: Int -> Int -> Int -> Maybe Int
findC x y p = findIndex (elem x) (makeC y p)
findY :: Int -> Int -> [(Int, Maybe Int)]
findY x p = nub [(fromJust $ findB y p, findC (3*y+1 `mod` p) x p) | y <- makeCAfter x p]

-- (7)B1,B2,…のうち、全てのCjとの組が得られていないもの を調査
makeSeven' :: Int -> Int -> Int -> Bool
makeSeven' x y p = [Just z | z <- [0..((length $ makeC y p) -1)]] /= sort [v | (k, v) <- findY y p, v /= Nothing, k==x]
makeSeven :: Int -> Int -> [Int]
makeSeven y p
= nub $ intersect [k | (k, _) <- findY y p] (filter (\x -> makeSeven' x y p) [0..((length $ makeB p) -1)])

main = do
putStrLn ("素数pを入力してください")
pStr <- getLine
let p = read pStr :: Int
putStrLn ("Z/pZ : " ++ show([0..p-1]))
putStrLn ("A : " ++ show(makeA p))
putStrLn ("Z/3pZ : " ++ show([0..(3*p)-1]))
putStrLn ("B : " ++ show(makeB p))
putStrLn ("(3) tuple : " ++ show(findX p))
putStrLn ("(4) A' No. : " ++ show(makeFour p))
let q1 = 0 -- A' No.
putStrLn ("C : " ++ show(makeC q1 p))
putStrLn ("(6) tuple : " ++ show(findY q1 p))
putStrLn ("(7) B' No. : " ++ show(makeSeven q1 p))
-- 上記3行を繰り返し処理すれば良い
-- let q2 = 0 -- B' No.
0879132人目の素数さん
垢版 |
2018/05/06(日) 16:59:28.35ID:Lj2V2cy1
>>876
乙です。
もうプログラムも完成間近か
予定を前倒ししそうな勢いですな。
素晴らしいことです。
0881righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/06(日) 17:15:25.28ID:cvSfTs6f
>>880
そうですHaskellのチカラです。
1行で5コぐらい事をおこなっていて、高密度に圧縮されています。
0882786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 17:32:23.25ID:qQXj/e4z
>>876
乙です。
あれ、もしかして修正前のもので作ってる?
もしよければ>>850の修正バージョンでお願いしたいなーと
0885786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 17:45:56.96ID:qQXj/e4z
>(7)B1,B2,…のうち、全てのCjとの組が得られていないもの を調査

修正後ではこの操作が不要で B' というものがそもそも現れないはずなので…
すみませんがよろしくお願いします。
0887132人目の素数さん
垢版 |
2018/05/06(日) 18:06:24.27ID:Lj2V2cy1
まあ開発にハプニングは付き物ですねw
それ込みで予定通りくらいですかね?
0889132人目の素数さん
垢版 |
2018/05/06(日) 19:30:01.21ID:Lj2V2cy1
>>1って前、グーグルドライブでファイル公開してたよね?
今回のファイルもグーグルドライブとかで公開してくれないですか?
インデントが消えてるのかなんなのか>>877-878コピペじゃ上手く動かないみたい。
0890132人目の素数さん
垢版 |
2018/05/06(日) 19:48:44.04ID:Lj2V2cy1
UTF-8がどうとかいわれたので日本語けしてインデントつけたら動いたみたいです。
19を入力してみました。

$ ./collatz.exe
19
input num
Z/pZ : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
A : [[0],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]]
Z/3pZ : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]
B : [[1,2,4,7,8,14,16,25,28,29,32,41,43,49,50,53,55,56],[5,10,11,13,17,20,22,23,26,31,34,35,37,40,44,46,47,52]]
(3) tuple : [(0,Just 0),(1,Just 0),(1,Just 1),(1,Nothing)]
(4) A' No. : [0]
C : [[5,10,11,20,22,40,44,80,83,88,91,127,131,149,151,160,161,166],[13,23,26,37,46,52,67,74,79,92,97,104,119,125,134,145,148,158],[17,31,34,35,47,62,68,70,77,94,101,103,109,124,136,137,140,154]]
(6) tuple : [(0,Nothing),(0,Just 1),(0,Just 0),(0,Just 2)]
(7) B' No. : []
0891132人目の素数さん
垢版 |
2018/05/06(日) 19:51:42.14ID:Lj2V2cy1
まあ、なんにしても>>786がこのプログラムを自分のマシンで動かせるところまではなんとか持っていきたいですねぇ
0892 ◆0wsjwd69zI
垢版 |
2018/05/06(日) 20:08:57.95ID:JU60Gd4S
一応酉
コラッツ数列について綺麗な法則性を見つけました
簡単な計算規則の適用で4→2→1ループまでの計算回数を半分以下にできます
早く完成させねば
0894786 ◆5A/gU5yzeU
垢版 |
2018/05/06(日) 23:00:25.05ID:qQXj/e4z
>>891 >>893
私としては今は証明を考えるのが楽しいので
プログラムはそのうち気が向いたら…ぐらいに思ってたのですが

一応OSはメインのPCが windows8.1, 他に windows10 も使える環境にあります。

あ、よく見たら>>890で n=19 が証明できてますね。
0895132人目の素数さん
垢版 |
2018/05/07(月) 12:09:02.03ID:Ozy22ya3
>>1のhaskell環境ってどうなってますか?
合わせられるならなるべくあわせたほうがいいよね?
0896132人目の素数さん
垢版 |
2018/05/07(月) 12:16:14.19ID:Ozy22ya3
できればこれを機にプログラムに目覚めてほしいw
まあ自分でプログラム書くところまでいかなくても
せっかく>>1がここまで頑張ったので
プログラム動かすだけでも試してほしいな
0907righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/07(月) 19:46:11.20ID:En8a1JvF
>>895
自分の環境はWindows10で、
Haskell Platform 8.0.2-a
GHC 8.0.2
です。
最新版のHaskell Platformでも問題ないと思います。
0908132人目の素数さん
垢版 |
2018/05/07(月) 20:24:25.94ID:lWPS9oWM
>>907
乙です。

>>890>>1が書きかけのプログラムに19を食わせただけなのでちゃんと証明になってるかわかんないです。
証明になってるんですかね?

>>786はせっかく才能あるんだから食わず嫌いは勿体ないですよ!
0919786 ◆5A/gU5yzeU
垢版 |
2018/05/07(月) 21:18:34.19ID:iMoj83uG
>>908
嫌ってるわけじゃありません。興味もあります。
ただ、そもそも私はそういう話をしに来たんじゃなく、
もっとこう、ここまでの証明がいいとか悪いとか、
全く別のアイデアがあるだとか、この予想から何が分かるかとか、
そういう数学の話をしたくてここに来たんです。
その辺ノってくれる方はいないっぽいですかね…

>>890では B' の候補が無いと出力されているので、この時点でアルゴリズムが終了します。
 アルゴリズムが終了する⇒その n で予想が成り立つ
です。
0920132人目の素数さん
垢版 |
2018/05/07(月) 21:53:43.30ID:lWPS9oWM
まあ>>786がそういうなら無理強いはできませんね。

あと>>786が期待しているようなレベルの人は今はこのスレにはいないかもしれませんが、
スレが盛り上がってもっと人の目に留まるようになればあるいは凄い人が来てくれるかもしれません。

頑張って盛り上げていきましょう!
0921132人目の素数さん
垢版 |
2018/05/07(月) 21:55:58.44ID:lWPS9oWM
とりあえず、いまは>>1のプログラムが仕上がるのを待つ、ですかね。
データがそろったら新事実が見つかるかもしれないし。
0922righ1113 ◆OPKWA8uhcY
垢版 |
2018/05/07(月) 22:15:51.29ID:En8a1JvF
一日遅延ですがp=7が出来ました。
繰り返し処理は明日以降考えます。

*CollatzMod> main
素数pを入力してください
7
Z/pZ : [0,1,2,3,4,5,6]
A : [[0],[1,2,4],[3,5,6]]
Z/3pZ : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
B : [[1,2,4,8,11,16],[5,10,13,17,19,20]]
(3) tuple : [(0,Just 0),(1,Just 0),(1,Nothing),(2,Just 1),(1,Just 1),(2,Just 0)]
(4) A' No. : [0]
C : [[5,10,17,20,34,40],[13,19,26,38,41,52],[31,47,55,59,61,62]]
(6) tuple : [(0,Nothing),(0,Just 1),(0,Just 0)]
一度も現れなかったCi : [2]
D : [[31,47,55,59,61,62,94,110,118,122,124,125,157,173,181,185,187,188]]
(8) tuple : [(0,Nothing),(0,Just 0),(1,Nothing),(1,Just 0)]
一度も現れなかったDi : []
*CollatzMod>
0925786 ◆5A/gU5yzeU
垢版 |
2018/05/07(月) 23:15:41.98ID:iMoj83uG
ノってくれる方がいない、は言い過ぎでした。
>>801>>837などで、これまでも数学的な話はできています。
こういう意見を頂けるのは非常にうれしいし、返信を考えるのは楽しいです。
ついカッとなってしまってああいう言い方になってしまいました。

>>921
待つしかないなんてことはありません。
私は私でまた証明の続きを考えます。

>>922
おお、例と同じ結果になってる
乙です。
0936132人目の素数さん
垢版 |
2018/05/08(火) 19:46:15.66ID:3JhFRy5O
>>1>>758

1〜nまででコラッツの反例がなければ、
n周期以下のループは存在しない です。

ていうアイディアを出してたんだけど>>786の予想から繋げて何か言えないかなーと妄想中
0937132人目の素数さん
垢版 |
2018/05/08(火) 20:06:46.16ID:3JhFRy5O
仮に1を含まない木が存在したとして、さらにその木がループを含むと仮定し、
かつコラッツの予想がnの倍数だけ調べればいいとすれば何か言えそうな気がするが
いまのところ気がするだけw
レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況