ZmmaqemodmO(log(mn)M(logm))
aqi≡aqi(modφ(m))(modm)
m
場合は素数であるか、効率的に因数分解することができ、最悪の場合の複雑さは、あなたが行列乗算のために必要なステップの数によって支配されて。たとえば、パートナーの投稿で述べたスミスの正規形アプローチでは、「遅い」を使用した場合、行列式を時間内に計算します乗算アルゴリズム。は2.373を選択できます。mO(nω)O(nωlog2mlog(mn))∗ω
マトリックスの係数を2乗べき乗する必要があるため、ムーア対ヴァンダーモンドでは速度が低下します。を因数分解できる場合、このスローダウンは単なる多対数です。そうでない場合、提示されたアルゴリズムは Double-Modular-ExponentiationへのCook削減を提供します。mmZm
注*:整数乗算の高速アルゴリズムでは、をに置き換えることができます 。log2mM(logmloglogm)
更新:を達成する可能性について。O(nlogan)
これについて明確な答えはありませんが、検索を厳しくする可能性のある情報が見つかりました。
時間の行列式のような量を計算する構造化行列の アルゴリズムは、文献では「超高速」と呼ばれています。構造化行列(Vandermonde、Toeplitz、Hankel)のすべての既知の「超高速」アルゴリズムは、低い「変位ランク」と呼ばれるこの行列の共通プロパティに依存しているようです。この本の最初の章(オープンアクセスページ)、またはこの記事[ACM]、[PDF]での議論を話し合います。O(nlogan)
私が読んだものから、新しい行列(または)であるような行列、を見つけることができた場合、ムーア行列与えられます。次の構造を持っていますM A B L (M )= A M − M B L (M )= M − A M Bm×nMABL(M)=AM−MBL(M)=M−AMB
L(M)=∑k=1rgkhTk
であり、ランクが小さい(定数または囲まれている)場合、既存の手法を適用できます(本の第5章をチェックして、open-ページにアクセス)を三角化し、を使用して計算し。上記の、はベクトルを示します。上記の本で全体を読むことができない場合、この記事にはこれらの方法に関する多くの情報も含まれています。o (分r>0M det Mo(min{m,n})MdetMg k h kO(nlog2n)gkhk
残念ながら、ムーア行列の低変位ランク構造を見つけることはできませんでした(ヴァンダーモンドが持っています)。ここでの主な問題は、二重指数関数の「非線形」の性質から生じているようです。それが役に立てば、ヴァンダーモンデ、コーシー、テプリッツ、ハンケルの事例が本で解決されます。