การอ้างอิงสำหรับอัลกอริทึมการทดสอบกราฟแบบผสม?


16

กราฟผสมคือกราฟที่อาจมีทั้งขอบกำกับและไม่ระบุทิศทาง กราฟที่ไม่ได้บอกทิศทางต้นแบบนั้นได้มาจากการลืมการหมุนของขอบกำกับและในทิศทางอื่นกราฟที่ได้จากการผสมของกราฟจะถูกกำหนดโดยการกำหนดทิศทางให้กับแต่ละขอบที่ไม่มีทิศทาง ชุดของขอบก่อให้เกิดวงจรในกราฟผสมถ้ามันสามารถมุ่งเน้นในรูปแบบวงจรชี้นำ กราฟผสมนั้นมีลักษณะเป็นวงจรถ้าหากไม่มีรอบ

ทั้งหมดนี้เป็นมาตรฐานและมีเอกสารเผยแพร่จำนวนมากที่กล่าวถึงกราฟผสมแบบวน ดังนั้นอัลกอริทึมต่อไปนี้สำหรับการทดสอบ acyclicity ของกราฟผสมต้องเป็นที่รู้จัก:

ทำซ้ำขั้นตอนต่อไปนี้:

  • เอาจุดสุดยอดใด ๆ ที่ไม่มีขอบกำกับเข้ามาและไม่มีขอบที่ไม่ตกกระทบเนื่องจากมันไม่สามารถเป็นส่วนหนึ่งของวงจรใด ๆ ได้
  • หากจุดสุดยอดใด ๆ ไม่มีขอบกำกับที่เข้ามา แต่มีขอบที่ไม่ได้กำหนดทิศทางเดียวเกิดขึ้นแน่นอนดังนั้นรอบใด ๆ ที่ใช้ขอบที่ไม่ได้กำหนดทิศทางจะต้องเข้ามาที่ขอบนั้น แทนที่ขอบที่ไม่ได้เปลี่ยนทิศทางด้วยขอบกำกับที่เข้ามา

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

บทความ Wikipedia เกี่ยวกับกราฟผสมกล่าวถึงกราฟผสมแบบวน แต่ไม่ได้กล่าวถึงวิธีการทดสอบดังนั้นฉันต้องการเพิ่มบางอย่างเกี่ยวกับอัลกอริทึมนี้ แต่เพื่อที่ฉันต้องการการอ้างอิงที่ตีพิมพ์ ใครสามารถบอกฉันว่ามัน (หรืออัลกอริทึมอื่น ๆ สำหรับการทดสอบความเป็นวงกลม) ปรากฏในวรรณกรรมหรือไม่?


จะเกิดอะไรขึ้นเมื่อจุดสุดยอดมีสองขอบที่ไม่เกิดการชนและไม่มีขอบอื่น ๆ ตัวอย่างเช่นในรูปสามเหลี่ยมที่ไม่ได้บอกทิศทาง ฉันหมายถึงกฎข้างต้นครอบคลุมกรณีนี้หรือไม่
Mateus de Oliveira Oliveira

คุณไม่สามารถทำอะไรเกี่ยวกับจุดสุดยอดดังกล่าวจนกว่าจุดสุดยอดที่แตกต่างกันจะใช้กฎที่ orients หนึ่งของขอบ หากคุณติดอยู่กับสถานการณ์ที่มีจุดยอดดังกล่าวอยู่และคุณไม่สามารถใช้กฎอีกต่อไปกราฟของคุณจะมีวัฏจักร
David Eppstein

อาจจะทำให้ชัดเจนขึ้นเพื่อพิจารณาว่าเกิดอะไรขึ้นในกรณีที่กราฟของคุณไม่ได้ถูกบอกทิศทาง วิธีหนึ่งในการทดสอบว่ามันเป็นป่าหรือไม่คือการลบใบไม้ (องศาหนึ่งจุดยอด) และแยกจุดจนกว่าคุณจะได้กราฟที่ว่างเปล่า (เป็นป่า) หรือแกนกลางแบบ 2 แกน (กราฟย่อยที่ทุกจุดมีองศา≥ 2, ซึ่งจำเป็นต้องมีรอบ) อัลกอริธึมกราฟผสมจะลดลงถึงสิ่งนี้ในกรณีที่ไม่ได้บอกทิศทาง (ยกเว้นว่ามันจะออกจากใบไม้แทนที่จะลบออกในทันที) เช่นเดียวกับที่มันเสื่อมโทรมเป็นอัลกอริธึมการเรียงลำดับทอพอโลยีมาตรฐานในกรณีกำกับ
David Eppstein

