この記事は技術的すぎるため、ほとんどの読者には理解しにくいかもしれません。技術的な詳細を削除せずに、(2017年9月) |
7 がターゲット値である乗法二分探索アルゴリズムの視覚化。 | |
| クラス | 検索アルゴリズム |
|---|---|
| データ構造 | 配列 |
| 最悪のパフォーマンス | O (log n ) |
| 最高のパフォーマンス | O (1) |
| 平均的なパフォーマンス | O (log n ) |
| 最悪の場合の空間複雑度 | O (1) |
| 最適 | はい |
コンピュータサイエンスにおいて、乗法二分探索は二分探索の一種で、通常の二分探索で使用されるソート順ではなく、配列内のキーの特定の順列を使用する。[ 1 ] 乗法二分探索は1980年にThomas Standishが初めて説明した。このアルゴリズムはもともと、効率的な除算やシフト演算を行わない小型コンピュータでの中点インデックス計算を簡略化するために提案された。現代のハードウェアでは、乗法二分探索のキャッシュフレンドリーな性質により、BツリーやB+ツリーの代わりとして、ブロック指向ストレージでのアウトオブコア探索に適している。最適なパフォーマンスを得るには、 BツリーまたはB+ツリーの分岐係数が、それが保存されているファイルシステムのブロックサイズと一致する必要がある。乗法二分探索で使用される順列は、ブロックサイズに関係なく、最初の(ルート)ブロックに最適な数のキーを配置する。
乗法二分探索は、一部の最適化コンパイラでswitch文を実装するために使用されます。[ 2 ] [ 3 ]
乗法二分探索は、並べ替えられた配列に対して実行されます。キーは、対応するバランス二分探索木のレベル順に格納されます。これにより、二分探索の最初のピボットが配列の最初の要素に配置されます。2番目のピボットは、次の2つの位置に配置されます。
値がA 0 ... A n −1であるn要素の配列Aとターゲット値Tが与えられた場合、次のサブルーチンは乗法バイナリ検索を使用してA内のTのインデックスを検索します。