อัลกอริธึม Max-Cut ที่ใช้ไม่ได้ไม่ชัดเจนว่าทำไม


21

ตกลงนี่อาจดูเหมือนคำถามการบ้านและในแง่หนึ่งก็คือ ในฐานะที่เป็นงานบ้านในชั้นเรียนระดับปริญญาตรีฉันได้เรียนคลาสสิกต่อไปนี้:

รับกราฟที่ไม่ได้บอกทิศทางG=(V,E)ให้อัลกอริทึมที่พบการตัด(S,S¯)เช่นนั้นδ(S,S¯)|E|/2 , ที่δ(S,S¯)คือจำนวนของขอบที่ตัด ความซับซ้อนจะต้องเป็นO(V+E) )

ด้วยเหตุผลบางอย่างฉันได้โซลูชันต่อไปนี้มากมาย ตอนนี้มันใช้เวลามากเกินไปดังนั้นมันไม่ใช่เรื่องของการให้คะแนน แต่ฉันอยากรู้ มันไม่ "ดูเหมือน" ถูกต้อง แต่ความพยายามทั้งหมดของฉันในการโต้แย้งกลับล้มเหลว นี่มันคือ:

  1. ชุดS
  2. ให้vเป็นจุดยอดสูงสุดในกราฟ
  3. เพิ่มvไปยังS
  4. ลบขอบทั้งหมดที่อยู่ติดกับv
  5. ถ้าδ(S,S¯)<|E|/2กลับไปที่ 2

โปรดทราบว่าEในขั้นตอนที่ 5 หมายถึงกราฟต้นฉบับ โปรดทราบด้วยว่าหากเราข้ามขั้นตอนที่ 4 สิ่งนี้จะผิดอย่างชัดเจน (เช่นการรวมกันของรูปสามเหลี่ยมที่มีขอบแยกสองอัน)

ตอนนี้หลักฐานที่เรียบง่ายท่านใดที่มีปัญหาดังต่อไปนี้ - มันอาจจะมีว่าเมื่อเราเพิ่มยอดใหม่vเราจริงลบ|S|ขอบจากการตัดในขณะที่เพิ่มd(v)ขอบใหม่ (โดยที่d(v)หมายถึงกราฟที่มีการลบขอบ) ประเด็นก็คือว่าถ้าสิ่งนี้เป็นอันตรายต่อสาเหตุของเราก็หมายความว่าจุดสุดยอดนี้v "เคย" มีระดับสูงกว่าเคยดังนั้นมันควรจะ "เลือก" ก่อนหน้านี้

นี่เป็นอัลกอริทึมที่รู้จักกันดีหรือไม่? มีตัวอย่างตัวอย่างง่ายๆสำหรับมันหรือไม่?


2
มันดูคล้ายกับการประมาณ 2 แบบสำหรับการครอบจุดสุดยอด อัลกอริทึมโลภที่ถูกต้องผมคิดว่าจะเลือกจุดสุดยอดกับประเทศเพื่อนบ้านมากขึ้นในส่วนที่มันคือการที่ในส่วนอื่น ๆ และย้ายมันจนไม่มีจุดสุดยอดดังกล่าวและมันไม่ได้เป็นเรื่องยากที่จะแสดงให้เห็นว่าที่จุดนั้นคำตอบคืออย่างน้อย 2 แต่ความถูกต้องของอัลกอริทึมนั้นขึ้นอยู่กับความจริงที่ว่า: เรากำลังดูความแตกต่างระหว่างจำนวนเพื่อนบ้านสำหรับจุดยอดในสองด้านของการตัดไม่ใช่แค่ระดับสูงสุด นอกจากนี้ยังถูกต้องจุดย้ายอัลกอริทึมในทิศทางทั้งสองไม่เพียง แต่จากˉ Sเพื่อS |E|/2S¯S
Kaveh

3
@Kaveh ฉันคิดว่า OP รู้ขั้นตอนวิธีที่คุณอธิบาย (เขามอบหมายให้ทำการบ้าน) คำถามของเขาคือว่าอัลกอริทึมที่เขาอธิบายประสบความสำเร็จหรือไม่
Sasho Nikolov

2
@ MohammadAl-Turkistany เห็นความคิดเห็นของ Nikolov
vb le

1
นอกจากนี้โปรดทราบว่าการประมาณ 16/17 นั้นเป็น NP-hard ไม่ใช่ 1/2 GW ให้ประมาณ 0.878 โดยใช้ SDP ในเอกสารน้ำเชื้อ
Yonatan

1

คำตอบ:


13

