การตรวจสอบความไวกับการปิดสกรรมกริยา


9

การตรวจสอบความสลับซับซ้อนของ digraph ไม่ง่ายกว่า (ในแง่ของความซับซ้อนเชิงซีโมติก) หรือไม่ เรารู้ขอบเขตต่ำกว่าดีกว่าไหมΩ(n2) การตรวจสอบว่า digraph เป็นสกรรมกริยาหรือไม่?


1
การจัดเก็บการปิดสกรรมกริยาทั้งหมดจะทำให้คุณมีพื้นที่เพิ่มขึ้น สำหรับกราฟบางอันคุณควรจะสามารถขอและทางลัดการตรวจสอบทรานซิสชั่นโดยไม่ต้องกลับขอบ ดู: อันO(logn)อัลกอริทึมการเชื่อมต่อแบบขนาน, Y Shiloach, U Vishkin - วารสารอัลกอริทึม, 1982
Chad Brewbaker

1
ที่นี่ Siek มีบันทึกการใช้งานสำหรับ Boost Graph Library boost.org/doc/libs/1_54_0/libs/graph/doc/…
Chad Brewbaker

2
ไม่แน่ใจว่าคุณหมายถึงอะไร nแต่ขอบเขตล่างของ Ω(|V|2) ง่าย - พิจารณา Kn{e} สำหรับขอบบาง e. อัลกอริทึมใด ๆ จะถามว่าต้องตรวจสอบ(u,v)E เพื่อทุกสิ่ง u,vVมิฉะนั้นขอบที่เขาไม่ได้ถามอาจเป็นส่วนที่ขาดหายไป O(|V||E|)เป็นขอบเขตบนเช่นนี้เป็นเวลาที่ใช้ในการคำนวณการปิดสกรรมกริยา
RB

2
พิจารณากราฟกำกับด้วย n=3k จุดยอด: จุดยอดต้นกำเนิด s1,,skจุดยอดกลาง t1,,tk ที่เป็นผู้สืบทอดทันทีของแต่ละคน siและจมจุดสูงสุด u1,,uk ที่เป็นผู้สืบทอดทันทีของแต่ละคน ti. digraph เป็นสกรรมก iff แต่ละส่วนโค้ง(si,uj)มีอยู่ในกราฟ สิ่งนี้ต้องมีการตรวจสอบk2=(n/3)2=Ω(n2)ขอบ ในทางกลับกันการหาการปิดสกรรมกริยาสามารถทำได้O(nω) เวลาที่ไหน ω<2.373คือเลขชี้กำลังของการคูณเมทริกซ์ นี่เป็นขอบเขตที่รู้จักกันดีที่สุด
András Salamon

DAG ของคุณอาจมีโครงสร้างเพิ่มเติมหรือไม่หรือคุณต้องการผลลัพธ์ทั่วไปอย่างสมบูรณ์หรือไม่
Niel de Beaudrap

คำตอบ:


9

