Ich weiß nicht, wie ich dieses Problem in lösen soll , aber es gibt einen O ( n 2 log n ) -Algorithmus.O ( n2)O ( n2Logn )
Lassen ist der Kreis , dessen Mittelpunkt s i die i -te Punkt mit dem Radius r . Es ist nicht schwer zu finden, dass der Punktsatz P = { p 0 , p 1 , … , p m } von einem Kreis mit dem Radius r eingeschlossen werden kann, wenn der Schnittpunkt I ( P ) von C ( p 0 ) , C ( p 1) ist ) , …C( sich)sichichrP= { p0, p1, … , Pm}rich( S.) ist nicht leer. Wenn I ( P ) nicht leer ist, müssen außerdem einige Punkte in I ( P ) auf einem bd C ( p i ) (der Grenze von C ( p i ) ) liegen. Alsoversuchen wirfür jedes C ( s i ) und jeden Punkt p auf seiner Bindung herauszufinden, wie viele Kreise p enthalten. Die maximale Anzahl unter allen p ist die Antwort auf dieses Problem.C( p0) , C( p1) , … , C( pm)ich( S.)ich( S.)bd C( pich)C( pich)C( sich)ppp
Lassen Sie uns Punkte in . Es gibt eine Eins-zu-Eins-Abbildung zwischen den Punkten auf bd C ( s i ) und der reellen Zahl in [ 0 , 2 π ) . Für jeden Kreis C ( s j ) kann der Schnittpunkt zwischen C ( s j ) und bd C ( s i ) durch ein Intervall [ b e g i n j dargestellt werdenbd C( sich)bd C( sich)[ 0 , 2 & pgr;)C( sj)C( sj)bd C( sich) . Daher gibt es für alle Kreise außer C ( s i ) höchstens n - 1 Intervalle (einige Kreise schneiden sich möglicherweise nicht mit C ( s i ) ). Die maximale Anzahl kann leicht ermittelt werden, indem alle 2 ( n - 1 ) Endpunkte des Intervallssortiert, nacheinander gescannt und die aktuelle überlappende Anzahl gezählt werden. Für jedes C ( s i ) kann dieser Schritt in O ( n log n durchgeführt werden[ b e gi nj, e n dj]C( sich)n - 1C( sich)2 ( n - 1 )C( sich) Zeit, und es gibt n solche Kreise, so ist die Zeitkomplexität dieses Algorithmus O ( n 2 log n ) .O ( n logn )nO ( n2Logn )