การอ้างสิทธิ์ก่อนหน้าของฉันสำหรับไม่ได้คำนึงถึงการตัดขนาดn2/4อยู่แล้วในกราฟ โครงสร้างต่อไปนี้ดูเหมือนว่าจะส่งผล (emperically - ฉันได้สร้างคำถามที่ math.stackexchange.com เพื่อพิสูจน์อย่างเข้มงวด) ในO(12c+6n2/4เศษส่วนO(1logc)

อัลกอริทึมทำงานได้ไม่ดีกับสหภาพของกราฟที่สมบูรณ์ที่มีขนาดแตกต่างกันหลายเส้น เราแสดงให้เห็นถึงรูปแบบของกราฟที่สมบูรณ์แบบบนจุดเป็นK n พิจารณาพฤติกรรมของอัลกอริทึมบนK n : มันเพิ่มจุดสุดยอดที่ไม่ได้อยู่ในSถึงSซ้ำ ๆ- จุดยอดทั้งหมดนั้นเหมือนกันและลำดับนั้นไม่สำคัญ การตั้งค่าจำนวนจุดยอดที่ยังไม่ได้เพิ่มลงในSโดยอัลกอริทึม| ˉ S | = kขนาดของการตัดในขณะนั้นคือk ( n - k )nKnKnSSS|S¯|=kk(nk)

พิจารณาว่าเกิดอะไรขึ้นถ้าเราเรียกใช้อัลกอริทึมบนกราฟที่ตัดการเชื่อมต่อของมีค่าคงที่ระหว่างx iระหว่าง 0 และ 1 ถ้าk iคือจำนวนองค์ประกอบที่ยังไม่อยู่ในSในกราฟที่สมบูรณ์ของiจุดสุดยอดถึงSจากกราฟที่สมบูรณ์ด้วยค่าสูงสุดk i , ทำลายความสัมพันธ์โดยพลการ สิ่งนี้จะชักนำการเพิ่มจุดยอดตามรอบไปยังS : อัลกอริธึมจะเพิ่มจุดยอดจากกราฟทั้งหมดที่มีค่าสูงสุดk = k iจากนั้นจากกราฟทั้งหมดที่มีkKxinxikiSiSkiSk=ki (พร้อม k i ที่อัปเดตหลังจากรอบก่อนหน้า) และอื่น ๆ เมื่อกราฟที่สมบูรณ์มีจุดสุดยอดเพิ่มไปยัง Sในรอบมันจะทำเช่นนั้นสำหรับทุกรอบจากนั้นเป็นต้นไปki=k1kiS

ให้เป็นจำนวนกราฟที่สมบูรณ์ ให้0 < x i1กับ0 i c - 1เป็นตัวดัดแปลงขนาดสำหรับกราฟi- th ที่สมบูรณ์ เราสั่งปรับเปลี่ยนขนาดเหล่านี้จากใหญ่ไปเล็กชุดx 0 = 1 ขณะนี้เรามีว่าถ้ามี'กราฟตรงกับkองค์ประกอบยังไม่ได้เพิ่มให้กับSแล้วขนาดของการตัดในเวลานั้นคือΣ ' - 1 ฉัน= 0 k (c0<xi10ic1ix0=1ckS 2 จำนวนขอบทั้งหมดคือ | E | = c - 1 i = 0 x i n ( x i n - 1 )i=0c1k(xink)=kni=0c1(xi)ck2ฉัน|E|=i=0c1xin(xin1)2n22i=0c1xi2

โปรดทราบว่าเป็นฟังก์ชันกำลังสองในkและดังนั้นจึงมีค่าสูงสุด ดังนั้นเราจะมีการตัดสูงสุดในท้องถิ่นหลายครั้ง ตัวอย่างเช่นถ้าc = 1 การตัดสูงสุดของเราอยู่ที่k = nkni=0c1xick2kc=1ของขนาดn2k=n2 . เรากำลังจะไปรับx1เพื่อให้x1=1/2-εซึ่งหมายความว่ารูปแบบของกราฟสมบูรณ์ที่สองจะไม่เปลี่ยนขนาดของการตัดสูงสุดในประเทศนี้ที่k=nn24x1x1=1/2ε . จากนั้นเราจะได้รับการตัดสูงสุดในประเทศใหม่ที่k=3/8n-ε'และเพื่อให้เราเลือกx2=3/8n-ε"(กับε,ε',ε"คงที่ขนาดเล็ก) เราจะไม่สนใจεสำหรับขณะนี้และเพียงสมมติเราสามารถเลือกx1=1/2- เราควรให้แน่ใจx1n=nk=n2k=3/8nεx2=3/8nεε,ε,εεx1=1/2แต่สิ่งนี้จะไม่ส่งผลต่อผลลัพธ์สุดท้ายหากnมีขนาดใหญ่พอx1n=n21n

เราต้องการค้นหาจำนวนสูงสุดของการตัดของเรา ความแตกต่างของเราเพื่อkยอมn Σ ' - 1 ฉัน= 0 ( x ฉัน ) - 2 ' k เท่ากับ0จะให้k = nkni=0c1(xi)ck2kni=0c1(xi)2ck0ซึ่งให้การตัดขนาดn2k=n2ci=0c1xi2n24c(i=0c1xi)2

อนุญาตเป็นkกำหนดในวรรคก่อนถ้า' =ฉัน เราจะให้แน่ใจว่าสูตรถือโดยเรียกร้องให้x ฉัน n < k ฉัน - ทั้งหมดกราฟบริบูรณ์ฉัน'กับฉัน' > ฉันแล้วมีขนาดเล็กกว่าk ฉันของการตัดสูงสุดในประเทศนี้และด้วยเหตุนี้ไม่เพิ่มขนาดของการตัด ซึ่งหมายความว่าเรามีตัดที่เหล่าk ฉันที่มีขนาดใหญ่กว่าการตัดอื่น ๆ ทั้งหมดที่พบโดยอัลกอริทึมkikc=ixin<kiii>ikicki

เมื่อเติมเราจะได้ค่าการเกิดซ้ำx i = 1xin<ki(บวกบางขนาดเล็กε) กับx0=1 การแก้ปัญหานี้ให้ผลตอบแทนxi= ( 2 ixi=12ci=0c1xiεx0=1 :ดูคำถามของฉันใน math.stackexchange.comสำหรับการสืบทอดโดย@DanielFisher เสียบสิ่งนี้เข้ากับn2xi=(2ii)4iและการใช้ข้อมูลเชิงลึกของเราในการเกิดซ้ำทำให้เราลดขนาดn2n24c(i=0c1xi)2n24c(2c(2cc)4c)2=n2c((2cc)4c)2limcc((2cc)4c)2=1π

จำนวนขอบมีค่าประมาณ 2 โดยคุณสมบัติที่รู้จักกันเรามีi} ยื่นอย่างน้อยซึ่งเป็น asymptoticallyเมื่อไปที่ ความไม่มีที่สิ้นสุด1n22i=0c1xi2=n22i=0c1((2ii)4i)2 n214i(2ii)4i n2n22i=0c1(14i)2=n28i=0c11icn28logcc

ดังนั้นเราจึงมีเท่ากับ asymptoticallyขณะที่ไปอนันต์แสดงว่าอัลกอริธึมสามารถ ส่งคืนการตัดที่เป็นเศษส่วนต่ำโดยพลการของ.8δ(S,S¯)|E| c| E|8πlogcc|E|


3
ด้วยการปรับเปลี่ยนเล็กน้อย, การก่อสร้างของคุณให้1/4แก้ไขและเลือกที่มีขนาดใหญ่พอNLet\} เชื่อมต่อทุก ๆ สองจุดในด้วยขอบ; แล้วนอกจากนี้ยังเชื่อมต่อทุกสองจุดใน WP 2 จำนวนรวมของขอบประมาณ 2 อัลกอริทึมค้นหาการตัดที่ตัดประมาณ 2/4 ขอบ (สูงสุดถึงเงื่อนไขการสั่งซื้อลดลงใน ) ε N V = { 1 , ... , N } { 1 , ... , ε N } V ε 21/4εNV={1,,N}{1,,εN}Vε2ε 2 n 2 / 4 ε(εn)2/2+ε2(n2/2)=ε2n2ε2n2/4ε
Yury

ฉันคิดว่าฉันจะเขียนคำตอบของฉันใหม่เพื่อรวมผลลัพธ์สุดท้าย (พร้อมรายละเอียดเพิ่มเติม) ในไม่ช้าเนื่องจากมันยุ่งเหยิงในตอนนี้
Alex สิบ Brink

1
เกี่ยวกับการรวมเนื่องจากแต่ละเทอมคือผลรวมคืออนุกรมฮาร์มอนิกซึ่งรวมกับและโดยรวมเราจะได้ . Θ(1/(i+1))Θ(บันทึกc)Θ(n2บันทึกc)n22i=0c1((2ii)4i)2Θ(1/(i+1))Θ(logc)Θ(n2logc)
Yuval Filmus

12

หลังจากคิดและถามไปสักพักนี่เป็นตัวอย่างการตอบโต้ของAmi Paz :

ให้เป็นคู่และเป็นกราฟซึ่งเป็นสหภาพของโดยมีการจับคู่ของจุดยอด (นั่นคือการจับคู่กับขอบ )G K n n + 2 n / 2 + 1nGKnn+2n/2+1

อัลกอริทึมทำงานบนกราฟนี้อย่างไร มันใช้เวลาเพียงจุดยอดจากส่วนก๊กตามลำดับโดยพลการ หลังจากที่มีการถ่ายจุดจากก๊กตัดเป็นขนาด(NK) นี่คือสูงสุดสำหรับซึ่งจะช่วยให้การตัดขนาดในขณะที่จำนวนของขอบในกราฟเป็น\k ( n - k ) k = n / 2 n 2kk(nk)k=n/2 n2n24n22+1

อัลกอริทึมตามที่กำหนดจะยังคงเพิ่มจุดยอดจากกลุ่มลดจำนวนของขอบข้ามตัดจนกว่าสิ่งที่เหลือจากกลุ่มเป็นเพียงขอบเดียว ณ จุดนี้มันไม่สามารถได้รับสิ่งที่ดีกว่า\n2+2


1
ตัวอย่างที่ดี
Kaveh

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