- 締切済み
m-ブロック法 オーダ表現
要素数nの配列に対する,m-ブロック法による探索の計算量を考えたとき、 ブロック数をm=√nとしたら計算量はO(√n) ってことはわかるんですが、 ブロック数をm=3としたら計算量のオーダ表現はどうなるんですか? 教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
なぜ「m = √n とすると計算量が O(√n) になる」のか, 説明できますか?
要素数nの配列に対する,m-ブロック法による探索の計算量を考えたとき、 ブロック数をm=√nとしたら計算量はO(√n) ってことはわかるんですが、 ブロック数をm=3としたら計算量のオーダ表現はどうなるんですか? 教えてください。
なぜ「m = √n とすると計算量が O(√n) になる」のか, 説明できますか?
補足
m-ブロック法だと、各ブロックと一回ずつ比較してxを含んでいるブロックを決めて、 そのブロックについて逐次探索をするから、 最悪の場合はブロックを決めるのにm-1回比較して、 ブロック内ではブロック長k=n/m(繰り上がり)に等しい回数の比較を行う場合である。 比較回数に関して、 比較回数≦m-1+n/m(繰り上がり) が成り立ち、n/m(繰り上がり)≦n/m+1より、 比較回数≦m+n/m が成り立つ。 相加平均と相乗平均の関係から上式の右辺が最小になるのは m=n/mが成り立つとき、つまりm=√nの時で、これを代入すると 比較回数は約2√nになるから、オーダ表現はO(√n)になる。 って感じです。 本当はこれで当たってるかも不安なんですけどね。