特定の半径の最大包囲円


19

私は次の問題へのアプローチを見つけようとします:

点と半径のセットが与えられたら、円の中心点を見つけて、円がそのセットの最大数の点を含むようにします。実行時間はなければなりません。SrO(n2)

最初は、最小の包囲円問題に似ているように見えましたが、これはで簡単に解決できます。アイデアは、任意の中心を設定し、すべての点を囲むことでした。次に、段階的に、左/右端の点に触れるように円を置き換え、指定された半径に円を縮小します。明らかに、これは機能しません。O(n2)S

回答:


7

時間でこの問題を解決する方法はわかりませんが、アルゴリズムは存在します。O(n2)O(n2logn)

ましょ、その中心とする円である、半径と番目の点、。点集合は、の交点が半径円で囲まれていることを見つけるのは難しくありませんは空ではありません。場合また、空ではない、でいくつかの点が存在しなければならないいくつかの上に置く(の境界)。したがって、各およびその境界上の各点について、いくつの円が含まれているかを見つけようとします。C(si)siirP={p0,p1,,pm}rI(P)C(p0),C(p1),,C(pm)I(P)I(P)bdC(pi)C(pi)C(si)pp。すべてのの最大数がこの問題の答えになります。p

ポイントを調べてみましょう。上の点との実数の間には1対1のマッピングがあります。各円について、とは区間で表すことができます。したがって、以外のすべての円では、最大間隔があります(一部の円はと交差しない場合があります)。最大カウントは、インターバルのすべてのエンドポイントをソートし、それらを順番にスキャンして、現在の重複数をカウントすることで簡単に見つけることができます。それぞれについてbdC(si)bdC(si)[0,2π)C(sj)C(sj)bdC(si)[beginj,endj]C(si)n1C(si)2(n1)C(si)、このステップは時間で実行でき、このような円がため、このアルゴリズムの時間計算量はです。O(nlogn)nO(n2logn)


2
円の配置は、標準のランダム化された増分アルゴリズムを使用して、時間で(高い確率で)構築できます。実際、実行時間はO n log n + k )です。ここで、kは交差する円のペアの数です。お気に入りの計算幾何学の教科書をご覧ください。O(n2)O(nlogn+k)k
-JeffE

2

難しい質問は、選択したサークルが実際にセット内で「最大」であるかどうかを知ることだと思います。これを判断する唯一の方法は、ポイントのすべての可能な組み合わせを試して、それらを囲む円のサイズをテストすることです。

ただし、最初にポイントスペースを幅2rの正方形セルのグリッドに分割することにより、検索スペースを削減できます。次に、最も密度の高いセルを見つけます。既に1つのXポイントの円を見つけているので、より多くのポイントを持つ円が存在する場合、少なくともXポイントが含まれている必要があると結論付けることができます。そして、これをポイントのさまざまな組み合わせをテストするための出発点として使用します。

最大になる可能性が高いポイントのセットのみを探している場合、近傍の密度がセルの近傍内にあるポイントを選択することで、テストする必要がある組み合わせの数をさらに減らすことができる場合がありますXより大きい。

とはいえ、両方の「削減」は失敗する可能性があり、最悪の場合は、ポイントのすべての可能な組み合わせの円を計算します。


1

O(n2)

O(n2)

2n2O(n2log(n))

O(n2)O(n2)

V+EF=2O(n2)


これが受け入れられた答えを補完するものとして読まれ、それ自体で読まれてはならない場合(このトピックについて私は知らないので、私は知りません)、あなたはそれについて明確にすべきです。
-babou
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.