二分探索とは、探索アルゴリズムの一種である。バイナリーサーチ(binary search)ともいう。
側面に頭文字の見出しがついていない紙の英和辞典をひくときに、1ページから順番に探していく人はいない。たいていは、真ん中あたりの適当なページを開いて、目的の単語より前であればそのページより前の部分を除外し、目的の単語より後であればそのページより後ろを除外するという作業を繰り返して範囲を絞っていくという方法を取る。
このように、順序付けされたリストから目的のものを探しだす時に、対象を二分割して目的のものを含まない方を除外していく探索法を二分探索という。
その効率はO(log n)で表され、1000ページの本でも10回の操作で1ページ以内に絞ることが出来、たとえ100万ページの本であったとしてたった20回の操作で1ページ以内に絞ることが出来る。単純な割に非常に強力なアルゴリズムとして知られている。
「ニコニコ大百科の読者が、一覧の一覧の編集履歴から、「ストーリーを一行で語るの一覧」が追加された日付を調べる手順」について検討してみる。
一覧の一覧の編集履歴は2016年8月末日現在で、800件以上の履歴が存在しており、一件一件を調べていこうとすると非常に骨の折れる作業になる。
以下のように応用すれば効率的に探し当てることができる。
(注: 上記〜件目というのは2016年9月4日現在の値です。)
本例がアルゴリズムとして厳密さに欠けるという批判はもっともであるが、現実への応用にはこれくらいの柔軟性は必要である。
掲示板
2 ななしのよっしん
2017/08/19(土) 18:49:21 ID: RX+p7lMNFl
ピタゴラスイッチで紹介されてたな
手順だけ見ると何回も同じことやって面倒くさそうだけど辞書引くときはみんな自然にやってることってのが面白い
3 強盗
2017/08/20(日) 07:24:29 ID: 4HLpyZURla
4 ななしのよっしん
2017/09/12(火) 14:29:23 ID: M0141PW33E
二分探索がすごいのは記事にもあるけど
要素が倍に増えても計算量が1回分しか増えないところ
二分探索が厄介なのは前提条件になるソート済みデータを作るために
結局O(n logn)かかるというところ
(ソート済みかわからない場合は先頭から順に見たほうが早い)
急上昇ワード改
最終更新:2024/12/14(土) 01:00
最終更新:2024/12/14(土) 01:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。