Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีง่ายๆ ในการจำสมการเมทริกซ์ของ Strassen ใน C++


เป็นอัลกอริธึมการคูณเมทริกซ์ที่มีพื้นฐานมาจาก แบ่งและพิชิต กระบวนการ. ใช้เพื่อคูณเมทริกซ์ที่มีขนาดเท่ากันสองเมทริกซ์

การหาการคูณของเมทริกซ์สองตัว−

วิธีง่ายๆ ในการจำสมการเมทริกซ์ของ Strassen ใน C++

อัลกอริธึมของstraßen ลดค่าใช้จ่ายในการคูณด้วยการทำให้การคูณง่ายขึ้น

นี่คือการคูณโดยใช้อัลกอริธึมของ strassen:

วิธีง่ายๆ ในการจำสมการเมทริกซ์ของ Strassen ใน C++

M1 =a*(f - h)
M2 =(a + b)*h
M3 =(c + d)*e
M4 =d*(g - e)
M5 =(a + d)*(e + h)
M6 =(b - d)*(g + h)
M7 =(a - c)*(e + f)

สามารถจดจำได้ง่ายและสามารถถอดรหัสรหัสอัลกอริธึมได้ สำหรับสิ่งนี้ เรามีกฎสองสามข้อ ก่อนอื่นให้จำ 6 สิ่งนี้−

  • ใช้ AHED สำหรับ 4 ค่าแรกของ M.
  • ใช้ การคูณแนวทแยง สำหรับค่าที่ 5 ของ M.
  • ใช้ CR สุดท้าย (col สุดท้ายจาก mat 1 และแถวสุดท้ายจาก mat 2) สำหรับค่าที่ 6 ของ M
  • ใช้ CR แรก (col แรกจาก mat 1 และแถวแรกจาก mat 2) สำหรับค่าที่ 7 ของ M
  • ในขณะที่พิจารณาองค์ประกอบของแถวให้เพิ่มและในกรณีที่คอลัมน์ลบออก
  • ค่าอัปเดตหลังจากนั้นโดยใช้ค่าที่อยู่ติดกัน

โดยใช้วิธีเหล่านี้ทำให้เราจำค่าต่างๆ ได้ง่าย