ด้านล่างฉันจะแสดงต่อไปนี้: ถ้าคุณมี O (n3ε) อัลกอริธึมเวลาสำหรับการตรวจสอบว่ากราฟมีการถ่ายทอดให้หรือไม่ ε>0แล้วคุณมี O (n3ε) อัลกอริธึมเวลาสำหรับการตรวจจับสามเหลี่ยมใน nกราฟโหนดและด้วยเหตุนี้ (โดยกระดาษจาก FOCS'10 ) คุณจะมี O (n3ε/3) อัลกอริธึมเวลาสำหรับการคูณบูลีนสองรายการ n×nเมทริกซ์และด้วยเหตุนี้จากFischer และ Meyer จากยุค 70นี่ก็หมายถึง O (n3ε/3) อัลกอริทึมเวลาสำหรับการปิดสกรรมกริยา

สมมติว่าคุณต้องการตรวจจับสามเหลี่ยมใน n ปม G. ตอนนี้เราสามารถสร้างกราฟต่อไปนี้H. H คือไตรภาคีที่มีฉากกั้น I,J,K บน nแต่ละโหนด ที่นี่แต่ละโหนดx ของ G มีสำเนา xI,xJ,xK ในส่วนต่างๆ I,J,K. สำหรับแต่ละขอบ(u,v) ของ G เพิ่มขอบกำกับ (uI,vJ) และ (uJ,vK). สำหรับแต่ละ nonedge(u,v) ของ G เพิ่มขอบกำกับ (uI,vK).

ก่อนอื่นถ้า G มีรูปสามเหลี่ยม u,v,wจากนั้น Hไม่ใช่สกรรมกริยา นี่คือตั้งแต่ขอบ(uI,vJ),(vJ,wK) อยู่ใน H แต่ (uI,wK)ไม่ใช่. ประการที่สองถ้าH ไม่ใช่สกรรมกริยาจากนั้นจะต้องมีเส้นทางบางเส้นทางจากบางโหนด s ถึงบางโหนด t ใน H ดังนั้น (s,t) ไม่ใช่ขอบชี้นำ H. อย่างไรก็ตามเส้นทางที่ยาวที่สุดในH มี 2 ขอบและเส้นทางดังกล่าวจะต้องอยู่ในรูปแบบ (uI,vJ),(vJ,wK) และ (uI,wK) ไม่ได้อยู่ใน Hดังนั้น u,v,w รูปสามเหลี่ยมใน G.


1
การค้นพบการปิดสกรรมกริยานั้นสำคัญเท่ากับการคูณเมทริกซ์ คำถามคือว่าเลขชี้กำลังในขอบเขตล่างสามารถยกได้จาก 2 หรือเลขชี้กำลังในขอบเขตบนสามารถลดลงได้จาก 2.373 ห่วงโซ่แห่งการให้เหตุผลที่คุณแสดงให้เห็นว่าเป็นสิ่งที่ดีที่สุดO(n2) อัลกอริทึมสำหรับการตรวจสอบความแปรปรวนจะให้เท่านั้น O(n2.667) อัลกอริทึมเวลาสำหรับการปิดสกรรมกริยา - แต่เรามี O(n2.373)อัลกอริธึมเวลา
András Salamon

ประเด็นก็คือมีการลดลงของกล่องดำ The O (n2.373) อัลกอริทึมเวลาอยู่ไกลจากการปฏิบัติ อัลกอริทึมการตรวจสอบการปฏิบัติ transitivity ที่ทำงานในเวลา subcubic อย่างไรก็ตามโดยการลดข้างต้นยังหมายถึงหนึ่งในทางปฏิบัติสำหรับ BMM และด้วยเหตุนี้การปิด transitive นอกจากนี้แม้ว่าคุณจะไม่สนใจอัลกอริทึมที่ใช้งานได้จริงก็เป็นไปได้ว่าการสูญเสียเลขชี้กำลังจาก FOCS'10 นั้นไม่จำเป็นและการตรวจจับรูปสามเหลี่ยมอาจเทียบเท่ากับ BMM
virgi

โอ้และแน่นอนเราสามารถตั้งค่าความแข็งของปัญหาความผันแปรได้เพียงแค่บนความแข็งที่สันนิษฐานของการตรวจจับรูปสามเหลี่ยม โปรดทราบว่าไม่มีขอบเขตที่รู้จักกันดีกว่าดีกว่าn2 สำหรับการตรวจจับรูปสามเหลี่ยมและขอบเขตบนที่ดีที่สุดคือ O(nω).
virgi

เรามีอัลกอริทึมการปฏิบัติ subcubic แล้วโดยใช้วิธีการคูณเมทริกซ์อย่างรวดเร็ว: ดูตัวอย่างcacm.acm.org/magazines/2014/2/ …
András Salamon

2
กระดาษ Ballard และคณะที่คุณพูดถึงเกี่ยวกับอัลกอริทึมของ Strassen โดยเฉพาะ จากสิ่งที่ฉันรู้ไม่มีอัลกอริธึมการคูณเมทริกซ์ที่ใช้อันดับของเส้นขอบเป็นจริง โดยเฉพาะอย่างยิ่งฉันไม่ได้ตระหนักถึงอัลกอริทึมในทางปฏิบัติสำหรับข้อ จำกัด ใด ๆω ต่ำกว่า 2.78.
virgi

7

ดูเหมือนว่า Ω(n2)เป็นขอบเขตล่างที่รู้จักกันเป็นอย่างดีเนื่องจากขอบเขตล่างหมายถึงขอบเขตล่างสำหรับการคูณเมทริกแบบบูล เรารู้ว่าสามารถตรวจสอบความไวได้โดยใช้การคูณเมทริกแบบบูลหนึ่งอันคือG เป็นสกรรมกริยาถ้าและเพียงถ้า G=G2.


4

การพิจารณาว่า DAG นั้นมีความสลับซับซ้อนหรือไม่นั้นยากที่จะตัดสินใจว่า digraph ทั่วไปเป็นสกรรมกริยา (ซึ่งนำเรากลับไปที่คำถามก่อนหน้านี้ของคุณ :))

สมมติว่าคุณมีอัลกอริทึมทำงานในเวลา O(f(n)) สำหรับการตัดสินใจว่า DAG เป็นสกรรมกริยาหรือไม่

