Strassen เกิดขึ้นกับวิธีการคูณเมทริกซ์ของเขาอย่างไร


18

อัลกอริธึมการคูณเมทริกซ์ที่มีชื่อเสียงของ Strassen เป็นวิธีปฏิบัติที่แท้จริงสำหรับเราเนื่องจากจะช่วยลดความซับซ้อนของเวลาจาก O (n 3 ) เป็น O (n 2.8 ) แบบดั้งเดิม

แต่จากแหล่งข้อมูลทั้งหมดที่ฉันเคยผ่านมาแม้แต่หนังสือของ Cormen และ Steven Skienna พวกเขาไม่ได้ระบุอย่างชัดเจนว่า Strassen คิดอย่างไรเกี่ยวกับเรื่องนี้

เหตุผลของอัลกอริธึมการคูณเมทริกซ์ของ Strassen คืออะไร นี่เป็นอุบัติเหตุที่โชคดีหรือมีบางสิ่งที่ลึกซึ้งกว่าอยู่ในนั้น


ฉันได้รับการบอกว่าไม่มีใครรู้จริง ๆ ทุกอย่างจะเป็นการเก็งกำไรเป็นหลัก อย่างไรก็ตามฉันพบสิ่งนี้ซึ่งอาจใช้ได้ (แม้ว่าฉันยังไม่ได้อ่าน)
Dukeling

ฉันคิดว่า Strassen alg มีความชัดเจนในวิกิพีเดีย
MarshalSHI

4
@meshuai ฉันคิดว่าแค่อธิบายว่าทำไมมันถึงใช้งานได้ไม่ใช่วิธีที่เขาคิดเช่นเดียวกับทรัพยากรอื่น ๆ ส่วนใหญ่
Dukeling

2
คุณสามารถดูกระดาษต้นฉบับของ Strassen: scgroup.hpclab.ceid.upatras.gr/class/SC/Papers/Strassen.pdf
Axel Kemper

คำตอบ:


26

นอกเหนือจาก Strassen ไม่มีใครสามารถบอกคุณได้ว่า Strassen มีความคิดของเขาอย่างไร อย่างไรก็ตาม, ฉันสามารถบอกคุณได้, คุณจะพบสูตรนั้นได้อย่างไร - โดยที่คุณสนใจในเรขาคณิตเชิงพีชคณิตและทฤษฎีการเป็นตัวแทน นอกจากนี้ยังช่วยให้คุณมีเครื่องมือที่จะแสดงให้เห็นว่าสูตร Strassen เป็นดีเท่าที่สามารถจะทำได้หรืออย่างแม่นยำมากขึ้นว่ามีสูตรการคำนวณไม่มีผลิตภัณฑ์สอง 2 × 2 เมทริกซ์ที่ใช้น้อยกว่า 7 คูณ

เนื่องจากคุณสนใจเมทริกซ์ฉันคิดว่าคุณรู้พีชคณิตเชิงเส้นพื้นฐานและจะเบลอเล็กน้อยสำหรับรายละเอียดขั้นสูง

ก่อนอื่นให้เป็นEชุดของแผนที่เชิงเส้นทั้งหมดจากระนาบหนึ่งไปอีกระนาบหนึ่ง นี่คือชุดของเมทริกซ์ 2 × 2 ทั้งหมด แต่เราลืมเกี่ยวกับระบบพิกัดเฉพาะ - เพราะถ้ามีระบบพิกัดที่ดีกว่า "ค่าปริยาย" เราอาจสนใจใช้มันสำหรับการคูณเมทริกซ์ นอกจากนี้เรายังใช้แสดงโดยE †พื้นที่สองของEและX = P (E⊗E††⊗E)พื้นที่ projective เกี่ยวข้องกับเมตริกซ์ผลิตภัณฑ์E⊗E†⊗E†

องค์ประกอบของX = P (E⊗E†⊗E†)ของรูปแบบพิเศษ[c⊗α⊗β]สามารถตีความได้ว่าเป็นการดำเนินการเบื้องต้นเกี่ยวกับเมทริกซ์ซึ่งในระบบพิกัดบางส่วนที่อ่านค่าสัมประสิทธิ์ของเมทริกซ์Aและสัมประสิทธิ์ของเมทริกซ์Bและเขียนผลิตภัณฑ์ของสัมประสิทธิ์เหล่านี้ในเมทริกซ์Cบางตัว องค์ประกอบทั่วไปของXคือการรวมกันของการดำเนินงานระดับประถมศึกษาเหล่านี้ดังนั้นผลิตภัณฑ์πสองการฝึกอบรมเข้าใจว่าเป็นแผนที่จากP (E) × P (E)เพื่อP (E)เป็นจุดในX

