จำเป็นต้องเรียกการคูณเมทริกซ์


20

กรงเล็บเป็น{1,3} อัลกอริทึมที่น่ารำคาญจะตรวจสอบกรงเล็บในเวลา มันสามารถทำได้ในโดยที่คือเลขชี้กำลังของการคูณเมทริกซ์เร็วดังนี้: ใช้กราฟย่อยที่เหนี่ยวนำโดยสำหรับแต่ละจุดยอดและหารูปสามเหลี่ยมใน ส่วนประกอบของมันK1,3O(n4)O(nω+1)ωN[v]v

เท่าที่ฉันรู้ขั้นตอนวิธีพื้นฐานเหล่านี้เป็นที่รู้จักกันเท่านั้น Spinrad ระบุไว้ในหนังสือของเขา "การเป็นตัวแทนกราฟที่มีประสิทธิภาพ" การตรวจสอบกรงเล็บในเวลาเป็นปัญหาเปิด (8.3, หน้า 103) สำหรับขอบเขตล่างเรารู้ว่าอัลกอริทึม - เวลาจะหมายถึง - อัลกอริทึมสำหรับการค้นหารูปสามเหลี่ยม ดังนั้นเราอาจพิจารณา\ Omega (n ^ \ omega)เป็นขอบเขตล่างo(nω+1)O(nc)O(nmax(c,2))Ω(nω)

คำถาม:

  1. มีความคืบหน้าเกี่ยวกับเรื่องนี้ไหม หรือความคืบหน้าในการแสดงมันเป็นไปไม่ได้?
  2. มีปัญหาตามธรรมชาติอื่น ๆ อีกหรือไม่กับO(nω+1) - อัลกอริธึมที่ดีที่สุด?

ข้อสังเกต:

  1. ฉันขอการตรวจจับกรงเล็บอย่างชัดเจนแทนที่จะรับรู้กราฟที่ปราศจากกรงเล็บ แม้ว่าอัลกอริทึมมักจะแก้ปัญหาทั้งสองอย่างมีข้อยกเว้นเล็กน้อย
  2. มีการอ้างสิทธิ์ใน Handbook of Algorithms และ Theoretical Computer Science ว่าสามารถพบได้ในเวลาเชิงเส้น แต่เป็นเพียงการพิมพ์ผิด (ดู "การแสดงกราฟที่มีประสิทธิภาพ")

คุณสามารถใช้วิธีการของAlon และคณะในการหารูปสามเหลี่ยมในสำหรับแต่ละโหนดที่ลงท้ายด้วยซึ่งเป็น ดีกว่าถ้ากราฟไม่หนาแน่นเกินไป O ( | V || E | 1.41 ) | V | ω + 1O(|E|1.41)O(|V||E|1.41)|V|ω+1
RB

@RB ขอบคุณสำหรับการชี้ให้เห็น แนวคิดพื้นฐานยังคงเรียกใช้อะไรก็ตามที่เป็นสามเหลี่ยมตรวจจับอัลกอริทึมครั้งซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยง n
Yixin Cao

เราคาดหวังได้อย่างไรว่าจะพบอัลกอริธึมที่ไม่เกี่ยวข้องกับการหารูปสามเหลี่ยม? เพราะสิ่งที่อัลกอริทึมควรตรวจสอบเพื่อนบ้านของแต่ละจุดสุดยอด ฉันหมายถึงว่าทรัพย์สินนั้นเป็นทรัพย์สินในท้องถิ่นมากยกเว้นความแตกต่างของปัจจัยคงที่ทุกจุดยอดควรเห็น (หรือฉันไม่สามารถจินตนาการถึงอัลกอริธึมตามธรรมชาติที่หลีกเลี่ยงพื้นที่นี้) คุณมีความคิดที่คลุมเครือบ้างไหม?
Saeed

2
อาจจะเป็นการดีที่จะพูดถึงว่าถ้าเราสามารถหาก้ามปูในเวลา f (n) เรายังสามารถหาสามเหลี่ยมในเวลา f (n + 1) (เพียงแค่เติมกราฟและเพิ่มจุดสุดยอดที่เชื่อมโยงกับทุกคน ) ดังนั้นเราจึงไม่ควรหวังว่าจะได้พบกับสิ่งที่ดีกว่าnnω
domotorp

1
@domotorp ดูเหมือนว่าส่วนนั้นชัดเจนวิธีอื่น ๆ ไม่ชัดเจนฉันหมายถึงสาเหตุที่เราต้องค้นหาเชิงเส้น ดังที่ Yixin ชี้ให้เห็นว่าอาจมีอัลกอริธึมอื่นที่ไม่ใช้อัลกอริธึมการค้นหารูปสามเหลี่ยมและแก้ปัญหาในซึ่งฉันคิดว่าหาอัลกอริธึมได้ยากและอาจง่ายกว่า เพื่อแสดงว่าอัลกอริทึมใด ๆ ใช้การค้นหารูปสามเหลี่ยมเป็นรูทีนย่อย (หรือสามารถแปลง) ด้วยการค้นหาแบบเชิงเส้น o(nω+1)
Saeed

