อัลกอริธึม 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(1log⁡c)

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

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

ให้เป็นจำนวนกราฟที่สมบูรณ์ ให้0 < x i ≤ 1กับ0 ≤ i ≤ c - 1เป็นตัวดัดแปลงขนาดสำหรับกราฟi- th ที่สมบูรณ์ เราสั่งปรับเปลี่ยนขนาดเหล่านี้จากใหญ่ไปเล็กชุดx 0 = 1 ขณะนี้เรามีว่าถ้ามีค'กราฟตรงกับkองค์ประกอบยังไม่ได้เพิ่มให้กับSแล้วขนาดของการตัดในเวลานั้นคือΣ ค' - 1 ฉัน= 0 k (c0<xi≤10≤i≤c−1ix0=1c′kS 2 จำนวนขอบทั้งหมดคือ | E | = ∑ c - 1 i = 0 x i n ( x i n - 1 )∑i=0c′−1k(xin−k)=kn∑i=0c′−1(xi)−c′k2ฉัน|E|=∑i=0c−1xin(xin−1)2≈n22∑i=0c−1xi2

โปรดทราบว่าเป็นฟังก์ชันกำลังสองในkและดังนั้นจึงมีค่าสูงสุด ดังนั้นเราจะมีการตัดสูงสุดในท้องถิ่นหลายครั้ง ตัวอย่างเช่นถ้าc = 1 การตัดสูงสุดของเราอยู่ที่k = nkn∑i=0c′−1xi−c′k2kc=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=n2−1n

เราต้องการค้นหาจำนวนสูงสุดของการตัดของเรา ความแตกต่างของเราเพื่อkยอมn Σ ค' - 1 ฉัน= 0 ( x ฉัน ) - 2 ค' k เท่ากับ0จะให้k = nkn∑i=0c′−1(xi)−c′k2kn∑i=0c′−1(xi)−2c′k0ซึ่งให้การตัดขนาดn2k=n2c′∑i=0c′−1xi2n24c′(∑i=0c′−1xi)2

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

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

จำนวนขอบมีค่าประมาณ 2 โดยคุณสมบัติที่รู้จักกันเรามีi} ยื่นอย่างน้อยซึ่งเป็น asymptoticallyเมื่อไปที่ ความไม่มีที่สิ้นสุด1n22∑i=0c−1xi2=n22∑i=0c−1((2ii)4i)2 n214i≤(2ii)4i n2n22∑i=0c−1(14i)2=n28∑i=0c−11icn28log⁡cc

ดังนั้นเราจึงมีเท่ากับ asymptoticallyขณะที่ไปอนันต์แสดงว่าอัลกอริธึมสามารถ ส่งคืนการตัดที่เป็นเศษส่วนต่ำโดยพลการของ.8δ(S,S¯)|E| c| E|8πlog⁡cc|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)n22∑i=0c−1((2ii)4i)2Θ(1/(i+1))Θ(log⁡c)Θ(n2log⁡c)
— 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⋅(n−k)k=n/2 n2n24n22+1

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


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

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