【nビット】 Furer 乗算【n log n 2^O(log^* n)】
■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さん
2007/06/12(火) 19:19:10みんな掛け算計算するだろう
n ビットの数を2個掛ける時、2進数で筆算すると、
大体 n^2 個位 0や1 を書くことになり、n^2 くらいのビット演算を要する。
Shonhage と Strassen のアルゴリズムは高速 Fourier 変換の利用という
画期的アイデアでこれを O(n log n log log n) で行い、漸近的計算量で
長くチャンピオンとして語り継がれてきた。
Martin F\”urer は、これを n log n 2^O(log^* n) で出来ると発表した。
log^* は log の任意定数回の合成で、 *=3 にとると 2^{log log log n} = log log n
となる。(対数の底は、Oつきならどうでもいいがとりあえず 2 とした)
http://www.cse.psu.edu/~furer/
にある Faster integer multiplication
クリビツ
乗算という基本的演算について35年ぶり?のオーダー改良。
アルゴリズムの教科書という教科書は、改訂の折にこのストーリーを
盛り込むことになるだろう
See also:
http://portal.acm.org/citation.cfm?id=1250790.1250800&coll=ACM&dl=ACM&type=series&idx=1250790&part=Proceedings&WantType=Proceedings&title=Annual%20ACM%20Symposium%20on%20Theory%20of%20Computing&CFID=25333501&CFTOKEN=39584821
あるいは、万一、解析がバグっているというような情報をお持ちでしたら教えてつかあさい。
0002132人目の素数さん
2007/06/12(火) 19:30:19shonhage -> sch\"onhage
すんません
0003132人目の素数さん
2007/06/12(火) 19:31:43http://en.wikipedia.org/wiki/Schonhage-Strassen_multiplication
0004132人目の素数さん
2007/06/13(水) 21:14:040005132人目の素数さん
2007/06/13(水) 22:44:19暇な時に読んでみるよ
00061
2007/06/14(木) 05:32:10代数の基本を知ってないと難渋するので、どちらかというとここ向けかと。
>>5 ヨロ
俺はまだ、「第一フェーズ」(先入観なしで正しさを確認しにいくのでなく、著者に感情移入して読む)です
(成立してたとして)
改善量としては渋すぎる結果だが、「これがあるべき姿」と思われていたところから更に踏み込んだ
結果なので、出来上がったアルゴリズムはもちろんのこと、その構成とかに習うべき点が多くあると
おもふ
0007132人目の素数さん
2007/06/14(木) 09:38:57あぁそういえばSTOC 2007の採録論文リストでタイトル見つけてびっくりして論文探しに行ったなぁ.
手元にはあるんだがまだ読んでなかったよ.って丁度昨日STOC終わったところだな.参加してないけど.
まぁ読むことがあったらまた書き込むわ.
0008132人目の素数さん
2007/06/14(木) 19:23:15雰囲気わかってきたんだけど、複素数に行って戻ってくるところで、これで精度十分というのがまだわからん
0009132人目の素数さん
2007/06/17(日) 12:20:010010132人目の素数さん
2007/06/18(月) 11:54:130011132人目の素数さん
2007/06/18(月) 16:43:530012132人目の素数さん
2007/06/18(月) 16:50:15ブログでチラッと書いてる人はいるが
0013132人目の素数さん
2007/06/18(月) 20:31:56「それは文明の程度による」とニヒルに決めたいところだが、
正直には O( ) の中に何が隠れているかを数えないとわかりまへん
損益分岐点が今の文明にとっては大きすぎたとしても、
「マインスイーパ」で無理と思っていた場所が開いたところで、
ここを軸にいろいろできるかも、というのをひそかに期待
0014132人目の素数さん
2007/06/18(月) 20:33:44FFTってオーパーツみたいに感じるんだよね
0015132人目の素数さん
2007/06/18(月) 23:04:17FFTって高速フーリエ変換の事だよな?別にパソコンもあるんだし、時代にそぐわないものではないような気がするんだが。
0016132人目の素数さん
2007/06/20(水) 16:20:400017132人目の素数さん
2007/06/20(水) 17:25:180019P Shor
2007/06/20(水) 22:48:27釣れます?
0020132人目の素数さん
2007/06/21(木) 11:21:47あれって別に3*5=15よりもっと巨大な数でも因数分解できるんですよね?
0021132人目の素数さん
2007/06/21(木) 18:48:380022132人目の素数さん
2007/06/25(月) 15:28:42量子コンピュータシミュレータなんてソフトがあるんですね
0023132人目の素数さん
2007/08/26(日) 22:31:3313bit程度の数までならいけるらしい。(埼玉大オープンキャンパスにて訊いた)
002424
2007/08/26(日) 23:21:500025132人目の素数さん
2007/08/27(月) 02:04:100026132人目の素数さん
2007/08/31(金) 20:19:13ただしP(n):n番目の素数
002727
2007/08/31(金) 20:20:290028132人目の素数さん
2007/08/31(金) 20:41:230029132人目の素数さん
2007/08/31(金) 21:05:090030132人目の素数さん
2007/09/02(日) 18:28:19入力した殆どの値が0になりそうだな。φ(1)=φ(0)=0なら。
0031132人目の素数さん
2007/10/30(火) 12:24:340032132人目の素数さん
2008/01/19(土) 22:30:390033132人目の素数さん
2008/02/28(木) 20:19:43足し算・引き算・掛け算にかかるオーダーがn:桁数としてO(n)になりそうなアルゴリズムが
[DONALD E. KNUTH]のあの本の第2巻の第4章3の2に載ってたりするがアレは実際どうなのよ?
今手元に英語版しかない関係上適当に和訳して書いておくが。
変換:O(logn)
1.二つの巨大数をu,vと置く。
2.互いに素である数の集合を{m(1),m(2),...,m(n)}と置く。
3.u及びvをm(1),m(2),...,m(n)で割った余りを数列U<u(1),u(2),...,u(n)>及びV<v(1),v(2),...,v(n)>とする。
演算:O(n)
U+V=<(u(1)+v(1)) mod m(1),(u(2)+v(2)) mod m(2),...,(u(n)+v(n)) mod m(n)>
U-V=<(u(1)-v(1)) mod m(1),(u(2)-v(2)) mod m(2),...,(u(n)-v(n)) mod m(n)>
U*V=<(u(1)*v(1)) mod m(1),(u(2)*v(2)) mod m(2),...,(u(n)*v(n)) mod m(n)>
逆変換:多分O(nlogn)
M(j)≡1(mod m(j))で、かつM(j)≡0(mod m(k)) for k≠jを成り立たせる数M(j)を定める。
M(j)の具体的な値は、m=m(1)*m(2)*...*m(n)とし、オイラーのファイ関数をφ(n)とするときに
M(j)=((m/m(j))^φ(m(j))) mod m
このとき、u=(u(1)*M(1)+u(2)*M(2)+...+u(n)*M(n)) mod m
003433
2008/02/28(木) 20:22:38よく考えたら全部O(n)じゃないかこれ。
0035132人目の素数さん
2008/04/10(木) 10:49:340036132人目の素数さん
2008/04/11(金) 04:14:450037132人目の素数さん
2008/05/15(木) 20:38:34STOC08 のプログラム見て遅ればせながら知ったのだが、複素数を外すのは大分前(1月頃)に
できていたらしい。
http://arxiv.org/abs/0801.1416
Fast Integer Multiplication using Modular Arithmetic
Authors: Anindya De, Piyush P Kurur, Chandan Saha, Ramprasad Saptharishi
(Submitted on 9 Jan 2008 (v1), last revised 6 May 2008 (this version, v2))
体でなく、Z[X]/(p^c, X^m+1) のような1の根をもったring を使うとのこと。
0038132人目の素数さん
2008/05/15(木) 21:33:230039132人目の素数さん
2008/05/16(金) 01:26:440040132人目の素数さん
2008/06/27(金) 19:44:19大抵、実用レベルになってくる100桁くらいになったらかなりいい値に近似出来てるから。
100桁までの計算にかかる実測時間から200桁までの計算にかかる予想時間を近似的に求める事には意味があると思う。
0041132人目の素数さん
2008/08/11(月) 19:27:26■ このスレッドは過去ログ倉庫に格納されています