理論計算機科学において、行列乗算の計算複雑度は、行列乗算演算の実行速度を決定づける。行列乗算アルゴリズムは、数値線形代数や最適化のための理論的および数値的アルゴリズムの中核となるサブルーチンであるため、行列乗算の最速アルゴリズムを見つけることは、実用上非常に重要である。
行列乗算の数学的定義を直接適用すると、その体上で2 つのn × n行列を乗算するためにn 3 回の体演算を必要とするアルゴリズムが得られます (ビッグ O 表記ではΘ( n 3 ) )。驚くべきことに、この単純な「教科書のアルゴリズム」よりも優れた実行時間を提供するアルゴリズムが存在します。最初に発見されたのは、 1969 年にVolker Strassenによって考案され、「高速行列乗算」と呼ばれることが多いStrassen のアルゴリズムです。 [ 1 ]定数係数を除いて2 つの正方n × n行列を乗算するために必要な最適な体演算の数は、まだ不明です。これは、理論計算機科学における主要な未解決問題です。
2024年1月現在 行列乗算アルゴリズムの漸近的複雑性の最良の上限はO( n 2.371339 )です。[ 2 ]しかし、これや Strassen に対する同様の改良は、銀河アルゴリズムであるため、実際には使用されていません。ビッグ O 表記で隠された定数係数が非常に大きいため、現在のコンピュータで処理するには大きすぎる行列に対してのみ価値があります。[ 3 ] [ 4 ]
A、Bが体上の2つのn × n行列である場合、それらの積ABもその体上の n × n行列であり、要素ごとに次のように定義される。
n × n行列AとBの積を計算する最も簡単な方法は、行列乗算の定義から得られる算術式を計算することです。擬似コードでは次のようになります。
入力AとB はどちらもn × n行列です 。 C をn × n行列で 初期化します 。iが 1 からnまでの場合: jが 1 からnまでの場合: kが 1 からnまでの場合: C [ i ][ j ] = C [ i ][ j ] + A [ i ] [ k ]* B [ k ][ j ] 出力C (A*B として)
このアルゴリズムには乗算と2つのn × n正方行列の積を計算するためのスカラーの加算。したがって、その計算複雑度は 、フィールド演算(加算と乗算)が一定時間で完了する計算モデルにおいて(実際には、これは浮動小数点数の場合に当てはまりますが、整数の場合は必ずしも当てはまりません)。
Strassen のアルゴリズムは、分割統治法によって単純な行列乗算を改善します。重要な点は、2 × 2行列の乗算は、通常の 8 回ではなく、わずか 7 回の乗算で実行できるということです (ただし、11 回の加算と減算の演算が追加されます)。つまり、入力n × n行列をブロック2 × 2行列として扱うと、2 つのn × n行列の乗算タスクは、 2 つのn /2 × n /2行列の乗算という 7 つのサブ問題に縮小できます。これを再帰的に適用すると、次のアルゴリズムが得られます。現場作戦。
漸近的複雑性が速いアルゴリズムとは異なり、Strassen のアルゴリズムは実際に使用されています。数値安定性はナイーブなアルゴリズム[ 5 ]に比べて低下しますが、 n > 100程度の場合[ 6 ]は高速で、 BLAS [ 7 ]などのいくつかのライブラリに登場します。高速行列乗算アルゴリズムはコンポーネントごとの安定性を達成できませんが、ノルムごとの安定性を示すことが示されるものもあります。[ 8 ]数値安定性が問題にならない有限体などの正確な領域上の大きな行列には非常に役立ちます。


