このアルゴリズムでは検索文字列（パターン）の前処理を行い、検索対象テキストの前処理は行わない。したがって、テキストについて何度も検索を行わない場合に適している（他のアルゴリズムではテキスト側に前処理を施し、繰り返し検索を行うことで前処理のコストを償却する）。テキスト上の全文字をチェックする必要はなく、前処理で得た情報を活用してスキップしながら処理していく。一般にパターン文字列が長いほど検索が高速化される。検索文字列とテキストの間での不一致が発生するたびに、不一致であったという情報を最大限に利用して照合しなくてもいい位置を可能な限り排除することで、効率を向上させている。
記号の定義.
テキスト に対して から までパターン を配置した様子。この場合、 の位置で一致する。
文字列 に対する操作を以下のように表す：
文字列 に含まれる文字の個数を文字列の長さと定義する。また、文字列 の先頭を含む部分文字列をプレフィックス、末尾を含む部分文字列をサフィックスと定義する。
検索文字列をパターンと呼び、 で表す。被検索文字列をテキストと呼び、 で表す。また 上での の位置を の先頭から数えた の末尾の文字の位置と定義し、 で表す。
「 が に一致する」とは と文字列として等価な部分文字列 が存在することをいう。より具体的に、 が位置 で と一致するとは、 番目から前方 文字分を取り出した部分文字列 が と文字列として等価であることをいう。
本項では特に断りない限り、 を , を の意味で使う。
アルゴリズム.
まず、 として が の先頭に配置されるようにする。そして の 番目と の 番目から文字を照合しはじめ、インデックスを順次小さくして照合していく。つまり、 の最後尾から先頭に向かって照合していく。この照合は不一致が発生するか の先頭に到達するまで行われ（その場合は一致が見つかったことになる）、その後いくつかの規則に従って位置を右にシフトできる最大値を求める。新たな位置で再び同様の照合を行い、 の最後尾に到達するまでそれを繰り返す。
シフト規則は、 の前処理で生成したテーブル群を参照することで実装されており、定数時間でシフト量が決定される。
シフト規則.
不一致文字規則.
解説.
前処理.
一致サフィックス規則.
解説.
前処理.
ガリル規則.
性能.
実装例.