2011-01-05 14 views
10

私は、1セット(X)の点(それほど大きくないと言えば1〜20点)と2番目の(Y)私はYからいくつかのポイントを選択する必要があります。すべてポイントまでの距離は最小です。他の点のセットとの距離の合計が最小である点を見つける

私は、Xをポリゴンの頂点として扱い、このポリゴンの重心を見つけて、セントロイドに最も近いYからポイントを選択するという考えを思いつきました。しかし、重心がポリゴンの頂点までの距離の和を最小にするかどうかはわからないので、これが良い方法かどうかはわかりません。この問題を解決するアルゴリズムはありますか?

ポイントは地理座標で定義されます。

+0

曲面上の緯度経度、または平面上のx-yを意味しますか? –

+2

セントロイドは、頂点までの距離の合計を最小化しません。たとえば、三角形の場合、Torricelliポイント(http://en.wikipedia.org/wiki/Torricelli_point)が最適です。 – adamax

答えて

4

ポリゴンの重心は正しくないかもしれませんが、そのような点が存在します。論文で

n-ellipses and the minimum distance problemは、ポイント(Xのあなたのセット、巣と呼ばれる)場合の合計のためのユニークなポイント(と呼ばれる中央)があり、その後

  • を同一線上にされていないことを示しています距離の最小化が図られる。この点は、その点から焦点までの単位ベクトルの合計がゼロであるようなものです!

  • 距離の和が一定であるために点の軌跡が中心に距離Dため

  • N-楕円を含む(N-楕円と呼ばれる)に凸の曲線を完全にするためのn楕円を含んで

  • 任意の他の距離D「のD」< D.

は、このようにあなたは、中心を見つけるために、山登りアルゴリズムのいくつかの種類を行うことができます。

もちろん、これらのn楕円は必ずしも円である必要はないので、中心に最も近い点を選ぶだけではうまくいかないかもしれませんが、近似値が良いかもしれません。

(上記の情報に基づいて)良好なパーティショニングスキームを把握するために、20ポイント(それらが修正されている場合)でいくつかの前処理を行うことができます。

希望に役立ちます。

+0

私はシミュレーテッドアニーリングの必要はないと思います。シンプルな登山が行われます。ここにはローカルミニマムが1つしかありません。 – adamax

+0

@アダム:そうですね、私は実際に山登りをしていました。ありがとう、編集されます。 –

1

あなたは距離の二乗和(距離のない総和)を最小にしたい場合は、その和を最小ポイントはX.

証明に点の平均である:

誘導体は、とき Nx = x0+x1+...発生し、ゼロであるので、 x = (x0+x1+...)/N

誘導体は、この点の周りに対称である、と関数が二次であるので、私は最も近いPOINかなり確信しているときの和が最小化された

sum(squares of distances) = (x-x0)^2 + (y-y0)^2 + (x-x1)^2 + (y-y1)^2 + ... 

d/dx sum(squares of distances) = 2(x-x0) + 2(x-x1) + ... = 2(Nx - x0 - x1 - ...) 

この平均点に対するYのtが最良です。

距離を最小限に抑えるのは難しいですが、私は同じアルゴリズムを使用していると思われます。テストするYのセットの余裕が増えればうまくいくでしょう。

+0

私は通常の方法で二乗和の項を使用しているとは思わない。有効なメトリックについて話している場合、任意の2つのポイント間の距離は常に0以上になります。 – Samsdram

+0

通常の平方和のメトリックを意味し、常に0以上です。 t? –

+0

私の主張は、数学よりも展覧会の明瞭さと関係があります。オペレータは、その点とXの点との間の距離の合計を最小にする点をY内に求めました。OPは、距離のメトリックを指定しませんでした。たとえば、ユークリッドの定理を二乗の和として記述します。 OPが、Yの点とXの点との間の二乗距離の和を最小にする点を求めると仮定したとする。空間平均は実行可能な解ではない。 – Samsdram

1

距離の最小値を求めたいので、点集合Xを空間平均に減らすことができると思います。次に、KDTreeや何らかの種類の空間分割木を使用して、Xの空間平均に最も近いY内の点を見つけることができます。空間分割木を使用すると、すべての可能な点を調べるのに比べて作業の節約になります。

0

私はブルートフォースを示唆しています。 質問がどのように提起されるかは、X、Yがどこにあるのかわからない。 Xが30ポイント、Yが1000ポイントとします。 次に、Yの各点に対して30の距離を合計します。 全部で30000回の計算が完了しました。 これにより、最小値が保証されます。 Xのいくつかの「中心」を見つけて、最も近いYを選択するのはおおよその解決策にすぎません。

さらに興味深い質問は、Xだけでそのような点を見つけることです。 Yを無視する Xの3点のみについては、Fermat-Torichelliポイントが問題を解決します。

関連する問題