ลบจำนวนจุดยอดต่ำสุดเพื่อตัดการเชื่อมต่อกราฟ


9

พิจารณากราฟที่ไม่มีทิศทางพร้อมแหล่งที่มาและจุดยอดจม เราต้องการลบจำนวนจุดยอดต่ำสุดในกราฟนั้นเพื่อตัดการเชื่อมต่อเส้นทางใด ๆ ระหว่างต้นทางและอ่างล้างจาน

เราสามารถทำได้โดยใช้อัลกอริธึม max-flow, min-cut หรือไม่?


4
มันควรจะทำงานได้ (ฉันถือว่าขอบทั้งหมดมีความจุเท่ากัน)
A.Schulz

คำตอบ:


3

(แต่เดิมคำตอบนี้เป็นส่วนหนึ่งของคำถามโดยมีเป้าหมายที่จะยืนยัน)

ปรีชาญาณของฉันบอกฉันว่าเราสามารถใช้อัลกอริธึมการไหลแบบ min-cut สูงสุดเพื่อแก้ปัญหานี้

  1. แทนที่ขอบที่ไม่ได้ชี้แต่ละเส้นด้วยคู่ของขอบกำกับ
  2. แทนที่แต่ละจุดสุดยอด v มีสองจุดยอด vin และ voutเชื่อมต่อด้วยขอบ ขอบทั้งหมดที่เข้ามาของv จะเชื่อมต่อกับ vinขอบขาออกทั้งหมดของ v จะเชื่อมต่อกับ vout.
  3. พยายามหารอยตัดต่ำสุด M. ขอบของM อ้างถึงจุดยอดที่เราต้องการลบ

ยังไม่ชัดเจนสำหรับฉันว่าทำไมสิ่งนี้ถึงรับประกันว่าจะเป็นรถลาก จะเกิดอะไรขึ้นถ้ากราฟตัดต่อที่มีการตัดต่ำสุดนั้นมีบางอันที่ไม่ได้อยู่ระหว่างกันvin และ voutแต่มีขอบกำกับจากขั้นตอนที่ 1 ของการแก้ปัญหาหรือไม่ คุณคิดว่าเหตุใดกราฟขั้นต่ำสุดที่ตัดแต่ละนาทีของต้นฉบับจะอยู่ในรูปแบบหนึ่งต่อหนึ่งโดยมีการตัดขอบของกราฟที่ดัดแปลงแล้ว ฉันคิดว่าจำเป็นต้องมีการพิสูจน์
DW

เพื่อรองรับคำตอบของ FrankW โปรดไปที่ลิงค์ด้านล่างนี้มีกระดาษจาก Abdol – Hossein Esfahanian เพื่อรองรับการเปลี่ยนขอบที่ไม่ได้ใช้งานด้วยสองขอบ - networkx.github.io/documentation/latest/reference/generated/… - cse.msu.edu/~cse835/Papers/Graph_connectivity_revised.pdf
Pawan Puttaswamy

1
@pawanp ฉันไม่ได้ติดตามคุณ แน่นอนคุณสามารถแทนที่ขอบที่ไม่ได้บอกทิศทางด้วยสองขอบที่กำกับ คำถามไม่ได้ว่าคุณสามารถทำได้ แต่ไม่ว่าจะเป็นหลังจากใช้อัลกอริทึมที่ระบุไว้ FrankW ว่าการส่งออกจะรับประกันว่าจะเป็นทางออกที่ถูกต้องกับปัญหาเดิม ฉันไม่เห็นว่าหน้าคนของห้องสมุด NetworkX เกี่ยวข้องกันอย่างไร เกี่ยวกับกระดาษ: ยาว 14 หน้ามี 11 อัลกอริทึมที่แตกต่างกันส่วนใหญ่ไม่มีข้อพิสูจน์ความถูกต้อง คุณจะเจาะจงเจาะจงมากขึ้นเกี่ยวกับส่วนใดที่คุณเห็นว่ามีความเกี่ยวข้องที่นี่
DW
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.