รับกราฟกำกับ Gคุณสามารถใช้อัลกอริทึมแบบสุ่มต่อไปนี้เพื่อตัดสินใจว่า G เป็นสกรรมกริยาในเวลา O(f(n)log(1δ)) และความน่าจะเป็นข้อผิดพลาด δ:

 1. for $O(\log{\frac{1}{\delta}})$ iterations:

   1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.

   1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).

   1.3. If $G'$ (which is acyclic) is not transitive return false.

 2. return true.

ตอนนี้มันชัดเจนว่าถ้า G เป็นสกรรมกริยาอัลกอริทึมนี้กลับมาจริง

ทีนี้สมมติ Gไม่ใช่สกรรมกริยา ปล่อยe1=(vi,vj),e2=(vj,vk)E ดังนั้น (vi,vk)E (จะต้องมีขอบเช่น Gไม่ใช่สกรรมกริยา) ความน่าจะเป็นที่e1,e2G คือ 16ดังนั้นในแต่ละการวนซ้ำความน่าจะเป็นที่อัลกอริทึมจะคิด G ไม่ได้เป็นสกรรมกริยา 16 และหลังจากนั้น O(log(δ)) ซ้ำความน่าจะเป็นความล้มเหลวได้มากที่สุด δ.


1
ขอบคุณสำหรับคำตอบ. สมมติว่าฉันมีอัลกอริทึมสำหรับการตัดสินใจว่า DAG นั้นเป็นสกรรมกริยาหรือไม่O(f(n)) อย่างเช่น f(n)=Ω(n2). จากนั้นฉันสามารถตัดสินใจได้ว่ากราฟที่กำกับด้วย G นั้นมีความแปรปรวนหรือไม่O(f(n))- เวลาเป็น; 1) รับ digraph ที่เชื่อมต่ออย่างยิ่งในO(n2)-เวลา. 2) ตรวจสอบว่าแต่ละองค์ประกอบเสร็จสมบูรณ์หรือไม่O(n2)-เวลา. 3) ตรวจสอบว่าแต่ละคู่ของส่วนประกอบที่มีขอบในส่วนของกราฟคู่นั้นสมบูรณ์หรือไม่นั่นคือมีขอบจากทุกจุดยอดขององค์ประกอบหนึ่งไปยังจุดยอดขององค์ประกอบที่สองในO(n2)-เวลา. 4) ตรวจสอบว่าส่วน digraph สO(f(n))-เวลา.
ekayaaslan

1

ฉันคิดว่านี่น่าจะเป็นไปได้ในเวลาเชิงเส้นคือ O(n+m) ที่ไหน n คือจำนวนของจุดยอดและ mจำนวนขอบ อาจเป็นการปรับรูปแบบการส่งผ่านกราฟบางอย่างให้เป็นการตั้งค่าที่กำกับ จุดเริ่มต้นอาจเป็นLexBFS / LexDFSอธิบายไว้ที่นี่ ; สำหรับกราฟกำกับดูเหมือนว่าเราควรใช้การจัดเรียงทอพอโลยีมากกว่า DFS ดังนั้นอาจเป็นไปได้ที่อัลกอริทึมLexTSAจะค้นพบได้หรือไม่


2
นี่เป็น IMO ที่ไม่น่าเป็นไปได้เพราะมันจะให้อัลกอริธึมเชิงเส้นเชิงเวลาสำหรับความน่าจะเป็นในการตรวจสอบกริดในกราฟทั่วไปดูคำตอบของฉัน
RB

0

เกี่ยวกับคำตอบก่อนหน้านี่เป็นวิธีง่ายๆในการกำหนดอัลกอริทึมดังกล่าว กำหนดให้แต่ละจุดสุดยอดx ดัชนี i(x)เริ่มต้นไปที่ 0. แต่ละx, ปล่อย M(x)แสดงดัชนีหลายชุดของเพื่อนบ้านของมัน เราจำลองการเรียงลำดับโทโพโลยีโดยการบำรุงรักษาชุดRของจุดยอดที่ยังไม่ได้สำรวจซึ่งเริ่มต้นเป็นทั้งชุด ในแต่ละขั้นตอนเราทำดังต่อไปนี้:

  1. เลือกจุดสุดยอด xR มัลติเซ็ตที่มี M(x) น้อยที่สุด (ตามลำดับชุดมัลติ);

  2. ปรับปรุง i(x) ไปที่ตัวนับลูปปัจจุบันและนำออก x จาก R.

อัลกอริทึมนี้สามารถใช้กับปัญหาของคุณหรือสำหรับแอปพลิเคชันอื่นได้หรือไม่


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