มีงานใดบ้างในการค้นหาจำนวนการดำเนินการทางคณิตศาสตร์ขั้นต่ำที่จำเป็นในการคำนวณดีเทอร์มีแนนต์ของโดยnเมทริกซ์สำหรับขนาดเล็กและคงที่n ? ยกตัวอย่างเช่นn = 5
มีงานใดบ้างในการค้นหาจำนวนการดำเนินการทางคณิตศาสตร์ขั้นต่ำที่จำเป็นในการคำนวณดีเทอร์มีแนนต์ของโดยnเมทริกซ์สำหรับขนาดเล็กและคงที่n ? ยกตัวอย่างเช่นn = 5
คำตอบ:
เป็นที่ทราบกันว่าจำนวนของผู้ดำเนินการทางคณิตศาสตร์ที่จำเป็นในการคำนวณปัจจัยของนั้นเมทริกซ์n ω + o ( 1 )ที่ωคือค่าคงที่คูณเมทริกซ์ ดูตัวอย่างตารางนี้ใน Wikipedia รวมถึงเชิงอรรถและเอกสารอ้างอิง โปรดสังเกตว่าความซับซ้อนเชิงเส้นกำกับของเมทริกซ์ผกผันก็เหมือนกับการคูณเมทริกซ์ในแง่เดียวกันนี้
ความเท่าเทียมกันค่อนข้างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งคุณซ้ำสามารถคำนวณปัจจัยของที่เมทริกซ์ด้วยการทำงานบน( n / 2 ) × ( n / 2 )บล็อกโดยใช้ส่วนประกอบ Schur:
ดังนั้นคุณสามารถคำนวณปัจจัยโดยการคำนวณสอง( n / 2 ) × ( n / 2 )ปัจจัย, inverting หนึ่ง( n / 2 ) × ( n / 2 )เมทริกซ์คูณสองคู่( n / 2 )เมทริกซ์× ( n / 2 )และการทำงานบางอย่างง่ายขึ้น การขยายการเรียกดีเทอร์มีแนนต์ซ้ำความซับซ้อนนั้นจบลงด้วยการคูณเมทริกซ์และการผกผัน
วิธีนี้ใช้ได้ดีแม้กับขนาดเล็กและไม่ต้องใช้อัลกอริธึมการคูณเมทริกซ์ sub-cubic (แน่นอนว่ามันจะเทียบเท่ากับการกำจัดแบบเกาส์มากกว่าหรือน้อยกว่า) ตัวอย่างเช่นสำหรับn = 4เราสามารถคำนวณdet ( D )ด้วยการคูณสองครั้งD - 1กับสี่ฝ่ายB D - 1 Cด้วย2 × 8 = 16 การคูณ, det ( A - B D - 1 C )มีสองการคูณและคำตอบสุดท้ายด้วยการคูณหนึ่ง จำนวนรวมคือคูณบวกส่วนที่น้อยกว่า40จากการขยายตัวของปัจจัย การใช้อัลกอริธึมของ Strassen จะบันทึกสองการคูณที่นี่ แต่จะไม่แสดงอาการ
คุณอาจสังเกตเห็นว่าการขยายตัวนี้ใช้การหารอย่างใหญ่หลวง หากคุณต้องการที่จะหลีกเลี่ยงการแบ่งแล้วหนึ่งสามารถทำได้ในการดำเนินงานโดยทำงานร่วมกับลำดับโคลว์และการเขียนโปรแกรมแบบไดนามิก มันเป็นที่รู้จักกันว่าจะบรรลุn 2 + ω / 2 + o ( 1 ) การคูณและไม่มีการหาร