ฉันไม่ทราบวิธีแก้ปัญหานี้ในเวลาแต่อัลกอริทึม O ( n 2 ) O ( n 2บันทึกn )O(n2)O(n2logn)
Let เป็นวงกลมที่มีศูนย์s ฉันที่ฉันจุด -th มีรัศมีR ไม่ยากที่จะหาว่าชุดจุดP = { p 0 , p 1 , … , p m }สามารถล้อมรอบด้วยวงกลมที่มีรัศมีr iff จุดตัดI ( P )ของC ( p 0 ) , C ( p 1) ) , ...C(si)siirP={p0,p1,…,pm}rI(P)ไม่ว่างเปล่า ยิ่งกว่านั้นถ้า I ( P )ไม่ว่างต้องมีบางจุดใน I ( P )วางบน bd C ( p i ) (ขอบเขตของ C ( p i ) ) ดังนั้นสำหรับแต่ละ C ( s ฉัน )และแต่ละจุด Pบน bondary ของเราพยายามที่จะหาวิธีการหลายวงการประกอบด้วยพี จำนวนสูงสุดของ pทั้งหมดจะเป็นคำตอบสำหรับปัญหานี้C(p0),C(p1),…,C(pm)I(P)I(P)bd C( หน้าผม)ค( หน้าผม)ค( sผม)พีพีพี
ขอตรวจสอบคะแนนใน ) มีการทำแผนที่หนึ่งต่อหนึ่งระหว่างจุดบนเป็นBD C ( s ฉัน )และจำนวนจริงใน[ 0 , 2 π ) สำหรับแต่ละวงกลมC ( s J )สี่แยกระหว่างC ( s J )และBD C ( s ฉัน )สามารถแสดงโดยช่วง[ ขอีกรัมฉันn Jbd C( sผม)bd C( sผม)[ 0 , 2 π)ค( sJ)ค( sJ)bd C( sผม) ] ดังนั้นสำหรับวงกลมทั้งหมดที่ไม่ใช่ C ( s i )มีช่วงไม่เกิน n - 1 (วงกลมบางวงอาจไม่ตัดกับ C ( s i ) ) จำนวนสูงสุดสามารถพบได้ง่ายโดยการเรียงลำดับจุดสิ้นสุดของช่วงเวลา 2 ( n - 1 )ทั้งหมดสแกนตามลำดับและนับจำนวนที่ทับซ้อนกันในปัจจุบัน สำหรับแต่ละ C ( s ฉัน )ขั้นตอนนี้สามารถทำได้ใน O ( n log n[ b e gฉันnJ, e n dJ]ค( sผม)n - 1ค( sผม)2 ( n - 1 )ค( sผม)เวลาและมี nวงการดังกล่าวจึงซับซ้อนเวลาของขั้นตอนวิธีนี้คือ O ( n 2บันทึกn )O ( n บันทึกn )nO ( n2เข้าสู่ระบบn )