การใช้พื้นที่เป็นอย่างมากสำหรับอัลกอริธึม Strassen ที่เหมือนกันทั้งหมด (เช่นที่อิงตามขอบเขตบนของการคูณเมทริกซ์พีชคณิต) ดูความซับซ้อนของอวกาศของอัลกอริทึม Coppersmith – WinogradO(n2)
อย่างไรก็ตามฉันรู้ว่าในคำตอบก่อนหน้าของฉันว่าฉันไม่ได้อธิบายว่าทำไมการใช้พื้นที่เป็น ... ดังนั้นนี่จึงเป็นเรื่องมือหยัก พิจารณาสิ่งที่อัลกอริทึมคล้าย Strassen ทำ มันเริ่มต้นจากขั้นตอนวิธีการคงที่สำหรับK × Kคูณเมทริกซ์ที่ใช้K คคูณสำหรับบางคนคงค< 3 โดยเฉพาะอัลกอริทึมนี้ (ไม่ว่าจะเป็นอะไร) สามารถเขียน WLOG เพื่อO(n2)K×KKcc<3
มันคำนวณเมทริกซ์ที่แตกต่างกันL 1 , ... , L K คซึ่งรายการคูณแรกเมทริกซ์โดยเกลาต่างๆและK คเมทริกซ์R 1 , ... , R K คจากเมทริกซ์ที่สองBของรูปแบบที่คล้ายกันKcL1,…,LKcAKcR1,…,RKcB
มันคูณชุดค่าผสมเชิงเส้นเหล่านั้นแล้วLi⋅Ri
มันคูณรายการของโดยเกลาต่างๆแล้วเพิ่มการฝึกอบรมเหล่านี้ทั้งหมดขึ้น entrywise ที่จะได้รับ⋅ BLi⋅RiA⋅B
(นี่คืออัลกอริธึมที่เรียกว่า "bilinear" แต่ปรากฎว่าอัลกอริทึมการคูณเมทริกซ์ "พีชคณิต" ทุกตัวสามารถเขียนด้วยวิธีนี้ได้) สำหรับอัลกอริทึมนี้จะต้องเก็บ ผลิตภัณฑ์ในปัจจุบันL ฉัน ⋅ R ฉันและมูลค่าปัจจุบันของ⋅ B (ตั้งค่าเริ่มต้นของทุก-เลขศูนย์) ในหน่วยความจำที่จุดใดก็ตามดังนั้นการใช้พื้นที่เป็น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 2Kℓ×KℓKℓ−1×Kℓ−1S(ℓ−1)S(ℓ)≤S(ℓ−1)+O(K2ℓ)S(1)=2K2แก้เพื่อ )S(ℓ)≤O(K2ℓ)