การคูณเมทริกซ์แบบลูกโซ่คืออะไร

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

ฉันเดาว่ามันเป็นรูปแบบหนึ่งของอัลกอริธึมการเขียนโปรแกรมแบบไดนามิกเพื่อให้บรรลุการดำเนินการด้วยวิธีที่เหมาะสมที่สุด แต่ฉันไม่ได้ไปไกลกว่านี้อีกแล้ว

ขอบคุณ




คำตอบ (2)


การคูณลูกโซ่เป็นเพียงการคูณแบบอนุกรม เอบีซีดี . เดิมทีไม่มีอะไรเกี่ยวกับการเขียนโปรแกรมและการเขียนโปรแกรมแบบไดนามิก แต่มีกฎที่ดี (กฎสมาคม) A * (B * C) = (A * B) * C แต่ค่าใช้จ่ายในการคำนวณของนิพจน์เหล่านี้แตกต่างกัน ดังนั้นจึงมีงานกระจายวงเล็บให้เหมาะสมที่สุด มันเป็นบทนำ ตอนนี้อ่านวิกิแล้ว

person Andrey    schedule 19.05.2010
comment
มันเป็นเรื่องเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก นี่เป็นคำอธิบายง่ายๆ ว่าการเขียนโปรแกรมแบบไดนามิกทำงานอย่างไร คุณสามารถดู CLRS เพื่อดูรายละเอียดเพิ่มเติม - person DarthVader; 19.05.2010
comment
@Andrey กฎที่ดีนั้นเรียกว่า กฎหมายแบบเชื่อมโยง - person Geek; 04.09.2012
comment
@Geek มันนานมากแล้วที่ฉันลืมไปว่าทำไมไม่พูดถึงมัน ไม่ว่าจะลืมชื่อหรือเพื่อเพิ่มอารมณ์ขัน - person Andrey; 04.09.2012

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

M1 = 12 x 20
M2 = 20 x 15
M3 = 15 x 30

มีสองวิธีในการแก้ปัญหานี้ ขึ้นอยู่กับว่าคุณเริ่มคูณเมทริกซ์จากจุดใด

1). ((M1 x M2) x M3)
2). (M1 x (M2 x M3))

อันแรกต้องการการคูณเพียง 3,600 + 5,400 = 9,000
วิธีที่สองต้องใช้การคูณ 9,000 + 7,200 = 16,200 ครั้ง
ที่นี่เราจะเลือกอันแรกในช่วงวินาทีเพราะต้องการจำนวนการคูณน้อยกว่า
โปรแกรมของคุณต้องสามารถบอกผู้ใช้ถึงวิธีใส่วงเล็บเมทริกซ์เพื่อลดการคูณได้ (ปัญหาการเพิ่มประสิทธิภาพ)

person Community    schedule 23.04.2013