สูตรผลิตภัณฑ์เมทริกซ์ปกติและสูตรของ Strassen สามารถแสดงเป็นการรวมกันของการดำเนินการเชิงเส้นเหล่านี้ดังนั้นให้ฉันแสดงโดยW₁ชุดของการดำเนินการเบื้องต้นเหล่านี้[c⊗α⊗β]และให้ฉันอธิบายการผสมทางเรขาคณิตของพวกเขา

ให้W₂เป็นความหลากหลายของsecantsของW₁ในX.มันจะได้รับโดยการ (ปิด) สหภาพของสายทั้งหมดจะผ่านสอง (ทั่วไป) จุดที่W₁ เราสามารถนึกถึงมันเป็นชุดของการรวมกันทั้งหมดของการดำเนินงานที่เป็นองค์ประกอบสองอย่าง

ให้W₃เป็นความหลากหลายของเครื่องบินซีแคนต์ของW₁ในX.มันจะได้รับโดยการ (ปิด) สหภาพของเครื่องบินทั้งหมดจะผ่านสาม (ทั่วไป) จุดที่W₁ เราสามารถนึกถึงมันเป็นชุดของการรวมกันทั้งหมดของการดำเนินงานที่เกี่ยวกับสามอย่าง

ในทำนองเดียวกันเรากำหนดสายพันธุ์ที่ไม่ต่อเนื่องสำหรับดัชนีที่มากขึ้น โปรดทราบว่าพันธุ์เหล่านี้เติบโตขนาดใหญ่และมีขนาดใหญ่ที่เป็นW₁⊂W₂⊂W₃⊂⋯ดังนั้นคลาสสิกการแสดงสูตรผลิตภัณฑ์แมทริกซ์ว่าผลิตภัณฑ์ของเมทริกซ์เป็นจุดของW₈ แท้จริง

ข้อเสนอ (Strassen) - ผลิตภัณฑ์ของเมทริกซ์πอยู่ในW₇

เท่าที่ฉันรู้ Strassen ไม่ได้ใส่อะไรลงไป แต่นี่เป็นมุมมองทางเรขาคณิตของคำถามนี้ มุมมองนี้จะเป็นประโยชน์มากเพราะมันยังช่วยให้คุณพิสูจน์ว่าสูตร Strassen เป็นที่ดีที่สุดนั่นคือπไม่ได้อยู่ในW₆ วิธีการทางเรขาคณิตที่พัฒนาที่นี่ยังสามารถใช้สำหรับปัญหาที่กว้างขึ้น

ฉันหวังว่าฉันจับความอยากรู้ของคุณ คุณสามารถไปต่อได้โดยอ่านบทความนี้โดย Landsberg และ Manivel:

http://arxiv.org/abs/math/0601097

¹ฉันจะไม่แก้ไขข้อผิดพลาดนี้เพราะฉันเป็นหวัด


มันค่อนข้างง่ายที่จะแสดงว่าความสามารถในการทำผลิตภัณฑ์เมทริกซ์ (3x3) ที่มีการคูณ 21 ครั้งจะทำให้อัลกอริทึมเร็วขึ้นแบบไม่แสดงอาการ ความคิดใด ๆ ถ้าเป็นไปได้ / เป็นไปได้ / ไม่ทราบ?
gnasher729

3

ฉันเพิ่งได้รับมอบหมายให้ทำสิ่งนี้เพื่อทำการบ้านและฉันคิดว่าฉันมี Epiphany ที่ประณีต: อัลกอริธึมของ Strassen ใช้ "ความกว้าง" ของส่วนประกอบก่อนการสรุปเพื่อใช้การดำเนินงานน้อยลง ที่ยังสามารถใช้เพื่อแยกคำตอบสุดท้าย (นี่ไม่ใช่วิธีที่ดีที่สุดที่จะพูด แต่มันยากสำหรับฉันที่จะอธิบาย)

ฉันจะใช้ตัวอย่างของการคูณจำนวนเชิงซ้อนสองตัวเข้าด้วยกันเพื่อแสดงความสมดุลของ " การทำงานกับส่วนประกอบ ":

สมการของจำนวนเชิงซ้อน

โปรดสังเกตว่าเราใช้การคูณ 4 ตัวซึ่งส่งผลให้มีองค์ประกอบผลิตภัณฑ์ 4 ประการ :

เรามีส่วนประกอบของผลิตภัณฑ์ 4 ประการ

โปรดทราบว่าองค์ประกอบสุดท้าย 2 อย่างที่เราต้องการ: ส่วนจริงและจำนวนจินตภาพของจำนวนเชิงซ้อนเป็นสมการเชิงเส้นจริง ๆ : มันคือผลรวมของผลคูณของสเกล ดังนั้นเราจึงจัดการกับสองการดำเนินการที่นี่: การเพิ่มและการคูณ

