Saya tidak tahu bagaimana menyelesaikan masalah ini dalam waktu , tetapi algoritma O ( n 2 log n ) memang ada.O(n2)O(n2logn)
Misalkan menjadi lingkaran yang pusatnya adalah s i , titik ke- i , dengan jari-jari r . Tidak sulit untuk menemukan bahwa set titik P = { p 0 , p 1 , ... , p m } dapat dikelilingi oleh lingkaran dengan jari-jari r jika persimpangan I ( P ) dari C ( p 0 ) , C ( p 1 ) , ...C(si)siirP={p0,p1,…,pm}rI(P) tidak kosong. Selain itu, jika I ( P ) tidak kosong, harus ada beberapa titik di I ( P ) berbaring di beberapa bd C ( p i ) (batas C ( p i ) ). Jadi untuk setiap C ( s i ) dan setiap titik p pada ikatannya, kami mencoba menemukan berapa banyak lingkaran yang mengandung p . Jumlah maksimal di antara semua p akan menjadi jawaban untuk masalah ini.C(p0),C(p1),…,C(pm)I(P)I(P)bdC(pi)C(pi)C(si)ppp
Mari kita periksa poin dalam . Ada pemetaan satu-ke-satu antara titik-titik pada bd C ( s i ) dan bilangan real dalam [ 0 , 2 π ) . Untuk setiap lingkaran C ( s j ) , persimpangan antara C ( s j ) dan bd C ( s i ) dapat direpresentasikan dengan interval [ b e g i n jbdC(si)bdC(si)[0,2π)C(sj)C(sj)bdC(si) . Jadi untuk semua lingkaran selain C ( s i ) , terdapat paling banyakinterval n - 1 (beberapa lingkaran mungkin tidak berpotongan dengan C ( s i ) ). Hitungan maks dapat ditemukan dengan mudah dengan menyortir semua 2 ( n - 1 ) titik akhir dari interval, memindai mereka secara berurutan dan menghitung jumlah yang tumpang tindih saat ini. Untuk setiap C ( s i ) , langkah ini dapat dilakukan dalam O ( n log n[beginj,endj]C(si)n−1C(si)2(n−1)C(si) waktu, dan ada n lingkaran seperti itu, sehingga kompleksitas waktu dari algoritma ini adalah O ( n 2 log n ) .O(nlogn)nO(n2logn)