0

ポイントのリストが与えられた場合、N ポイントのすべての「クラスター」を見つけたいと思います。クラスターの私の定義は緩く、最も簡単な解決策を可能にするものに調整できます。それは、特定のサイズの円内の N ポイント、またはすべてが互いに距離内にある N ポイント、またはその他の意味のあるものである可能性があります。ヒューリスティックは受け入れられます。

ここで、N=2 で、互いに近接しているすべての点のペアを探しているだけです。kd ツリーを使用して効率的に行うのは非常に簡単です (たとえば、空間を再帰的に八分円などに分割し、各領域が異なる分岐にある場合)。次に、各ポイントについて、同じ親を持つ他のポイントと比較します (領域の端に近い場合は、適切な数のレベルも確認してください)。N=N' の解で帰納的に、異なる N' 解の間の交点を取ることで N=N'+1 の解を見つけることができることを認識していますが、それは非常に非効率的です。

これについてまともな方法を知っている人はいますか?

4

1 に答える 1

0

ユークリッド最小スパニング ツリーを計算することから始めます。たとえば、CGALはこれを行うことができます。そこからの正確なアルゴリズムは、特定の要件によって異なりますが、大まかに次のようになります。そのグラフのエッジを長さで並べ替えます。次に、最も長いエッジから始めて、エッジを削除します。これは単結合グラフであるため、エッジを削除するたびに、グラフを 2 つのサブグラフに分割します。作成された各サブグラフが条件に従ってクラスターを形成しているかどうかを確認します。そうでない場合は、エッジの削除を続行します。

于 2013-11-17T17:38:34.943 に答える