2012-03-21 5 views
5

モチベーション:

私はこのアルゴリズムを説明してきましたが、標準的な実装が存在するならば、私は車輪を再発明したくないと思います。私はscipy/numpyの実装がある場合、通常はPythonで自分自身をロールバックできるものよりもはるかに高速であることも学びました。このアルゴリズムの名前は、そこにnumpy/scipyの実装がありますか?

アルゴリズム記述

Iは(数百万)平面上の点の数が多いです。すべての点を網羅した大きな箱から始めて、箱を等面積の小箱に分割していきたいと思っています。細分は、サブボックスに少なくとも1,000ポイントがある間、再帰的に継続する。アルゴリズムは、ツリーの各葉ノードへの細分とポイントのマッピングを記述するツリーを返す。

このアルゴリズムの名前は何ですか(分割と征服のようなものですか?)、2次元numpy配列のポイントが与えられたときに標準的な方法がありますか?

+1

クワッドツリーですか? –

+0

1次元の分割がN-kDツリー(N = 2の場合)である場合。また、分割は、2つの部分の集団*のサイズ*が(ほぼ)等しくなるように行う必要があります。 – wildplasser

+0

@wildplasserを計算上の観点から見ると、(最小の樹木深度のために)等しいサイズの集団に沿った分割について、私はあなたに同意するでしょう。しかし、私は彼らが正確に何をしているのか、均等な_areas_を分割した論文の結果を再現しようとしています。 – Hooked

答えて

9

パーティションはquadtreeと呼ばれます。 Pythonコードについては、this threadを参照してください。

+6

それは価値があります。 .spatial.KDTree'(および/またはパフォーマンス上の理由からC言語で書かれた 'scipy.spatial.cKDTree')は、あなたがリンクしているスレッドにリストされているオプションよりはるかに堅牢です –

+0

@JoeKington - よく知っておいてください。とにかく、タグがあれば、scipyからの何かが、おそらくOPの方が良いでしょう。 –

関連する問題