ชุดอิสระสูงสุดของกราฟแบบสองทาง


19

ฉันพยายามหากราฟอิสระชุดสูงสุดของ Biparite

ฉันพบสิ่งต่อไปนี้ในบางบันทึกย่อ"13 พฤษภาคม 1998 - มหาวิทยาลัยวอชิงตัน - CSE 521 - การประยุกต์ใช้งานของเครือข่ายไหล" :

ปัญหา:

ได้รับการฝ่ายกราฟG=(U,V,E)หาชุดอิสระUVซึ่งเป็นขนาดใหญ่ที่สุดเท่าที่เป็นไปได้ที่UUและVV V ชุดเป็นอิสระหากไม่มีขอบของEระหว่างองค์ประกอบของชุด

วิธีการแก้:

สร้างกราฟการไหลในจุดUV{s,t} } สำหรับแต่ละขอบ(u,v)Eมีขอบจุอนันต์จากuจะ วีvสำหรับแต่ละuUมีขอบหน่วยความจุจากsไปuและสำหรับแต่ละvVมีขอบหน่วยความจุจากvไป ทีt

ค้นหาความจุตัด จำกัด(S,T)กับsSและtT T Let U=USและV=VT T ชุดUVเป็นอิสระเนื่องจากไม่มีขอบความจุไม่ จำกัด ตัดข้าม ขนาดของการตัดคือ|UU|+|VV|=|U|+|V||UV|. เพื่อให้ชุดอิสระมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้เราจะทำการตัดให้มีขนาดเล็กที่สุดเท่าที่จะทำได้

ดังนั้นลองใช้อันนี้เป็นกราฟ:

A - B - C
    |
D - E - F

เราสามารถแยกสิ่งนี้เป็นกราฟสองส่วนดังนี้ (U,V)=({A,C,E},{B,D,F})

เราสามารถมองเห็นได้จากการค้นหาแรงเดรัจฉานว่า แต่เพียงผู้เดียวสูงสุดชุดอิสระ, C , D , F ให้ลองใช้วิธีแก้ปัญหาด้านบน:A,C,D,F

ดังนั้นเมทริกซ์ adjacency matrix ของโฟลว์ที่สร้างขึ้นจะเป็น:

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

นี่คือที่ที่ฉันติดอยู่ความสามารถ จำกัด ที่เล็กที่สุดที่ฉันเห็นคือสิ่งเล็กน้อย: (S,T)=({s},{t,A,B,C,D,E,F})ด้วยความสามารถของ 3

การใช้การตัดนี้นำไปสู่การแก้ไขที่ไม่ถูกต้องของ:

U=US={}
V=VT={B,D,F}
UV={B,D,F}

ในขณะที่เราคาดว่าUV={A,C,D,F} ? ทุกคนสามารถมองเห็นจุดที่ฉันผิดไปในการให้เหตุผล / การทำงานของฉันได้หรือไม่?


(S, T) = ({s, A, B, C}, {t, D, E, F}) มีความจุ 2

1
@Brian มีขีดความสามารถไม่ จำกัด จาก B ถึง E ในการตัดของคุณดังนั้นจึงเป็นกำลังการผลิตที่ไม่มีที่สิ้นสุด
Andrew Tomazos

ถ้าฉันเข้าใจสิ่งนี้อย่างถูกต้องตามวิธีเดรัจฉานแรงคุณต้องตัดที่ S ประกอบด้วย A และ C และ T มี D และ F ซึ่งทำให้การตัดของคุณเป็น {s, A, C}, {t, D, F} . ตอนนี้คุณจะสร้างการตัดได้อย่างไร
njzk2

นอกจากนี้ดูเหมือนว่า Ford-Fulkerson ซึ่งขอบมีความจุหนึ่ง
njzk2

ค้นหาอัลกอริทึมของฮังการี
Patrik Vörös

คำตอบ:


14

ความสมบูรณ์ของชุดอิสระสูงสุดคือการครอบคลุมจุดสุดยอดขั้นต่ำ

เพื่อหาปกขั้นต่ำจุดสุดยอดในฝ่ายกราฟดูทฤษฎีบทของKönig


2
สิ่งนี้ (อาจ) แก้ไขปัญหา แต่ไม่ตอบคำถาม
กราฟิลส์

2
@ ราฟาเอล: ฉันเห็นด้วยถ้าคุณลบคำว่า "อาจจะ" :)
Jukka Suomela

1
โอ้ผมแน่ใจว่ามันแก้ปัญหา แต่ผมไม่แน่ใจว่ามันจะช่วยให้แอนดรูแก้ปัญหาของเขา
Raphael

