Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【行列累乗より速い😍】K項間線形漸化式のN項目を高速に求める~行列累乗の3乗の項にうんざりした...

Harui
January 11, 2025

 【行列累乗より速い😍】K項間線形漸化式のN項目を高速に求める~行列累乗の3乗の項にうんざりしたあなたにおすすめの最強線形代数活躍算法Fidduciaのアルゴリズムのご紹介です~

K+1項間の線型漸化式を持つ数列のN項目は行列累乗を使うと O(K^3 log N)の計算量で求めることができるということはよく知られています。しかし、このスライドで紹介するFiducciaのアルゴリズムを使うと、(FFTができたりする良い条件のもとで) O(K log K log N)で計算できます。 (FFTができないなどの理由で愚直な筆算をする場合はO(K^2 log N)になる)

Harui

January 11, 2025
Tweet

Other Decks in Research

Transcript

  1. ケイリーハミルトンの定理 緑の線形代数の教科書(線形代数講義と演習 改訂版 小林正典, 寺尾宏明 ) P98 定理17.1 を見ると、 定理17.1

    (ケイリーハミルトンの定理) 次正方行列 の固有多項式 に を代入したものは零行列に等しい つまり、 。
  2. 驚きの事実 求めたい は、 の一番下の行と、 の内積だった。 だから、 の一番下の行のみわかればよい。 ここで、驚きの事実として、 ( )

    の一番下の行は、 列目だけ で、 他は となっている。 なので、 のようになる。( があるのは 列目)
  3. ここで、 驚きの事実 ( ) の一番下の行は、 列目だけ で、他は となっている。 を拡張した、 驚きの事実2

    ( )の 行目 ( )は、 列目だけ で、他は となって いる。 を考える。 や について成立するのは明らか。
  4. 驚きの事実2 ( )の 行目 ( )は、 列目だけ で、他は となって いる。

    帰納法で証明する。 で成立するのは明らか。 以上 未満のある整数 について 驚きの事実2が成立すると仮定する。 仮定から、 の 行目 ( )は、 列目だけ で、他は 。 だから、 の 行目 ( )は の 行目に一致する。 つまり、 なる について、 の 行目は の 行目と同じ く 列目だけ で、他は であるとわかる。 これは、 驚きの事実2が でも成立していることに他ならない。 帰納的に、 についても驚きの事実2が成立する。(説明終わり)
  5. (ちなみに) での割り算を頑張って実装する場合 前提として、FFT(高速フーリエ変換)ができる必要がある( double での複素数計算の誤 差が無視できる or mod998244353のような、 の約数に2べきがいっぱいある法で 考える場合)

    1. FFTを使った畳み込みを実装する 2. 項の形式的べき級数の逆元をニュートン法と畳み込みを使って で 求める関数を実装する 3. reverseしたりinvをうまく使うと割り算が でできる (この方針で実装したライブラリ in C++: https://harui-i.github.io/library/formal-power- series/fiduccia.hpp ) 理論を含めて詳しく知りたい人へ: コンピュータ代数ハンドブックを読みましょう。都 立大の南大沢の図書館にあります(日野にもあるかも。