行列乗算指数(通常ωで表される)は、任意の2つの行列が となる最小の実数である。体上の行列は、以下の方法で乗算できます。場演算。この表記法はアルゴリズム研究でよく用いられ、行列乗算をサブルーチンとして用いるアルゴリズムの実行時間には、ωの上限が改善されるにつれて更新される上限が存在する。
素朴な下限と教科書的な行列乗算による上限を用いると、2 ≤ ω ≤ 3と簡単に結論づけることができる。ω = 2かどうかは理論計算機科学における大きな未解決問題であり、 ωの上限を改善するための行列乗算アルゴリズムを開発する研究が進められている。
この研究分野の最近のアルゴリズムはすべて、 1990 年にDon CoppersmithとShmuel Winogradによって提案され、2010 年まで最良の行列乗算アルゴリズムであったCoppersmith–Winograd アルゴリズムの一般化であるレーザー法を使用しています。 [ 24 ]これらのアルゴリズムの概念的なアイデアは Strassen のアルゴリズムに似ています。2 つのk × k行列をk 3未満の乗算で乗算する方法が考案され、この手法が再帰的に適用されます。レーザー法にはその能力に限界があります。Ambainis 、Filmus、および François Le Gall [ a ]は、Coppersmith と Winograd のある特定の恒等式の高次のテンソルべき乗を分析することによってω < 2.3725を示すために使用できないこと、またこのアプローチの幅広いクラスの変種に対してω < 2.3078 を示すためにも使用できないことを証明しています。[ 25 ] 2022年にDuan、Wu、Zhouは、ω < 2.37188で2つの障壁のうち最初の障壁を破るバリアントを考案しました。[ 22 ]彼らは、レーザー法における潜在的な最適化の源である組み合わせ損失を特定し、Coppersmith–Winogradアルゴリズムのハッシュ法の非対称バージョンを使用してそれを補償することでこれを実現しました。
しかしながら、上記は銀河アルゴリズムの古典的な例である。一方、上記の1969年のストラッセンのアルゴリズムと1978年のパンのアルゴリズムは、それぞれの指数が2.8をわずかに上回ったり下回ったりするが、定数係数を持つため実行可能である。[ 26 ]
Henry Cohn、Robert Kleinberg、Balázs Szegedy、Chris Umans は、有限群の部分集合の 3 つ組が三重積特性 (TPP)と呼ばれる非交差性特性を満たすことを利用して、 Strassen アルゴリズムや Coppersmith–Winograd アルゴリズムなどの手法を全く異なる群論的文脈に置きました。また、もしこれが正しければ、本質的に 2 乗算の複雑さを持つ行列乗算アルゴリズムが存在することになるという予想も示しています。これは、行列乗算の最適な指数が 2 であることを意味し、ほとんどの研究者は実際にそうであると考えています。[ 4 ]そのような予想の 1 つは、アーベル群と対称群のリース積の族が、TPP の同時バージョンを持つ部分集合の 3 つ組の族を実現するというものです。[ 27 ] [ 28 ]その後、Blasiak、Cohn、Church、Grochow、Naslund、Sawin、およびUmansがスライスランク法を用いて、彼らの予想のいくつかを反証しました。[ 29 ]さらに、Alon、Shpilka、およびChris Umansは最近、高速行列乗算を意味するこれらの予想のいくつかが、別のもっともらしい予想であるヒマワリ予想[ 30 ]と互換性がないことを示しました。これは、キャップセット問題に関連しています。[ 29 ]
の自明な下限が存在する 。2 つのn × n行列を乗算するアルゴリズムは、すべての2 n 2エントリを処理する必要があるため、任意の行列乗算アルゴリズムに対して、 Ω( n 2 )演算という自明な漸近的下限が存在します。したがって、。 かどうかは不明です。行列乗算の複雑さに関する最もよく知られている下限は、実数または複素数上の有界係数算術回路の場合、 Ω( n 2 log( n ))であり、これはRan Razによるものです。 [ 31 ]
一般的に研究されている計算モデルの下では、正確にO ( n ω )回の演算を使用する行列乗算アルゴリズムは存在せず、 n o(1)という追加の係数が必要であることが知られています。[ 13 ]
同様の手法は長方形行列の乗算にも適用されます。研究の中心となるのはこれは最小のサイズ の行列を乗算できるサイズが の行列と算術演算。代数的複雑性の結果によれば、サイズの行列の乗算はそしてサイズ の行列を乗算する場合と同じ数の算術演算が必要ですそしてそしてその大きさはそして、したがって、これは長方形行列の乗算の複雑さを包含する。[ 32 ]これは、正方行列の乗算指数を一般化したものである。。
行列乗算問題の出力はサイズであるため、 我々は持っていますすべての値に対して. いくつかの値に対して証明できる場合0から1の間ですると、このような結果は次のことを示している。それらの人々のために最大のkは、は、通常αで表される双対行列乗算指数として知られています。α は、次のことを示すため「双対」と呼ばれます。これは、行列乗算指数と同様に、双対行列乗算指数は数値線形代数や最適化のアルゴリズムの複雑さの中に現れることがある。[ 33 ]
αに関する最初の境界は 1982 年にCoppersmithによって示され、[ 34 ] αに関する現在の最良の査読済み上限はウィリアムズ、シュー、シュー、ジョウによって与えられた。[ 23 ]
上述の代数モデルは、加算や乗算などの各体演算が均一なコストを取ることを前提としている。これは、有限体における厳密な算術演算、または浮動小数点数の近似演算における現実的な仮定です。
整数の厳密な演算など、さまざまな算術領域では、この仮定はもはや正当化されず、算術演算の計算コストは引数のビット長に依存することを考慮する必要があります。これをビット複雑度と呼びます。
Harvey と van der Hoeven [ 35 ]は、次の一般的な境界を記録しています。マルチテープチューリングマシンのモデルにおける演算は2つの正方行列の次元であり、は整数行列係数の最大ビットサイズです。は、上記で紹介した代数モデルにおける行列乗算指数を表します。これは、xビット長の2つの整数を乗算する複雑さを表します。これは対数の特定の選択です。また、行列の次元が係数のビット長に比べて大きすぎないという条件の下で、改善された境界も提供します。たとえば、ある定数に対して。
上記の有限体と整数の例は、行列乗算のビット複雑度が行列係数の算術領域に依存することを示しています。有限体の場合、係数のビット長は定数で制限でき、中間係数の増加は発生しません。整数の場合、この現象により、次の項が含まれます。要因においてこれは、行列乗算アルゴリズムの過程で、ビット長が徐々に大きくなる可能性のある整数の乗算を反映している。
行列乗算と同じ漸近的複雑性を持つ問題には、行列式、行列の逆行列、ガウス消去法(次のセクションを参照)などがあります。 の形で表現できる複雑性を持つ問題特性多項式、固有値(ただし固有ベクトルは含まない)、エルミート標準形、およびスミス標準形が含まれます。
1969年の論文で彼は複雑性を証明した行列計算に関して、ストラッセンは、行列の逆行列、行列式、ガウス消去法は、乗法定数を除いて、行列乗算と同じ計算複雑度を持つことを証明した。証明では、使用される行列乗算について、その複雑度が一部の人にとって。
ストラッセンの証明の出発点は、ブロック行列乗算を用いることである。具体的には、偶数次元の行列2n × 2nは、 4 つのn × nブロック に分割できる。 この形式では、その逆は ただし、Aと可逆である。
したがって、 2n × 2n行列の逆行列は、 2回の逆行列計算、6回の乗算、4回の加算、またはn × n行列の加法逆行列計算によって求めることができます。ここで、n×n行列の逆行列計算、乗算、加算に必要な演算回数をそれぞれI ( n ) 、 M ( n ) 、 A ( n ) = n / 2とすると、次の式が得られます 。 もしこの公式は再帰的に適用できる。 もしそして最終的には ある定数dに対して。
次元が2のべき乗でない行列の場合、対角成分が1でそれ以外の成分が0である行と列を追加して行列の次元を2のべき乗にすることで、同じ複雑さを実現できます。
これは、逆行列を求める必要のあるすべての部分行列が実際に可逆であるような行列について、主張されている複雑性が証明される。このように、ランダムに選択された要素を持つ行列は確率1で可逆であるため、この複雑性はほぼすべての行列について証明される。
LU分解についても同じ議論が成り立ちます。行列Aが可逆であれば、等式が成り立ちます。 ブロックLU分解を定義し、再帰的に適用することができますそして最終的に元の行列の真のLU分解を得るため。
この議論は行列式にも当てはまります。なぜなら、それはブロックLU分解から得られるからです。
算術演算の回数を最小化する問題に関連して、乗算の回数を最小化する問題があります。乗算は通常、加算よりもコストのかかる演算です。行列乗算のアルゴリズムは、必ず乗算演算だが、これらのアルゴリズムは実用的ではない。素朴な方法から改善する教科書の掛け算、行列47回の乗算で実行できます。[ 36 ]可換環上の行列乗算は21 回乗算で実行できます[ 37 ] [ 38 ] (非可換環の場合は 23 回[ 39 ] )。必要な乗算の下限は 2 mn +2 n − m −2 (置換法を使用したn × m行列とm × n行列の乗算、)、つまりn=3の場合は少なくとも19回の乗算が必要で、n=4の場合は少なくとも34回必要です。 [ 40 ] n=2の場合、最適な7回の乗算と15回の加算が最小限で済み、8回の乗算でわずか4回の加算で済みます。[ 41 ] [ 42 ]
–Winograd アルゴリズムは、必要な乗算回数の上限に隠れた定数が非常に大きいため、実用的ではありません。
たとえ誰かが予想の 1 つを証明し、それによって
ω
= 2
を実証できたとしても、リース積アプローチは、実際に発生する大規模な行列問題には適用できない可能性が高い。[...] 時間の差が明らかになるには、入力行列が天文学的に大きくなければならない。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)