Die Raumnutzung beträgt für alle Strassen-ähnlichen Algorithmen (dh diejenigen, die auf der algebraischen Obergrenze des Rangs der Matrixmultiplikation beruhen ) höchstens ). Siehe Raumkomplexität des Coppersmith-Winograd-AlgorithmusO(n2)
In meiner vorherigen Antwort habe ich jedoch festgestellt, dass ich nicht erklärt habe, warum der Speicherplatz . Überlegen Sie, was ein Strassen-ähnlicher Algorithmus bewirkt. Es geht von einem festen Algorithmus für die K × K- Matrixmultiplikation aus, der K c -Multiplikationen für eine Konstante c < 3 verwendet . Insbesondere kann dieser Algorithmus (was auch immer es ist) WLOG so geschrieben werden, dass:O(n2)K×KKcc<3
Es berechnet verschiedene Matrizen L 1 , … , L K c, die Einträge der ersten Matrix A mit verschiedenen Skalaren multiplizieren, und K c Matrizen R 1 , … , R K c aus der zweiten Matrix B ähnlicher Form.KcL1,…,LKcAKcR1,…,RKcB
Es vermehrt jene Linearkombinationen , dannLi⋅Ri
Es multipliziert die Einträge von mit verschiedenen Skalaren und addiert dann alle diese Matrizen eintragsweise auf, um A ⋅ B zu erhalten .Li⋅RiA⋅B
(Dies ist ein sogenannter "bilinearer" Algorithmus, aber es stellt sich heraus, dass jeder "algebraische" Matrixmultiplikationsalgorithmus auf diese Weise geschrieben werden kann.) Für jedes muss dieser Algorithmus nur das speichern aktuelles Produkt L i ⋅ R i und der aktuelle Wert von A ⋅ B (anfangs auf Nullen gesetzt) im Speicher zu einem beliebigen Zeitpunkt, sodass der Platzbedarf O ( K 2 ) ist .i=1,…,KcLi⋅RiA⋅BO(K2)
Wenn dieser endliche Algorithmus gegeben ist, wird er auf beliebige -Matrizen erweitert, indem die großen Matrizen in K × K- Blöcke mit den Dimensionen K ℓ - 1 (Kℓ×KℓK×K unter Anwendung des Finite - K × K - Algorithmus zum Block Matrizen und rekursives Aufrufen des Algorithmus, wenn zwei Blöcke multipliziert werden müssen. Auf jeder Rekursionsebene müssen wir nur O ( K 2 ℓ ) Feldelemente im Speicherbehalten(Speichern von O ( 1 )Kℓ−1×Kℓ−1K×KO(K2ℓ)O(1)verschiedene Matrizen). Unter die Annahme die Raumnutzung für K l - 1 × K l - 1 Matrizenmultiplikation ist S ( l - 1 ) , wobei der Raum Verwendung dieses rekursiven Algorithmus ist , S ( l ) ≤ S ( l - 1 ) + O ( K 2 l ) , was für S ( 1 ) = 2 K 2 istKℓ×KℓKℓ−1×Kℓ−1S(ℓ−1)S(ℓ)≤S(ℓ−1)+O(K2ℓ)S(1)=2K2löst sich zu .S(ℓ)≤O(K2ℓ)
quelle