การลดความแปรปรวนของ DAG


13

ฉันกำลังมองหาอัลกอริทึม O (V + E) สำหรับการค้นหาการลดขนาดสกรรมกริยาจาก DAG

นั่นคือการลบขอบมากที่สุดเท่าที่จะเป็นไปได้เพื่อที่ว่าถ้าคุณสามารถเข้าถึง v จาก u, สำหรับ v และ u ตามอำเภอใจคุณยังคงสามารถเข้าถึงได้หลังจากการลบขอบ

หากนี่เป็นปัญหามาตรฐานโปรดบอกฉันถึงวิธีแก้ไขปัญหาแบบบางอย่าง


คุณไม่สามารถใช้การอ้างอิงที่ให้ไว้ใน wikipedia lemma ที่คุณอ้างถึง?
Hendrik Jan

2
อัลกอริทึมที่กล่าวถึงใน Wikipedia ทำงานใน (ในกรณีที่ดีที่สุดคือในกรณีของกราฟ acyclic) แทนที่จะเป็นO ( V + E )ตามที่ร้องขอ ฉันคิดว่าคำตอบที่ถูกต้องที่นี่คืออัลกอริทึมที่คุณกำลังมองหาอาจไม่มีอยู่O(V×E)O(V+E)
Carlos Linares López

1
ตกลงว่ายังไม่ชัดเจนว่าสิ่งที่คุณขอมีอยู่ มีค่อนข้างเอกสารไม่กี่คนที่จะได้รับการจืดถ้ามีขั้นตอนวิธีการดังกล่าวเช่นมีsciencedirect.com/science/article/pii/0012365X9390164O ที่กล่าวว่าหากคุณมีความเฉพาะเจาะจงมากขึ้นเกี่ยวกับแรงจูงใจของคุณสิ่งที่อาจมีวิธีการเฉพาะเจาะจงมากขึ้น ตัวอย่างเช่นคุณรู้อะไรเกี่ยวกับกราฟหรือทำงานอีกหรือไม่ O(n(n+m))
William Macrae

ฉันเห็นปัญหาอยู่ที่ไหนสักแห่ง แต่ไม่มีข้อมูลเพิ่มเติมบางทีพิมพ์ผิดในปัญหา
Karan

