Non so come risolvere questo problema nel tempo , ma esiste un algoritmo O ( n 2 log n ) .O ( n2)O ( n2logn )
Let essere il cerchio il cui centro è s i , l' i punti -esimo, con raggio r . Non è difficile scoprire che il punto impostato P = { p 0 , p 1 , ... , p m } può essere racchiuso da un cerchio con raggio r se l'intersezione I ( P ) di C ( p 0 ) , C ( p 1 ) , ...C( sio)SioiorP= { p0, p1, ... , pm}rio( P) non è vuoto. Inoltre, se I ( P ) non è vuoto, ci devono essere alcuni punti in I ( P ) posti su alcuni bd C ( p i ) (il confine di C ( p i ) ). Quindi per ogni C ( s i ) e ogni punto p sul suo bondary, proviamo a trovare quanti cerchi contengono p . Il conteggio massimo tra tutte le p sarà la risposta a questo problema.C( p0) , C( p1) , ... , C( pm)io( P)io(P)bd C( pio)C( pio)C( sio)ppp
Esaminiamo i punti in . Esiste un mapping uno a uno tra i punti su bd C ( s i ) e il numero reale in [ 0 , 2 π ) . Per ogni cerchio C ( s j ) , l'intersezione tra C ( s j ) e bd C ( s i ) può essere rappresentata da un intervallo [ b e g i n jbd C( sio)bd C( sio)[ 0 , 2 π)C( sj)C( sj)bd C( sio) . Quindi per tutti i cerchi diversi da C ( s i ) , ci sono al massimo n - 1 intervalli (alcuni cerchi potrebbero non intersecarsi con C ( s i ) ). Il conteggio massimo può essere trovato facilmente ordinando tutti i 2 ( n - 1 ) punti di fine intervallo, scansionandoli in ordine e contando il numero di sovrapposizione corrente. Per ogni C ( s i ) , questo passaggio può essere eseguito in O ( n log n[ b e gio nj, e n dj]C( sio)n - 1C(si)2(n−1)C(si) tempo, e non ci sono n tali cerchi, quindi la complessità temporale di questo algoritmo è O ( n 2 log n ) .O(nlogn)nO(n2logn)