3〜20次元で50〜10000個のベクトルを格納したいと思います。最近傍問題をすばやく解決したり、最近傍問題を近似したりするために、ベクトルを格納する構造を知りたいです。ユークリッド、マンハッタン、マックス、および加重マンハッタンメトリックを使用します。
私は問題を読み始め、次元の数がベクトルの数よりもはるかに少ない場合、kd-treesがそれを行うことを発見しました(間違っている場合は訂正してください)。パフォーマンスは、深く劣線形になる可能性があります(O(log(n)))。
問題は、構造が非常に急速に変化することです。各ベクトルは、プログラムの過程で何千回も変化する可能性があります。さらに、ベクトルはおおよその位置やスケールを維持する必要はありません。構造全体がR^nを「移動」できます。
問題は、kdツリーの高性能を維持するために、時々リバランスを行う必要があるということです。この操作は、ツリー全体を再構築するのと同じくらいコストがかかる可能性があります。
急速に変化するkdツリーの問題を解決するにはどうすればよいですか?