2017-06-12 7 views
1

多次元座標の高速挿入と検索用に特別に設計されたデータ構造がありますか(実際には1次元と1M点未満のように、2次元以上または3次元以上)さらに、任意の距離メトリックについては?多次元座標のデータ構造(検索、挿入)?

私はkd-treesについてよく知っていますが、これは挿入には適していますが、わかっている限り、それらのバランスは重要ではなく、高次元での検索はあまり効率的ではありません。無秩序なマップ/ハッシュテーブルは一見すると良い解決策になりますが、私が知る限り、ハッシュや衝突の問題があります(たとえば、文字列に変換すると数値精度が切り捨てられることがあります。高価な)。多分、各次元の赤黒の木のようなものが挿入には良いでしょうし、検索にも悪くない(次元に沿って再帰的にフィルタリングする)でしょう。

私はちょうど車輪を再発明したくありません。私は、これが今日、データサイエンスの一般的な必要性であると確信しています。答えとして論文/チュートリアルへのリンクをとるのは楽しいです。理想的には、C/C++/Python/Java/Matlabに既存の実装が存在することになります。

+0

作業している実際のデータについてもう少し詳しく説明できますか?たぶんいくつか具体的な例を提供するかもしれない。 –

+0

@JaysonBoubin私は特定のデータについては考えていません。ポイントがいくつかの部分空間にあると想定するのに役立つ場合、または密度の高いクラスターになっていないと仮定すると、これらの仮定は動作する可能性がありますが、そうでない場合は浮動小数点のリストに過ぎません。何か覚えていましたか? – Sheljohn

答えて

0

あなたが探しているデータ構造はR-Treeです。

ここでJava実装を見つけることができます。 https://github.com/davidmoten/rtree

+0

これは正解と思われます。しかし、[外部リソースへのリンクはいくつかの文脈を提供する](https://stackoverflow.com/help/how-to-answer)。 [R-trees](https://en.wikipedia.org/wiki/R-tree)が適切な理由を簡単に説明できますか? – Sheljohn

関連する問題