ผลิตภัณฑ์เมทริกบูลีนที่กระจัดกระจายอย่างรวดเร็วพร้อมการประมวลผลล่วงหน้าที่เป็นไปได้


12

อะไรคืออัลกอริทึมที่มีประสิทธิภาพมากที่สุดสำหรับการคูณเมทริกซ์บูลีนที่กระจัดกระจายมากสองตัว (เช่น N = 200 และมีองค์ประกอบที่ไม่ใช่ศูนย์ 100-200)

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

อัลกอริทึม "ค่อนข้างไร้เดียงสา" (สแกน A เป็นแถวสำหรับแต่ละ 1 บิตของ A-row หรือผลลัพธ์ที่มีแถว B ตรงกัน) จะมีประสิทธิภาพมากและต้องใช้คำสั่ง CPU เพียงสองสามพันคำสั่งในการคำนวณผลิตภัณฑ์เดียว ดังนั้นมันจะไม่ง่ายเกินกว่าและเป็นเพียงปัจจัยที่คงที่เท่านั้น (เพราะมีหลายร้อยบิตในผลลัพธ์) แต่ฉันไม่สูญเสียความหวังและขอความช่วยเหลือจากชุมชน :)


1
ฉันสงสัยว่าเราสามารถเอาชนะคำสั่งของเครื่องได้ 10 คำต่อคำ เป็นไปได้ไหมว่ารูปแบบของการส่งออกโดยนัยบางอย่างอาจเป็นที่ยอมรับได้?
Warren Schudy

ใช่ตราบใดที่ Bs สามารถคูณได้อีก
jkff

การดำเนินการบวกและการคูณ (สำหรับบิต) การคูณเมทริกซ์นั้นถูกกำหนดตามอะไร อัลกอริทึมไร้เดียงสาของคุณแนะนำว่าคำตอบคือ "หรือ" และ "และ" และ "ตามลำดับ แต่นั่นเป็นการคูณเมทริกซ์ที่ค่อนข้างแปลกเนื่องจากสิ่งเหล่านั้นไม่ได้กำหนดเขตข้อมูล คุณหมายถึง "xor" แทนที่จะเป็น "or" หรือไม่
Warren Schudy

ไม่ฉันหมายถึง "หรือ" และ "และ" และ " ฉันไม่ต้องการการดำเนินการเพื่อกำหนดเขตข้อมูลนั่นเป็นปัญหาที่คล้ายกับการเข้าถึงของกราฟ (ฉันกำลังคำนวณองค์ประกอบของฟังก์ชั่นแบบหนึ่งต่อหลาย)
jkff

คำตอบ:


11

ฉันลังเลที่จะตอบคำถามนี้เพราะผลลัพธ์ทางทฤษฎีเพียงอย่างเดียวที่ฉันรู้ตามบรรทัดเหล่านี้มีชื่อของฉันบนกระดาษ ...

n×nAAn

(หมายเหตุ: อัลกอริธึมนี้มีประโยชน์จริง ๆ สำหรับกรณีที่เมทริกซ์ตัวหนึ่งมีความหนาแน่นสูงและอีกอันนั้นกระจัดกระจายกรณีนี้เกิดขึ้นมากมายเช่นเมื่อคำนวณการปิดของกราฟเบาบาง เทียบกับเมทริกซ์ adjacency เดิม)

กระดาษเป็น

Guy E. Blelloch, เวอร์จิเนีย Vassilevska, Ryan Williams: แนวทาง Combinatorial ใหม่สำหรับปัญหากราฟที่กระจัดกระจาย ICALP (1) 2008: 108-120

ε>0O(n2+ε)n×nA

vtAvO(n(t/k+n/)/logn)k(k)nε=logcnk=ε(logn)/loglognnt/logn+n2/logcnc

- แถวและคอลัมน์การปรับปรุงสามารถคำนวณได้ในเวลาAO(n1+ε)

เราใช้โครงสร้างข้อมูลนี้เพื่อให้อัลกอริทึมทางทฤษฎีที่รวดเร็วขึ้นสำหรับ APSP ในกราฟที่ไม่กระจายน้ำหนัก


3
ฉันเพิ่งสังเกตว่าคุณยังสันนิษฐานว่าผลลัพธ์ของการคูณเมทริกซ์นั้นเบาบาง ในกรณีนั้นมีอัลกอริทึมที่เร็วกว่า ค้นหาเว็บเพื่อหา "การคูณเมทริกซ์ที่อ่อนไหวต่อผลลัพธ์"
Ryan Williams

Ryan Williams - ฉันมีคำถามอย่างรวดเร็ว: คุณทราบหรือไม่หรือคุณสำรวจวิธีการทั่วไปที่จะกระจัดกระจาย - เมทริกซ์ที่มีการประเมินค่า (มากกว่าเพียงแค่บูลีน)? {1,0,1}
Alexandre Cassagne

5

ฉันคิดว่าสิ่งที่คุณเรียกว่าเป็นเมทริกซ์ "hypersparse" (nnz <n) ฉันเขียนบทความสองสามปีย้อนกลับไปที่วิธีการคูณพวกเขา โดยพื้นฐานแล้วมันเป็นผลิตภัณฑ์ด้านนอกที่เข้าร่วมกับการผสานหลายทางที่ชาญฉลาดเพื่อกำจัดสำนึกของ triples ระดับกลาง

Buluc and Gilbert, IPDPS 2008: http://gauss.cs.ucsb.edu/publication/hypersparse-ipdps08.pdf

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