공간 사용량은 모든 Strassen 유사 알고리즘에 대해 최대 입니다 (즉, 대수적으로 행렬 곱셈의 순위에 기반한 알고리즘). Coppersmith–Winograd 알고리즘의 공간 복잡성 보기O ( n2)
그러나 이전 답변에서 공간 사용이 이유를 설명하지 않았다는 것을 깨달았습니다 ... 그래서 여기에 손을 넣습니다. Strassen 유사 알고리즘의 기능을 고려하십시오. 상수 c < 3에 대해 K c 곱셈을 사용하는 K x K 행렬 곱셈에 대한 고정 알고리즘에서 시작합니다 . 특히이 알고리즘 (무엇이든)은 다음과 같이 WLOG를 작성할 수 있습니다.O ( n2)케이× KKcc<3
그것은 계산 다른 행렬 L 1 , ... , L K의 C 제 행렬의 곱셈 항목 다양한 스칼라 및하여 K의 C의 행렬 R (1) , ... , R K의 C 번째 행렬에서 B 와 유사한 형태의KcL1,…,LKcAKcR1,…,RKcB
선형 조합 곱한 다음Li⋅Ri
항목 에 다양한 스칼라를 곱한 다음 A ⋅ B 를 얻기 위해 이러한 모든 행렬을 항목별로 더합니다 .Li⋅RiA⋅B
(이것은 소위 "bilinear"알고리즘이지만 모든 "대수"행렬 곱셈 알고리즘은 이런 방식으로 작성할 수 있습니다.) 각 에 대해이 알고리즘은 현재 제품 L i ⋅ R i 및 주어진 지점에서 메모리에있는 A ⋅ B 의 현재 값 (처음에는 모두 0으로 설정)이므로 공간 사용량은 O ( K 2 ) 입니다.i=1,…,KcLi⋅RiA⋅BO(K2)
이 유한 알고리즘이 주어 그 다음 임의적으로 연장되는 으로 큰 매트릭스를 파괴함으로써, 매트릭스 K × K의 크기의 블록 K에서 ℓ - 1 × K의 ℓ - 1 도포 유한 K × K 알고리즘 블록 두 블록을 곱해야 할 때마다 알고리즘을 재귀 적으로 호출합니다. 각 재귀 수준 에서 메모리에 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ℓ)