球面上のk個の最近傍点を見つける


7

集合所与の球上の点、及び別の点球上、私が検索するの点(ユークリッド又は大圏距離)最も近いです。SNPkS

私は、かなりの量の事前計算をする用意があります。ソリューションは正確かつ効率的でなければなりません(線形時間よりも高速)。


1
この質問は平面で解く方が簡単のようです。あなたはそれについて考えましたか、そして答えは簡単に球に変換されますか、そしてなぜ(そうではない)?たとえば、は、と間の線に直交する線によって定義される凸多角形であり、スペース分割と組み合わせて使用​​して、最寄りの隣人、そしてそこから働きます。R2A(v)={p|wSd(p,v)d(p,w)}vw
Lieuwe Vinkhuijzen 2015年

@LieuweVinkhuijzenユースケースはGISの問題であるため、球状トポロジは重要です。私は実用的な解決策を提供すると思いますが、先行技術に興味があります。ありがとう!
JohnJ、2015年

1
JohnJ、Lieuweは球形トポロジーは重要ではないと言っていませんでした。その代わり、私は彼がでこれを解決するための多くの標準的なテクニックがあると言っていると思います、そして彼があなたがそれらの標準的なアプローチを研究することから始めて、そしてそれらがわずかに変更できるかどうかを見ることを勧めていたと私は疑っていますではなく、実際には球の上にいることを考慮に入れてください。R2R2
DW

回答:


4

空間分割アプローチを使用して最近傍探索を行います。

たとえば、1つのアプローチは、球の表面で -dツリーを使用することです。球座標を使用して球上のすべての点を表すことができます。球上のすべての点は座標持っています。したがって、座標を持つ2次元空間があります。ここで、 -dツリーを使用してポイントを整理します。ここでは、次元です。 -dツリーの最近傍探索には標準的なアルゴリズムがあります。ヒューリスティックな予測実行時間はです。k(1,θ,ϕ)(θ,ϕ)kk=2kO(lgN)

座標が法として「折り返す」ことを反映するために、データ構造に小さな変更を加える必要がありますが、これは難しくありません。で最近傍探索に使用されるキーサブルーチン -dツリーがある:点所与及び「矩形」領域からの距離を見つけるに最も近い点に。あなたの場合、領域は、つまり点のセット。から最も近い点までの距離を計算するのは簡単です2πkPRPRR[θ,θu]×[ϕ,ϕu]{(1,θ,ϕ):θθθu,ϕϕϕu}PR。これにより、 -dツリーの最近傍探索に標準アルゴリズムを使用できるようになります。k

または、 -dツリーの代わりに、他のバイナリスペースパーティションツリーを使用したり、メトリックツリーを確認したりすることもできます、大幅に向上することを期待する理由はありません。k


1

ここにあなたの質問に対処する2つの異なるソフトウェアパッケージへのリンクがあります。彼らが採用する方法があなたのニーズを満たすかどうかを確認するために、それぞれを研究する価値があるかもしれません:

(1)Matlab GridSphere。「測地線グリッドは、球の表面上の均一なグリッドです。アルゴリズムは、GridSphereによって生成されたグリッド用に最適化されており、任意の測地線グリッドでは機能しません。」

(2)DarkSkyApp sphere-knn .js。「球体上で最近傍ルックアップを高速に提供します。...十分にテストされており、地球上のどこにあるかに関係なく正しく機能します。」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.