もっとも近い点を探す

離散値(あるいは有限精度の実数値)の高次元空間を考える。
サイト集合と問い合わせ点が与えられたとき、
問い合わせ点にもっともちかく、サイトのひとつである点を出力せよ。

近さはユークリッド距離で定義する。
ただし、他の距離で高速な手法があればその定義をつかってもいい。

サイト数をN個、次元数をDとすると、
素朴な方法では O(ND) 時間になる。

次元数は1万程度、サイト数は千程度を想定している。
サイト数に関してオーダーNより小さい計算時間が望ましい。

1. 二分探索的な手法
2. 計算幾何で有名な方法があった気がする
3. Z-ordering
4. approximate near neighbor search -- nearest neighbor search を誤差つきにして、誤差内にあるかどうかの決定問題