3
ฉันแก้ไขตามที่คุณแนะนำ: HopcroftKarp -> การจับคู่สูงสุด -> Konigs Thereom -> Cover Vertex ขั้นต่ำ -> Complement -> ชุดอิสระสูงสุด ฉันยังต้องการทราบว่าทำไมวิธีการไหลที่อธิบายไว้ในคำถามของฉันดูเหมือนจะไม่ทำงาน
Andrew Tomazos

5

วิธีแก้ปัญหาที่ระบุนั้นไม่ถูกต้องอย่างชัดเจนเมื่อคุณสาธิตด้วยตัวอย่าง โปรดทราบว่ากราฟ U + V เป็นส่วนประกอบที่เชื่อมต่อโดยขอบความจุไม่ จำกัด ดังนั้นการตัดที่ถูกต้องทุกครั้งจะต้องมีทั้งหมดของ A, B, C, D, E, F ในด้านเดียวกัน

พยายามติดตามย้อนกลับว่าโซลูชันมาจากที่ใด: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf อ้างอิง Network Flows โดย Ahuja, Magnanti และ Orlin สำหรับปัญหาบางอย่าง หนังสือเล่มนี้ไม่มีลิขสิทธิ์และสามารถดาวน์โหลดได้จากhttp://archive.org/details/networkflows00ahujแต่ดูเหมือนจะไม่มีปัญหาและวิธีแก้ไขนี้ (ค้นหา "bipartite" ที่เกิดขึ้นทุกครั้ง)

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

และถึงกระนั้นคุณสามารถเห็นว่าอัลกอริทึมพยายามทำอะไร นี่คือสิ่งที่ชุดอิสระอิสระสูงสุดที่แท้จริงสอดคล้องกับในแง่ของ s, t cut:

กราฟ

ขอบความจุที่ไม่มีที่สิ้นสุดซึ่งแบ่งอัลกอริทึมนั้นจะเน้น

ฉันไม่แน่ใจว่าจะแก้ไขอัลกอริทึมให้ตรงกับที่ตั้งใจไว้ได้อย่างไร บางทีค่าขอบไม่มีที่สิ้นสุดควรเป็นศูนย์ถ้ามันไปทางด้านหลัง (เช่นที่มันไปจาก S ถึง T แต่ตัดจาก t-side ไป s-side)? แต่มันยังง่ายที่จะหา min-cut / max-flow ด้วย nonlinearity นี้หรือไม่? นอกจากนี้การคิดถึงวิธีการเชื่อมจาก @Jukka Suomela ไปยังอัลกอริธึมจากคำถามมีความยากลำบากที่เราจะไปจากการจับคู่สูงสุดไปยังจุดสุดยอดขั้นต่ำ: ในขณะที่การค้นหาการจับคู่สูงสุดสามารถทำได้โดย max-flow อัลกอริธึมที่เหมือนกันคุณจะกู้คืนจุดสุดยอดขั้นต่ำได้อย่างไรโดยใช้อัลกอริทึมแบบโฟลว์ ตามที่อธิบายไว้ที่นี่หลังจากพบการจับคู่สูงสุดขอบระหว่าง U และ V จะกำกับเพื่อค้นหาจุดสุดยอดขั้นต่ำ ดังนั้นอีกครั้งสิ่งนี้ไม่ได้แสดงว่าแอปพลิเคชันแบบง่ายของ min-cut / max-flow นั้นใช้เพื่อแก้ไขปัญหานี้


2

STS


1
ฉันเห็นด้วยกับคุณ แต่คุณช่วยเพิ่มรายละเอียดเพิ่มเติมเช่นหลักฐานการพิสูจน์ความถูกต้องสมบูรณ์ของอัลกอริทึมการไหลและอัลกอริทึมที่ใช้กับตัวอย่างของ OP ได้อย่างไร
xskxzr

บันทึกในนี้จะมีหลักฐานความถูกต้องสั้น ๆ cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf ตัวอย่างเช่นถ้าคุณดูรูปโดย Evgeni Sergeev ด้านบนขอบทั้งหมดควรถูกนำลง จากนั้นมีเพียงสองขอบออกจาก S คือ (s, e) และ (b, t) ขอบสีแดงที่เป็นตัวหนาจะเข้าสู่ S และไม่ควรนับในค่าที่ตัด
yu25x

0

การตัดควรอยู่ที่การไหลที่แท้จริงไม่ใช่กำลังการผลิต เนื่องจากการไหลจาก s เป็นจำนวน จำกัด การตัด {S, T} ใด ๆ จะถูก จำกัด ส่วนที่เหลือเป็นคำอธิบายข้างต้น


1
คุณแน่ใจไหม? การตัดมักจะขึ้นอยู่กับความสามารถและไม่ว่าในกรณีใดเรารู้แล้วว่าการตัดต่ำสุดนั้น จำกัด ดังนั้นการตัดที่ไม่มีที่สิ้นสุดดูเหมือนจะไม่เป็นปัญหา
David Richerby

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