Number Theoric Transform

概要

  • RNS
  • NTTは DFT の有限体への一般化
  • 畳込みは大きな数や長い多項式の乗算に便利
  • NTTはKaratsuba法より漸近的に高速.

Complex DFT

  1. 入力は長さ の非負ベクトル
  2. 1の原始n乗根
  3. 出力 となる
  4. 逆変換は で復元

Procedure for the NTT

  1. 入力は非負ベクトル (サイズ )
  2. どの要素よりもおおきい を最小モジュラスとする
  3. な 素数 をモジュラス () を選ぶ(ディリクレの定理により存在する)
  4. 素数より乗法群 は位数 , 最低でも一つの生成元 があり 番目の原始根.
  5. を定義すると , は1の原始乗根

::: info
別に は素数じゃなくてもいい とか
:::

  1. とする

  2. のとき , は素数で

  3. の根を探す.
    より
    のとき, かつ なので

  4. 5番目の根

  5. を計算


    逆元 をかけると

畳込みの例




  1. (一桁()の掛け算が8個なのでmax:648)
  2. , , 素数.
  3. 8乗根をもとめたい,
    より??? とすると && なので .
  4. NTT変換

    .
  5. 積は でpointer-wise multiplication
  6. 逆NTT変換をして多項式の積を得る

参考文献