1
ถ้าคุณทำโทโพโลยีจัดเรียงใน DAG ของคุณ แต่ติดตามจุดยอดที่เข้าถึงได้โดยใช้เด็กเช่นreachable[v]=vchildrenvreachable[v]แล้วเริ่มต้นจากรายการล่าสุดในกราฟที่เรียงลำดับและลบขอบที่ไม่ได้ใช้และไปถึงโดยการรักษาฟังก์ชั่นที่เข้าถึงได้นี้จะช่วยให้คุณเต็มที่ขอบไปได้ที่จะลบ แต่ผมไม่แน่ใจว่าจะได้รับความเป็นไปได้สูงสุด (มัน .O(|E|+|V|)

คำตอบ:


8

เราสามารถแก้ปัญหานี้ได้เพียงแค่ทำ DFS จากแต่ละจุดสุดยอด

  1. สำหรับแต่ละจุดยอดให้เริ่ม DFS จากแต่ละจุดสุดยอดvเช่นนั้นvคือการสืบทอดโดยตรงของuเช่น ( u , v )เป็นขอบuGvvu(u,v)
  2. สำหรับแต่ละจุดสุดยอดสามารถเข้าถึงได้โดย DFS จากโวลต์เอาขอบ( U , V ' )vv(u,v)

ความซับซ้อนโดยรวมที่กล่าวมาเป็นความซับซ้อนของการทำงาน DFS' ซึ่งเป็นO ( N ( N + M ) )NO(N(N+M))


1
โปรดทราบว่า asymptotically นี้มีความซับซ้อนเช่นเดียวกับอัลกอริทึมในบทความ Wikipedia ที่เชื่อมโยงในคำถามตัวเอง O(NM)
David Richerby

1
ตกลง เนื่องจากคำตอบสั้น ๆ นั้นเป็นเพราะคำถามนี้ฉันจึงเสนอคำตอบหนึ่งข้อ นอกจากนี้โซลูชันคือ IMO ไม่น่าเป็นไปได้ O(N)
pratyaksh

3

O(|E|)

  1. uv
  2. u(v,u)
  3. wuv(v,w)
  4. (v,v)vv

v(v,v)v

O(|E|)


1

เล็มม่า:หากมีขอบ V -> Y และ Y ก็เป็นตัวสืบทอดทางอ้อมของ V เช่น (V -> W -> + Y) ดังนั้นขอบ V -> Y เป็นสกรรมกริยาและไม่ได้เป็นส่วนหนึ่งของรากสกรรมกริยา

วิธีการ:ติดตามการปิดสกรรมกริยาของแต่ละจุดสุดยอดการทำงานจากขั้วไปยังจุดเริ่มต้นในลำดับทอพอโลยีย้อนกลับ เซตของผู้สืบทอดทางอ้อมของ V คือการรวมตัวกันของการปิดสกรรมกริยาของผู้สืบทอดโดยตรงของ V. การปิดสกรรมกริยาของ V คือการรวมกันของผู้สืบทอดทางอ้อมและผู้สืบทอดที่เป็นปัจจุบัน

ขั้นตอนวิธีการ:

    Initialise Visited as the empty set.
    For each vertex V of G, 
        Invoke Visit(V).

    Visit(V):
        If V is not in Visited,
            Add V to Visited, 
            Initialise Indirect as the empty set,
            For each edge V -> W in G,
                Invoke Visit(W),
                Add Closure(W) to Indirect.
            Set Closure(V) to Indirect.
            For each edge V -> W in G,
                Add W to Closure(V),
                If W is in the set Indirect,
                    Delete the edge V -> W from G.

นี่ถือว่าคุณมีวิธีที่มีประสิทธิภาพในการติดตามชุดของจุดยอด (เช่นแผนที่บิต) แต่ฉันคิดว่าสมมติฐานนี้ทำในอัลกอริทึมO (V + E) อื่น ๆด้วย

ผลข้างเคียงที่มีประโยชน์ที่อาจเป็นประโยชน์คือพบว่าการปิด transitive ของแต่ละจุดยอดของ G


ฉันได้ลบคำตอบที่โพสต์ในบัญชีก่อนหน้าของคุณ หากคุณยังคงต้องการที่จะรวมบัญชีทั้งสองของคุณโปรดทำตามขั้นตอนในส่วนของศูนย์ช่วยเหลือ ดังที่กล่าวไว้เนื่องจากบัญชีก่อนหน้านี้ไม่มีเนื้อหาที่มองเห็นได้อีกต่อไปคุณสามารถยึดติดกับบัญชีใหม่ได้
Gilles 'SO- หยุดความชั่วร้าย'

0

ฉันแก้ไขปัญหาเดียวกัน แต่ไม่เหมือนกันทั้งหมดฉันขอค่าต่ำสุดของขอบในกราฟหลังจากลดลงเพื่อให้จุดยอดที่เชื่อมต่อเดิมยังคงเชื่อมต่ออยู่และไม่มีการเชื่อมต่อใหม่ เนื่องจากเป็นที่ชัดเจนว่าไม่ได้บอกว่าจะหากราฟที่ลดลง แต่มีจำนวนขอบที่ซ้ำซ้อนอยู่ ปัญหานี้สามารถแก้ไขได้ใน O (V + E) เชื่อมโยงไปยังคำอธิบายhttps://codeforces.com/blog/entry/56326 แต่ฉันคิดว่าการทำกราฟจริงมันจะมีความซับซ้อนสูงกว่า O (N)

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