Việc sử dụng không gian nhiều nhất là O(n2) cho tất cả các thuật toán giống Strassen (tức là các thuật toán dựa trên giới hạn trên của cấp số nhân của ma trận theo đại số). Xem độ phức tạp không gian của thuật toán Coppersmith từ Winograd
Tuy nhiên, tôi nhận ra trong câu trả lời trước của mình rằng tôi đã không giải thích lý do tại sao việc sử dụng không gian là ... vì vậy ở đây có một cái gì đó lượn sóng bằng tay. Xem xét những gì một thuật toán giống như Strassen làm. Nó bắt đầu từ một thuật toán cố định cho K × K nhân ma trận có sử dụng K c phép nhân đối với một số liên tục c < 3 . Cụ thể, thuật toán này (bất kể đó là gì) có thể viết WLOG để:O(n2)K×KKcc<3
Nó tính ma trận khác nhau L 1 , ... , L K c mà mục nhân của ma trận đầu tiên Một bởi vô hướng khác nhau và K c ma trận R 1 , ... , R K c từ ma trận thứ hai B của một hình thức tương tự,KcL1,…,LKcAKcR1,…,RKcB
Nó nhân các kết hợp tuyến tính , sau đóLi⋅Ri
Nó nhân lên mục của bởi vô hướng khác nhau, sau đó thêm tất cả các ma trận lên entrywise để có được một ⋅ B .Li⋅RiA⋅B
(Đây là một cái gọi là "Bilinear" thuật toán, nhưng nó quay ra rằng tất cả các "đại số" thuật toán nhân ma trận có thể được viết theo cách này.) Đối với mỗi , thuật toán này chỉ có để lưu trữ các sản phẩm hiện tại L i ⋅ R i và giá trị hiện tại của A ⋅ B (ban đầu được đặt thành tất cả các số 0) trong bộ nhớ tại bất kỳ điểm nào, do đó, mức sử dụng không gian là O ( K 2 ) .i=1,…,KcLi⋅RiA⋅BO(K2)
Với thuật toán hữu hạn này, nó sau đó được mở rộng một cách độc đoán ma trận, bằng cách phá vỡ các ma trận lớn thành K × K khối kích thước K ℓ - 1 × K ℓ - 1 , áp dụng hữu hạn K × K thuật toán để khối ma trận, và gọi đệ quy thuật toán bất cứ khi nào nó cần nhân hai khối. Ở mỗi cấp độ của đệ quy, chúng ta cần phải giữ chỉ O ( K 2 ℓ ) yếu tố lĩnh vực trong bộ nhớ (lưu trữ O ( 1 )Kℓ×KℓK×KKℓ−1×Kℓ−1K×KO(K2ℓ)O(1)khác nhau ma trận). Giả sử việc sử dụng không gian cho K ℓ - 1 × K ℓ - 1 nhân ma trận là S ( ℓ - 1 ) , việc sử dụng không gian của thuật toán đệ quy này là S ( ℓ ) ≤ S ( ℓ - 1 ) + O ( K 2 ℓ ) , mà cho S ( 1 ) = 2 K 2Kℓ×KℓKℓ−1×Kℓ−1S(ℓ−1)S(ℓ)≤S(ℓ−1)+O(K2ℓ)S(1)=2K2phá được đến .S(ℓ)≤O(K2ℓ)