คำตอบ:


16

ฉันคิดว่าเราสามารถทำได้ดีกว่าเล็กน้อยสำหรับกราฟที่หนาแน่นโดยใช้การคูณเมทริกซ์สี่เหลี่ยม แนวคิดที่คล้ายคลึงกันถูกใช้โดย Eisenbrand และ Grandoni ("ความซับซ้อนของกลุ่มพารามิเตอร์คงที่และชุดควบคุม", Theoretical Computer Science Volume 326 (2004) 57–67) สำหรับการตรวจจับ 4 กลุ่มO(n1+ω)

ให้เป็นกราฟที่เราต้องการตรวจจับการมีอยู่ของเล็บ ให้เป็นชุดของ (สั่ง) คู่ของจุดในVพิจารณา Boolean matrixขนาดต่อไปนี้: แต่ละแถวถูกทำดัชนีโดย , แต่ละคอลัมน์จะถูกทำดัชนีโดยบางส่วน , และรายการที่เกี่ยวข้องคือหนึ่งถ้าหาก ,และE พิจารณาผลิตภัณฑ์แมทริกซ์บูลีนของและ transpose ของ T กราฟมีเล็บถ้าหากมีอยู่A VG=(V,E)AV| V | × | A | ยูV ( V , W ) { U , V } E { V , W } E { U , W } E M M T G { U , V } อีเอ็มเอ็มทียูวีM|V|×|A|uV(v,w)A{u,v}E{v,w}E{u,w}EMMTG{u,v}E เช่นนั้นรายการในแถวที่จัดทำดัชนีโดยและคอลัมน์ที่จัดทำดัชนีโดยเป็นหนึ่งMMTuv

ความซับซ้อนของอัลกอริทึมนี้คือความซับซ้อนของการคำนวณผลิตภัณฑ์บูลีนของเมทริกซ์โดยเมทริกซ์โดยที่หมายถึงจำนวนของจุดยอดในกราฟ เป็นที่รู้จักกันว่าผลิตภัณฑ์แมทริกซ์ดังกล่าวสามารถคำนวณได้ในเวลาซึ่งจะดีกว่าที่ดีที่สุดที่รู้จักขอบเขตบน\แน่นอนถ้า (ตามที่คาดคะเนได้) จากนั้นทั้งสองวิธีให้ความซับซ้อนเดียวกัน3)n 2 × n n O ( n 3.3 ) O ( n 1 + ω ) ω ω = 2 O ( n 3 )n×n2n2×nnO(n3.3)O(n1+ω)ωω=2O(n3)


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

15

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

Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), "การค้นหาและนับจำนวนกราฟย่อยย่อยที่เกิดขึ้นอย่างมีประสิทธิภาพ", ตัวประมวลผลข้อมูล 74 (3–4): 115–121, ดอย: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552

ข้อสังเกตแรกคือเมื่อคุณคูณเมทริกซ์เมทริกซ์จะไม่ใช่แต่โดยที่คือระดับของจุดยอดแต่ละอันเพราะสิ่งที่คุณมองหาคือสามเหลี่ยมร่วม ในละแวกของแต่ละจุดสุดยอดd × d dn×nd×dd

ประการที่สองในกราฟปราศจากกรงเล็บทุกจุดสุดยอดจะต้องมีเพื่อนบ้านสำหรับมิฉะนั้นชุดของเพื่อนบ้านจะมีขอบน้อยเกินไปที่จะหลีกเลี่ยงการใช้สามเหลี่ยมในส่วนประกอบ ดังนั้นเมื่อคุณกำลังทำคูณเมทริกซ์คุณต้องการเพียงที่จะทำในการฝึกอบรมที่มีขนาดมากกว่าnO(O(m)nO(m)n

นอกจากนี้แต่ละขอบสามารถมีส่วนร่วมกับขนาดของปัญหาการคูณเมทริกซ์สำหรับจุดยอดสองจุดเท่านั้น กรณีที่เลวร้ายที่สุดที่เกิดขึ้นเมื่อสำหรับขนาดรวมของปัญหาเหล่านี้คูณเมทริกซ์คือการแพร่กระจายเข้าไปในปัญาขนาดแต่ละซึ่งจะช่วยให้เวลารวมผูกพันของ , การปรับปรุงกราฟกระจัดกระจายเหนือกล่าวถึงโดย R BO ( 2mO(O(m)O(m)O(m(1+ω)/2)O(nmω/2)


ว้าวนั่นเป็นความคิดที่ฉลาดฉันกำลังคิดว่าเป็นไปได้ที่จะทำการค้นหาแบบไม่เชิงเส้น (จริง ๆ แล้วหักล้างสิ่งนี้) และไม่ได้คิดถึงคุณสมบัติที่แท้จริงของปัญหา
Saeed

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