タグ付けされた質問 「multiplication」

1
Knuthの線形時間乗算アルゴリズムが「カウント」されないのはなぜですか?
乗算アルゴリズムに関するウィキペディアのページには、Donald Knuthによる興味深いものが記載されています。基本的には、フーリエ変換の乗算と対数サイズの乗算の事前計算テーブルを組み合わせることを含みます。線形時間で実行されます。 この記事は、このアルゴリズムのように機能し、「真の」乗算アルゴリズムとは見なされません。さらに重要なことは、乗算を均等なO(n lg n)時間で行えるかどうかは未解決の問題であると考えられていることです! このアルゴリズムのどの詳細が、「真の」乗算アルゴリズムとしてカウントすることを不適格にしますか? 私の推測は次のとおりです。 テーブルの事前計算には、線形時間以上の時間がかかります。一方、それはまだn lg n間に合うようにできるので、それでも印象的なように思えます。 ランダムアクセスはどういうわけか許可されていません。しかし、他のアルゴリズムがハッシュテーブルやポインターなどを使用できるのはなぜですか? 単一の命令で256ビットの乗算を行う256ビットマシンを使用している場合、2 ^ 256を超える要素が存在するまでこのアルゴリズムには意味がありません。一方、union-findでは逆アッカーマン因子に悩まされます。 「線形時間乗算アルゴリズムはありますか?」質問は、より弱いマシンという点で密かにですが、これはほのめかされるだけです。

2
Schönhage–Strassenの乗算アルゴリズムの変換が安価なのはなぜですか?
Schönhage-Strassenの乗算アルゴリズムは、サイズの乗算を回すことによって動作しますNNN サイズの多くの乗算に l g(N)lg(N)lg(N)数論変換と再帰を使用します。少なくとも私はそれがそうであると思います。他にいくつかの賢さがあるからです。正確に要約するのに十分理解していません。それで終わりますO (N⋅ リットルG(N)⋅ リットルG(l g(N)))O(N⋅lg(N)⋅lg(lg(N)))O(N \cdot lg(N) \cdot lg(lg(N))) 時間。 数論変換は、有限体で行われることを除いて、離散フーリエ変換とまったく同じです。F2N+ 1F2N+1F_{2^N+1} 整数を法として 2N+ 12N+12^N+1。これにより、フーリエ変換には1の根の乗算が多くなるため、演算が大幅に安価になります。F2N+ 1F2N+1F_{2^N+1}の結束のルーツはすべて2の累乗なので、シフトするだけです!また、整数は、浮動小数点の複素数よりもはるかに扱いやすいです。 とにかく、私を混乱させるのは F2N+ 1F2N+1F_{2^N+1}とても大きいです。からランダムな要素を与えるとF2N+ 1F2N+1F_{2^N+1}、 それはとります O (N)O(N)O(N)それを指定するビット。したがって、2つの要素を追加するにはO (N)O(N)O(N)時間。そして、DFTは多くの追加を行います。 Schönhage–Strassenは入力を Nl g(N)Nlg(N)\frac{N}{lg(N)} とのグループ l g(N)lg(N)lg(N)ビット。これらのグループは、F2N+ 1F2N+1F_{2^N+1}それが変形することを。DFTの各パスにはO (Nl g(N))O(Nlg(N))O(\frac{N}{lg(N)}) 足し算/引き算、そして O (l g(Nl g(N)))O(lg(Nlg(N)))O(lg(\frac{N}{lg(N)}))パス。だから加算加算に基づいてO (N)O(N)O(N) これらのすべての追加のコストは O(NNlg(N)lg(Nlg(N)))O(NNlg(N)lg(Nlg(N)))O(N \frac{N}{lg(N)} lg(\frac{N}{lg(N)}))、これは漸近的に同じです O(N2)O(N2)O(N^2)。 それより少し上手くいくことができます...値が非常に小さいため、追加は非常にまばらです。最初のパスの追加は本当にコストがかかりますO(lg(N))O(lg(N))O(lg(N)) それぞれ、2番目のパスのコスト 21O(lg(N))21O(lg(N))2^1 …

2
既約多項式を法として多項式を減らすIntelのアルゴリズムを理解する
キャリーレス乗算に関するこのIntelホワイトペーパーを読んでいます。の多項式の乗算について説明し。高レベルでは、これは2つのステップで実行されます:(1)上の多項式の乗算、および(2)既約多項式を法として結果を削減します。多項式の「標準」ビット文字列表現、つまります。GF (2ん)GF(2ん)\text{GF}(2^n)GF (2 )GF(2)\text{GF}(2)バツ3+ x + 1 = [ 1011 ]バツ3+バツ+1=[1011]x^3+x+1 = [1011] この論文では、アルゴリズム3の16ページの剰余多項式の計算アルゴリズムを示しています。しかし、16〜17ページの削減アルゴリズム(アルゴリズム4)を理解できません。基本的に、私たちの結果または部分的な結果が128ビットに適合しない場合、より大きなフィールドにはアルゴリズム4が必要だと思います。の2つの多項式の乗算の例を示し。GF (2128)GF(2128)\text{GF}(2^{128}) 右シフトの「マジック定数」63、62、57と、左シフトの「マジック定数」1、2、7はどこから来るのですか? たとえば、\ text {GF}(2 ^ {32})のように、より小さなフィールドのアルゴリズムを一般化するにはどうすればよいGF (232)GF(232)\text{GF}(2^{32})ですか?次に、対応するシフト値は15、14、9および1、2、7になりますか? 最後のステップ4で、アルゴリズムは「XOR [E1:E0][E1:E0][E_1:E_0]、[F1:F0][F1:F0][F_1:F_0]、および[G1:G0][G1:G0][G_1:G_0]と[X_3:D]との相互関係[バツ3:D ][バツ3:D][X_3:D]」を示します。 なぜこれを行うのですか?私の知る限り、このXOR演算の結果はどこにも保存されず、どこでも使用されません。[H_1:H_0]の計算に何らかの形で使用されてい[H1:H0][H1:H0][H_1 : H_0]ますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.