เมทริกซ์บูลีนที่กระจัดกระจายอย่างรวดเร็ว


13

ดังนั้นฉันมีเมทริกซ์บูลีนสแควร์ที่กระจัดกระจายประมาณ 100-200 ตัวที่มีความยาวด้านข้าง ~ หลายสิบตัวและฉันต้องคำนวณผลิตภัณฑ์ของพวกเขา ฉันรู้ว่าถ้าฉันคูณพวกเขาแบบอนุกรมผลิตภัณฑ์มักจะอยู่ห่าง ๆ ในแต่ละขั้นตอน

มีอัลกอริธึมผลิตภัณฑ์โซ่เมทริกซ์ที่ทำงานเร็วเป็นพิเศษในกรณีนี้หรือไม่?

ในระดับที่สูงขึ้นปัญหาคือการคำนวณองค์ประกอบของการแมปแบบหนึ่งต่อหลายแบบบนกราฟขนาดเล็กที่สมเหตุสมผล (ฟังก์ชันการเปลี่ยนผ่านของ NFA) ซึ่งองค์ประกอบส่วนใหญ่ทำแผนที่ไม่เกิน 0-3

(โปรดทราบว่านี่ไม่ใช่ปัญหา "เมทริกซ์เชนผลิตภัณฑ์" ตามปกติเนื่องจากเมทริกซ์ทั้งหมดมีขนาดเท่ากันและฉันไม่ต้องเลือกวงเล็บที่ดีที่สุด)


5
จริง ๆ แล้วลำดับที่คุณคูณพวกมันอาจจะส่งผลต่อการกระจายของผลลัพธ์กลางดังนั้นมันอาจยังคงเป็นปัญหาสำคัญในอัลกอริทึมที่รวดเร็วเช่นนั้น
Joshua Grochow

จากคำถามอื่น ๆ ที่คุณใช้ในการดำเนินการ 0/1 semiringและ / หรือไม่ใช่การเพิ่ม / การคูณ (เนื่องจากปัญหาดูเหมือนจะระบุ) โปรดระบุคำถามนี้ให้ชัดเจน
vzn

คำตอบ:


10

นี่นานเกินไปที่จะแสดงความคิดเห็น - ฉันสงสัยว่าเมทริกซ์เหล่านั้นมีโครงสร้างที่ทำให้พวกเขาทำงานแตกต่างจากเมทริกซ์แบบสุ่ม ผลิตภัณฑ์ของการฝึกอบรมการกระจัดกระจายสุ่มไปที่ศูนย์หรือกลายเป็นที่ไม่กระจัดกระจายอย่างรวดเร็ว

นี่คือการทดลองง่ายๆ - ใช้ 200 เมทริกซ์ 50x50 สุ่มและจำนวนพล็อตของเลขศูนย์ที่ไม่ใช่ฟังก์ชันของจำนวนเมทริกซ์คูณ พล็อตด้านล่างแสดงความเบี่ยงเบนมาตรฐานมากกว่าการวิ่ง 2000 ครั้ง พล็อตแรกคือ 2% sparsity ส่วนที่สองคือ 3%


(ที่มา: yaroslavvb.com ) (ที่มา: yaroslavvb.com )

ใช้เวลา 3 นาทีบนแล็ปท็อปของฉันโดยใช้การคูณเมทริกซ์มาตรฐาน

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