すべてのStrassenのようなアルゴリズム(つまり、行列乗算のランクの代数的上限に基づくアルゴリズム)のスペース使用量は、最大でです。Coppersmith–Winogradアルゴリズムのスペースの複雑さを参照してくださいO(n2)
しかし、以前の回答で、スペース使用量が理由を説明していないことに気づきました...そこで、ここでは手作業で説明します。Strassenのようなアルゴリズムの機能を検討してください。定数c < 3に対してK c乗算を使用するK × K行列乗算の固定アルゴリズムから始まります。特に、このアルゴリズム(とにかく)は、次のようにWLOGを作成できます。O(n2)K×KKcc<3
最初の行列Aのエントリにさまざまなスカラーを乗算する異なる行列L 1、… 、L K cと、同様の形式の2番目の行列BからのK c行列R 1、… 、R K cを計算します。KcL1,…,LKcAKcR1,…,RKcB
これは、それらの線形結合乗じ、その後、Li⋅Ri
それ乗算エントリ、種々のスカラーにより、次に得るために項目別アップこれらすべての行列を追加A ⋅ Bを。Li⋅RiA⋅B
(これはいわゆる「双線形」アルゴリズムですが、すべての「代数」行列乗算アルゴリズムはこのように記述できることがわかります。)ごとに、このアルゴリズムは現在の製品L I ⋅ R Iと電流値A ⋅ B空間の使い方があるので、任意の時点でメモリ内に(最初にすべてゼロに設定)O (K 2)。i=1,…,KcLi⋅RiA⋅BO(K2)
この有限のアルゴリズム与えられ、それは、次いで、任意に拡張されたに大きな行列を破壊することによって、行列K × Kの大きさのブロックKのℓ - 1 × Kのℓ - 1、印加有限K × Kアルゴリズムブロックに行列、および2つのブロックを乗算する必要があるときは常にアルゴリズムを再帰的に呼び出します。再帰の各レベルでは、我々は、維持する必要がO (K 2 ℓ)メモリ内のフィールド要素(記憶Oを(1 )Kℓ×KℓK×KKℓ−1×Kℓ−1K×KO(K2ℓ)O(1)異なる行列)。以下のための空間の使用と仮定Kのℓを- 1 × Kのℓは、- 1行列乗算であるS (ℓ - 1 )、この再帰アルゴリズムの空間使用量は、S (ℓ )≤ S (ℓ - 1 )+ O (K 2 ℓ)、S (1 )= 2 K 2の場合Kℓ×KℓKℓ−1×Kℓ−1S(ℓ−1)S(ℓ)≤S(ℓ−1)+O(K2ℓ)S(1)=2K2解く。S(ℓ)≤O(K2ℓ)