プログラミング/多倍長整数/Toom-Cook乗算

提供: testwiki
2024年10月15日 (火) 04:32時点におけるimported>Ef3による版 (まとめ: Fix Cat. 読み)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

中学校数学の範囲で理解できるように、Toom-Cook乗算(Toom-3)について簡単に解説します。

Toom-Cook乗算(Toom-3)は、大きな数同士の掛け算を効率的に計算するためのアルゴリズムです。[[../カラツバ法|カラツバ法]]をさらに発展させたもので、より大きな数の掛け算に対して効果的です。 通常の掛け算やカラツバ法と比べて、Toom-3は数をより細かく分割し、より多くの評価点を使用することで、さらに計算量を減らすことができます。

通常の掛け算とカラツバ法

通常の掛け算では、n桁の数同士を掛けると、n2回の掛け算が必要です。 カラツバ法では、2つに分割して3回の掛け算で計算します。

Toom-3の考え方

Toom-3は、数を3つに分割し、5つの評価点を使用します。具体的には、以下のように計算します:

  1. 掛け算する2つの数をそれぞれ3つの部分に分割する
  2. 5つの評価点(通常は0, 1, -1, 2, ∞)で多項式を評価する
  3. 評価点での値を掛け合わせる
  4. 結果を補間して元の多項式の係数を求める
  5. 最終的な結果を計算する

Toom-3の具体例

例えば、3桁の数 xy を掛けるとします。これらを次のように表現できます:

  • x=a2×102+a1×10+a0
  • y=b2×102+b1×10+b0

これを多項式として表すと:

  • x=a2r2+a1r+a0
  • y=b2r2+b1r+b0

ここで r=10 です。 Toom-3では、この多項式を5つの点(例:0, 1, -1, 2, 3)で評価し、それぞれの点での値を掛け合わせます。その後、結果を補間して元の多項式の係数を求めます。

なぜ効率的か

Toom-3は、カラツバ法よりもさらに大きな数の掛け算に対して効率的です。理論的には、n桁の数同士の掛け算をO(nlog35)の計算量で行うことができます。これは通常の掛け算(O(n2))やカラツバ法(O(nlog23))よりも効率的です。

まとめ

Toom-Cook乗算(Toom-3)は、数を3つに分割し、5つの評価点を使用することで、大きな数の掛け算をより効率的に行うアルゴリズムです。カラツバ法をさらに発展させたもので、特に非常に大きな数の掛け算において効果を発揮します。