ไม่แน่ใจว่าถ้าคุณได้เห็น: มีโพสต์บน cs.stackexchange ที่ถามคำถามที่คล้ายกันโทษ ผู้ตอบให้อัลกอริธึมในการค้นหาวัฏจักรในกราฟผสมโดยปรับทิศทางขอบที่ไม่ได้บอกทิศทางโดยปฏิเสธกราฟถ้ามันไม่มีอยู่ นอกจากนี้ยังมีกระดาษในการพิจารณาว่ากราฟผสมเป็นการอ้างอิงที่สามารถปรับทิศทางได้อย่างประหลาด แต่ไม่พบสิ่งใดในการค้นหาส่วนประกอบที่เชื่อมต่อในกราฟผสม
Liu Quanquan

ขอบคุณ - ไม่ฉันไม่เห็น คำถาม "ค้นหาการปฐมนิเทศเพื่อทำให้กราฟมีวัฏจักรที่กำกับ" เป็นคำถามเดียวกันและอัลกอริทึมในคำตอบนั้นถูกต้อง แต่แตกต่างจากที่ฉันอธิบายมันไม่ใช่เวลาเชิงเส้น
David Eppstein

คำตอบ:


1

การค้นหารอบผสมในกราฟผสมนั้นเทียบเท่ากับการค้นหารอบชี้นำเบื้องต้น (ความยาว> = 3) ในกราฟกำกับที่สอดคล้องกัน กราฟกำกับที่สอดคล้องกันนั้นได้มาจากกราฟผสมโดยแทนที่แต่ละขอบที่ไม่ได้ทิศทางด้วยสองขอบชี้นำที่ชี้ไปในทิศทางตรงกันข้าม พิสูจน์: (1) แต่ละรอบการชี้นำเบื้องต้น (ความยาว> = 3) ใน digraph ตรงกับรอบการผสมในกราฟผสม (2) แต่ละรอบผสมในกราฟผสมมีวงจรผสมระดับประถมศึกษาที่มีความยาว> = 3 และแต่ละรอบดังกล่าวสอดคล้องกับวงจรกำกับโดยตรง (ยาว> = 3) ในกราฟกำกับ (1) และ (2) ร่วมกันพิสูจน์ได้ทั้งสองทิศทางของคำสั่ง, QED. ดังนั้นเรากำลังมองหาวิธีอ้างอิงในการคำนวณ (ทั้งหมด?) รอบประถม (ความยาว> = 3) ในกราฟกำกับ

ความคิดเห็นที่ระบุว่า cs.stackexchange มีบาง คำตอบสำหรับคำถามนี้ แต่มันก็ไม่มีความชัดเจนว่าจะจัดระเบียบผลลัพธ์ที่เป็นคำตอบที่รัดกุม โพสต์บล็อกนี้น่าจะสรุปการอ้างอิงที่สำคัญ (มากที่สุด) อย่างดี:

อัลกอริทึมโดย R. Tarjan

อัลกอริทึมที่เก่าที่สุดที่ฉันรวมถูกเผยแพร่โดย R. Tarjan ในปี 1973

Enumeration of the elementary circuits of a directed graph
R. Tarjan, SIAM Journal on Computing, 2 (1973), pp. 211-216
http://dx.doi.org/10.1137/0202017

อัลกอริทึมโดย DB Johnson

อัลกอริทึมโดย DB Johnson จาก 1975 ปรับปรุงบนอัลกอริทึมของ Tarjan ด้วยความซับซ้อน

Finding all the elementary circuits of a directed graph.
D. B. Johnson, SIAM Journal on Computing 4, no. 1, 77-84, 1975.
http://dx.doi.org/10.1137/0204007

