- データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
78 :スモモンガー[sage]:2016/09/26(月) 20:32:40.67 ID:7l1kSKga - 確かにデータ間の差に一様離散分布を使ったのは公平ではなかったです。
なので、データを完全にランダムにして調べてみました。 データはCのrand()%1000000で10000個生成しソートして、 探索の時配列のうちランダムな値を探すキーとし間を線形探索、カンガルー法 バイナリサーチで100回比べてみました。 その結果線形探索では平均比較回数約4963回最大比較回数は9972回でした カンガルー法は平均比較回数約70回 最大比較回数は111回でした。 バイナリーサーチはやはり一番はやく、平均比較回数約12回、最大比較回数は14回でした 皆さんがご指摘の通りやはりバイナリーサーチが一番はやいようです。 ただ、例えばKMP法が逆行がないから使われているようにカンガルー法も逆行がないので 使うことはできないでしょうか?もし、とんちんかんなこと言ってたらすいません。
| - データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
79 :デフォルトの名無しさん[sage]:2016/09/26(月) 20:37:55.45 ID:7l1kSKga - >>74
www確かにそうかもしれませんね。 >>77 一応私はニュートン法については知っています。Newton法は求める関数の微分した値を しっていなければならないとおもうのですが、現実の探索だと関数が微分できないことも 多いかと思います。ちょっと、私が使った例が悪くてsinカーブや円を使ったのがよく なかったのかもしれません。整っていてソートされていないデータとして扱いやすかったので sin関数を使ったのであってとくにデータが微分可能である必要はありません。円と Y切片の交点も中学生でも二次方程式ときゃいいのでもっと簡単にできますが、本来は 多角形とさまざまな図形の交点を探るアルゴリズムです。円を使ったのは例をわかりやすく したかったからです。
|
|