คำนวณ max-flow จาก min-cut


16

เรารู้ว่าการคำนวณการตอบสนองต่อการไหลสูงสุด การตัดเครือข่ายขั้นต่ำที่มีความสามารถเทียบเท่ากัน cf เลย สูงสุดไหลทฤษฎีบทนาทีตัด

เรามีอัลกอริทึม (มีประสิทธิภาพมากกว่าหรือน้อยกว่า) สำหรับการคำนวณการไหลสูงสุดและการคำนวณการตัดต่ำสุดเนื่องจากการไหลสูงสุดนั้นไม่ยากหรือไม่แพงเลย

แต่สิ่งที่ตรงกันข้าม เมื่อตัดน้อยที่สุดเราจะกำหนดกระแสสูงสุดได้อย่างไร โดยไม่ต้องแก้ไข Max-Flow ตั้งแต่เริ่มต้นแน่นอนและเร็วกว่านั้นเช่นกัน

ความคิดบางอย่าง:

  • จากการตัดขั้นต่ำเรารู้ค่าการไหลสูงสุด ฉันไม่เห็นว่าข้อมูลนี้ช่วยให้วิธีการมาตรฐานเพิ่มเส้นทางและ push-relabel ได้อย่างไรแม้ว่าการปรับตัวหลังดูเหมือนจะมีเหตุผลมากขึ้นเล็กน้อย

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

  • การทราบคุณค่าของความเร็วการไหลสูงสุดที่แก้ไข Max-Flow LP อาจจะผ่านเงื่อนไขความหย่อนเสริมหรือไม่?


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

3
เราทำอย่างแน่นอนอัลกอริทึมแบบสุ่มของ Karger นั้นเป็นที่นิยมอย่างมากและคุณต้องการความรู้เกี่ยวกับ max-flow สำหรับสิ่งนั้น
Juho

2
หากคุณไม่ต้องการอัลกอริธึมแบบสุ่มอัลกอริธึม Stoer-Wagner เป็นวิธีที่ง่ายมากและไม่มีเทคนิคการไหล
Juho

2
สิ่งที่ดี! มีความท้าทายอื่นที่นี่ รอบรู้เรื่องการตัดต่ำสุดเพียงบิตข้อมูล (มากที่สุด) เนื่องจากทุกตัด isomorphic ย่อยของV อย่างไรก็ตามการไหลสูงสุดอาจต้องมากกว่า| V | บิตของข้อมูลที่จะแสดง (โดยเฉพาะถ้าความสามารถมีขนาดใหญ่) ดังนั้นข้อมูลเชิงทฤษฎีคุณไม่สามารถหวังได้สำหรับอัลกอริทึมที่ดูเฉพาะการตัดและแยกการไหล มันก็ต้องดูกราฟด้วยและทำการคำนวณเพิ่มเติม (ฉันรู้นี้ไม่มากของอุปสรรค.)|V|V|V|
DW

คำตอบ:


6

ในกรณีที่เลวร้ายที่สุดตัวตัดต่ำสุดนั้นไม่ได้ถ่ายทอดข้อมูลมากมายเกี่ยวกับการไหลสูงสุด พิจารณากราฟที่ต่ำสุดs , เสื้อ -cut มีค่าW ถ้าฉันขยายGโดยการเพิ่มจุดสุดยอดs และขอบ( s , s ) ที่มีน้ำหนักw , อย่างน้อยs , t -cut ในกราฟใหม่ประกอบด้วยเพียงขอบ( s , s )G=(V,E)s,เสื้อWGs'(s',s)Ws',เสื้อ(s',s)แต่ไม่ได้ให้ข้อมูลใด ๆ เกี่ยวกับวิธีการที่จะได้รับหน่วยของการไหลจากsไปทีWsเสื้อ

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


แต่ปัจจัยลอการิทึมนั้นจะขึ้นอยู่กับขนาดของช่วงเวลาของค่าการไหลที่อาจเกิดขึ้นซึ่งเทียบได้กับขอบเขตบนที่มีอยู่ในการแก้ปัญหาการไหลสูงสุดซึ่งขึ้นอยู่กับขนาดกราฟเท่านั้น ที่กล่าวว่าแม้การเร่งความเร็วแบบลอการิทึมจะเป็นที่สนใจ ฉันไม่เชื่อว่าการรู้คุณค่าของ max-flow นั้นไม่ได้ช่วยอะไรเลย
กราฟิลส์

-2

มีอัลกอริธึมที่แน่นอนที่ให้คุณคำนวณการตัดขั้นต่ำก่อนคำนวณ maxflow อัลกอริธึมสองอย่างนี้คือ push relabel และอัลกอริธึม pseudoflow ซึ่งสัมพันธ์กันอย่างใกล้ชิด หลังมีประสิทธิภาพมากขึ้น อัลกอริธึมทั้งสองนี้ใช้คุณสมบัติพิเศษของกราฟที่เหลือซึ่งปรับปรุงซ้ำ ๆ เพื่อรับ maxflow จากการตัดขั้นต่ำ สำหรับรายละเอียดฉันขอแนะนำให้อ่านรหัสและเอกสาร

ในการอธิบายรายละเอียดเกี่ยวกับเคสแบบกด relabel เมื่ออัลกอริธึมไม่สามารถผลักดันการไหลไปยังอ่างล้างจานได้อีกต่อไป อัลกอริทึมส่วนนี้เรียกว่าเฟส 1 เนื่องจากไม่มีชื่อที่ดีกว่า ขั้นตอนที่ 2 เป็นขั้นตอนที่มีประสิทธิภาพมากขึ้นซึ่งจะแปลง min cut ให้เป็น maxflow โดยการยกเลิกรอบในกราฟที่เหลือซ้ำ ๆ โดยใช้การค้นหาลึกครั้งแรกและผลักส่วนเกินกลับไปยังแหล่งที่มา ฉันเชื่อว่าขั้นตอนที่ 2 สามารถพิสูจน์ได้ว่ามีประสิทธิภาพมากกว่าแบบที่ไม่มีอาการ


4
โปรดอ่านคำถามอีกครั้ง ไม่ใช่คนที่คุณตอบ
ราฟาเอล

ตัวอย่างของการประชาสัมพันธ์ที่ฉันสมมติว่าคุณได้คำนวณข้อมูลอื่น ๆ ไปพร้อมกันในขณะที่คุณคำนวณการตัดขั้นต่ำ คำถามเดิมของคุณไม่ได้ระบุว่าคุณได้รับอนุญาตให้รักษาข้อมูลอื่น ๆ พร้อมกับการตัดนาทีเพื่อให้การคำนวณ maxflow ที่ตามมาง่ายขึ้นหรือไม่ มันค่อนข้างยุติธรรมหรือไม่ที่จะระบุคำถามเดิมของคุณว่า "ได้รับการตัดขั้นต่ำและไม่มีข้อมูลอื่น ๆเราจะกำหนดกระแสสูงสุดได้อย่างไร"
ldog

2
ฉันระบุว่า "ให้ A คำนวณ B" ข้อสันนิษฐานที่สมเหตุสมผลเพียงอย่างเดียวคือคุณได้รับเพียง A มิฉะนั้นการพูดถึงปัญหาการคำนวณจะเป็นเรื่องที่คลุมเครือมาก
กราฟิลส์

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