ความจริงก็คือส่วนประกอบของผลิตภัณฑ์ทั้ง 4ของเราสามารถเป็นตัวแทนของ2 ส่วนประกอบสุดท้ายของเราหากเราเพียงแค่เพิ่มหรือลบส่วนประกอบของเรา:

ส่วนประกอบผลิตภัณฑ์ของเราสามารถเป็นตัวแทนชิ้นสุดท้ายของเรา

แต่องค์ประกอบ 2 ชิ้นสุดท้ายของเราสามารถแสดงเป็นผลรวมของผลิตภัณฑ์ นี่คือสิ่งที่ฉันมาด้วย:

จริงๆแล้วเราต้องการเพียง 3 องค์ประกอบผลิตภัณฑ์ที่แตกต่าง

หากคุณเห็นจริง ๆ แล้วเราต้องการเพียง3 องค์ประกอบผลิตภัณฑ์ที่แตกต่างเพื่อสร้างสององค์ประกอบสุดท้ายของเรา:

3 องค์ประกอบที่แตกต่างของเรา

แต่เดี๋ยวก่อน! ตัวพิมพ์ใหญ่แต่ละตัวอยู่ในผลิตภัณฑ์ของตัวเอง! แต่การจับคือเรารู้ว่าเราสามารถสร้าง (A + B + C + D) จาก (a + b) (c + d) ซึ่งเป็นเพียงการคูณ 1

ดังนั้นในท้ายที่สุดอัลกอริทึมของเราได้รับการปรับให้ใช้น้อยลง แต่ส่วนประกอบ "อ้วนขึ้น" ซึ่งเราแลกเปลี่ยนปริมาณการคูณเพื่อการดำเนินการรวมที่มากขึ้น

ส่วนหนึ่งของสิ่งที่ทำให้สิ่งนี้เป็นคุณสมบัติการกระจายซึ่งทำให้ A (B + C) เทียบเท่ากับ (AB + AC) ขอให้สังเกตว่าการคำนวณครั้งแรกสามารถทำได้โดยใช้ 1 เพิ่มและ 1 คูณการดำเนินงานในขณะที่สองต้องคูณ 2 และ 1 ผลรวม

อัลกอริทึมของ Strassenเป็นส่วนเสริมของการเพิ่มประสิทธิภาพที่เรานำไปใช้กับผลิตภัณฑ์จำนวนเชิงซ้อนยกเว้นมีข้อกำหนดของผลิตภัณฑ์เป้าหมายมากขึ้นและส่วนประกอบของผลิตภัณฑ์ที่เป็นไปได้มากขึ้นที่เราสามารถใช้เพื่อรับเงื่อนไขเหล่านั้น สำหรับเมทริกซ์ 2x2 นั้นอัลกอริทึมของ Strassen morphs อัลกอริทึมที่ต้องการ 8 การคูณกับหนึ่งที่ต้องการ 7 การคูณและใช้ประโยชน์จากคุณสมบัติการกระจายเพื่อ "ผสาน" การคูณสองการรวมกันเป็นหนึ่งการดำเนินการและแทนที่จะออกจากโหนด "อ้วน" ใหม่ เงื่อนไขสินค้าหรืออื่น ๆ ฯลฯ

ตัวอย่างที่ดี: ในการรับ (-1) และ (2) และ (5) คุณสามารถคิดได้ว่าเป็นเพียง (-1), (2), (5) หรือคุณสามารถคิดได้ว่าเป็น (2-3) ), (2), (2 + 3) แม้ว่าการดำเนินการครั้งที่สองจะใช้ตัวเลขที่แตกต่างกันน้อยลง สิ่งที่จับได้คือจำนวนของจำนวนที่แตกต่างกันนั้นเท่ากับจำนวนส่วนประกอบของผลิตภัณฑ์ที่คุณต้องการคำนวณสำหรับการคูณเมทริกซ์ เราเพียง แต่ปรับให้เหมาะสมสำหรับสิ่งนี้เพื่อค้นหามุมมองบางอย่างของการดำเนินการพื้นฐานที่ใช้ประโยชน์จากผลลัพธ์ isomorphic โดยใช้รูปแบบที่แตกต่างกันผ่านคุณสมบัติการกระจาย

บางทีนี่อาจเชื่อมโยงกับทอพอโลยีในบางวิธี? นี่เป็นเพียงวิธีการทำความเข้าใจของคนธรรมดาของฉัน

แก้ไข:นี่คือภาพของบันทึกย่อของฉันฉันเข้าสู่กระบวนการทำให้คำอธิบายจำนวนเชิงซ้อน:

หมายเหตุบางอย่างสำหรับการหาส่วนจำนวนเชิงซ้อน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.