- 777 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 13:30:13 ]
- Nは100〜10000程度で、double x[N]; に適当な数が入っているとします。
任意の数aに最も近いx[k]を知りたいとき、普通はO(N)の時間がかかりますが、 あらかじめx[]をソートしておけば二分法を使ってO(log N)でできます。 ここからが質問なのですが、2次元の座標としてx[N],y[N]があるときに、 任意の直線との距離が最も小さい(x[k],y[k])を知りたいとします。 (与えられたa,bに対してa*x[k]+b*y[k]-1.0 の値が最も小さくなるkが知りたいということ) このときに上の二分法のようなアルゴリズムはあるでしょうか? 普通にやるとO(N)が必要ですが、O(N)より速い方法を探しています。
|

|