ในกรณีที่เลวร้ายที่สุดอัลกอริทึมของ Tarjan มีความซับซ้อนของเวลา O (n⋅e (c + 1)) ในขณะที่อัลกอริทึมของ Johnson ควรจะอยู่ใน O ((n + e) ​​(c + 1)) โดยที่ n คือจำนวน จุดยอด e คือจำนวนขอบและ c คือจำนวนรอบในกราฟ

อัลกอริทึมโดย KA Hawick และ HA James

อัลกอริทึมโดย KA Hawick และ HA James จากปี 2008 ปรับปรุงเพิ่มเติมเกี่ยวกับอัลกอริทึมของ Johnson และทำไปด้วยข้อ จำกัด

Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs.
Hawick and H.A. James, In Proceedings of FCS. 2008, 14-20
www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf
http://complexity.massey.ac.nz/cstn/013/cstn-013.pdf

ตรงกันข้ามกับอัลกอริทึมของจอห์นสันอัลกอรึทึมของ KA Hawick และ HA James สามารถจัดการกราฟที่มีขอบที่เริ่มต้นและสิ้นสุดที่จุดยอดเดียวกันและหลายขอบที่เชื่อมต่อจุดยอดสองจุดเดียวกัน

การทดสอบวงจรนั้นดูเหมือนจะง่าย: คำนวณส่วนประกอบที่เชื่อมต่ออย่างยิ่งของกราฟ รอบใด ๆ (ระดับประถมศึกษา) จะมีอยู่อย่างสมบูรณ์ในองค์ประกอบที่เชื่อมต่ออย่างยิ่ง องค์ประกอบที่เชื่อมต่ออย่างยิ่งประกอบด้วยรอบประถมถ้ามันไม่ได้เป็นต้นไม้ที่ไม่ได้อ้อม

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


มีการอ้างอิงใด ๆ ที่กล่าวถึงกราฟผสม? ฉันรู้เกี่ยวกับการค้นหารอบในกราฟกำกับ คำถามของฉันเกี่ยวกับการขยายอัลกอริทึมเหล่านั้นไปยังกราฟผสม
David Eppstein

@DavidEppstein การค้นหาวงจรผสมในกราฟแบบผสมนั้นเทียบเท่ากับการค้นหาวัฏจักรพื้นฐาน (ความยาว> = 3) ในกราฟกำกับที่สอดคล้องกัน การค้นหาข้อมูลอ้างอิงสำหรับข้อความนั้นอาจท้าทาย แต่การพิสูจน์ข้อความนี้นั้นตรงไปตรงมา ตอนนี้ฉันเพิ่มคำสั่งและหลักฐานเพื่อคำตอบ (เพิ่มข้อสังเกตโดยไม่มีข้อพิสูจน์ว่าการคำนวณทรีคัทบล็อกอนุญาตให้ลบจุดสุดยอดที่เป็นไปได้ทั้งหมดที่สามารถลบได้โดยไม่ส่งผลกระทบต่อวัฏจักรประถม)
โทมัสคลิมเพล

ตกลง แต่พวกเขายังไม่เชิงเส้นเวลา
David Eppstein

@DavidEppstein การทดสอบความคล่องแคล่วนั้นเสร็จสิ้นในเวลาเชิงเส้น แต่คุณถูกต้องเวลาที่อัลกอริธึมเหล่านั้นต้องการค้นหาวงจรแรก (ความยาว> = 3) ไม่ใช่เชิงเส้น (ในกรณีที่แย่ที่สุด) แย่กว่านั้นการใช้อัลกอริทึมของ Johnson ที่มีอยู่ส่วนใหญ่ดูเหมือนจะใช้เวลามากกว่า O ((n + e) ​​(c + 1)) เมื่อนำไปใช้กับวงกลมกำกับเดียว (โดยมีจุดยอด n, e = n ขอบและ c = 1 เบื้องต้น รอบ) ถึงกระนั้นนี่ก็ตั้งใจที่จะเป็นคำตอบที่ถูกต้องเพราะกระดาษของจอห์นสันเป็นเอกสารอ้างอิงที่อ้างถึงมากที่สุดสำหรับ "การค้นพบวงจรเบื้องต้น"
Thomas Klimpel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.