行列式を計算するための算術演算の最小数


14

行列式を計算するのに必要な基本演算の最小数見つける上の任意の作業が行われているによって小と固定するためのマトリックス?たとえば、です。n n n = 5nnnn=5


4
私はこれについて専門家に尋ねましたが、明らかに、3x3行列の行列式を計算するために9回の乗算が必要であるかどうかは現在でもわかっていません。
— ジェフリーシャリット

@JeffreyShallit 9が可能な場合、それはすでに興味深いものです(たとえば、未満ですn3)。どの程度n=4?
— レンビック

3
いいえ、まったく面白くありません。n = 3の9回の乗算の後に、未成年者による展開が続きます。n = 4の場合、未成年者による展開では40になります。40回未満の乗算でそれを行う方法はわかりません。
— ジェフリーシャリット

@JeffreyShallitああ、いいですね。固定についてナイーブより優れたものが知られていなければ、驚くべきことです(少なくとも私には)n。
— レンビック

誰かが知っていれば、おそらく彼らは私たちに伝えることができます。
— ジェフリーシャリット

回答:


9

それが必要な演算の数は、の行列計算することが知られており、n×n行列でありnω+o(1)、ω行列乗算定数です。たとえば、Wikipediaのこの表、およびその脚注と参照を参照してください。マトリックス反転の漸近的な複雑さも、この同じ意味でのマトリックス乗算と同じであることに注意してください。

同等性は非常に効果的です。特に、Schur補数を使用して(n / 2 )× (n / 2 )ブロックを操作することにより、行列の行列式を再帰的に計算できます。n×n(n/2)×(n/2)

D 可逆⟹デット(ABCD)=デット(D)デット(A−BD−1C)。

したがって、つの行列式を計算し、1つの行列を反転し、 2つのペアを乗算することにより、行列式を計算できます。行列、およびいくつかの単純な操作。行列式の呼び出しを再帰的に展開すると、複雑さは行列の乗算と反転に支配されることになります。(n / 2 )× (n / 2 )(n / 2 )× (n / 2 )(n / 2 )× (n / 2 )n×n(n/2)×(n/2)(n/2)×(n/2)(n/2)×(n/2)

これは、が小さいでも、サブキュービック行列乗算アルゴリズムを使用しなくてもうまく機能します。(もちろん、最終的にはガウス消去法とほぼ同等になります。)たとえば、場合、2つの乗算、、4つの除算を計算できます、乗算、、2回の乗算、および最終回答は1回の乗算。合計数は乗算と除算で、未満ですn = 4 det (D )D − 1 B D − 1 C 2 × 8 = 16 det (A − B D − 1 C )2 + 4 + 16 + 2 + 1 = 25 40nn=4デット(D)D−1BD−1C2×8=16det(A−BD−1C)2+4+16+2+1=2540補因子の拡大から。Strassenのアルゴリズムを使用すると、ここで2つの乗算が節約されますが、より漸近的になります。

この拡張では分割が非常に重要であることに気付くかもしれません。除算を避けたい場合は、操作でClowシーケンスと動的プログラミングを使用して除算を行うことができます。乗算を実行し、除算を実行しない方法も知られています。n 2 + ω / 2 + o (1 )O(n4)n2+ω/2+o(1)


乗算の数だけの下限を知っていますか?n = 3でも?
— ジェフリーシャリット

「行列の行列式を計算するのに必要な算術演算の数は」という表現は、下限がわかっていることを示唆しています。しかし、私は引用された作品のいずれにもこれを見ませんでした。何か不足していますか?n×nnω+o(1)
— ジェフリーシャリット

2
下限W.BaurとV.Strassen「偏導関数の複雑さ」(の論文にあるdx.doi.org/10.1016/0304-3975(83)90110-X)
— ウラジミールLysikov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.