回答:
時間でこの問題を解決する方法はわかりませんが、アルゴリズムは存在します。
ましょ、その中心とする円である、半径と番目の点、。点集合は、の交点が半径円で囲まれていることを見つけるのは難しくありませんは空ではありません。場合また、空ではない、でいくつかの点が存在しなければならないいくつかの上に置く(の境界)。したがって、各およびその境界上の各点について、いくつの円が含まれているかを見つけようとします。。すべてのの最大数がこの問題の答えになります。
ポイントを調べてみましょう。上の点との実数の間には1対1のマッピングがあります。各円について、とは区間で表すことができます。したがって、以外のすべての円では、最大間隔があります(一部の円はと交差しない場合があります)。最大カウントは、インターバルのすべてのエンドポイントをソートし、それらを順番にスキャンして、現在の重複数をカウントすることで簡単に見つけることができます。それぞれについて、このステップは時間で実行でき、このような円がため、このアルゴリズムの時間計算量はです。
難しい質問は、選択したサークルが実際にセット内で「最大」であるかどうかを知ることだと思います。これを判断する唯一の方法は、ポイントのすべての可能な組み合わせを試して、それらを囲む円のサイズをテストすることです。
ただし、最初にポイントスペースを幅2rの正方形セルのグリッドに分割することにより、検索スペースを削減できます。次に、最も密度の高いセルを見つけます。既に1つのXポイントの円を見つけているので、より多くのポイントを持つ円が存在する場合、少なくともXポイントが含まれている必要があると結論付けることができます。そして、これをポイントのさまざまな組み合わせをテストするための出発点として使用します。
最大になる可能性が高いポイントのセットのみを探している場合、近傍の密度がセルの近傍内にあるポイントを選択することで、テストする必要がある組み合わせの数をさらに減らすことができる場合がありますXより大きい。
とはいえ、両方の「削減」は失敗する可能性があり、最悪の場合は、ポイントのすべての可能な組み合わせの円を計算します。