ラビン-カープ文字列検索アルゴリズム
例えば、テキストとして "abracadabra" があり、3文字のパターンを検索する場合、"bra" のハッシュ値は "abr"(ひとつ前のサブ文字列)のハッシュ値から先頭文字 'a' の値 97 × 101 を減算し('a' の ASCII コードは 97で、基数として 101 を使用)、基数をかけてから "bra" の最後の文字 'a' の値 97 × 101 = 97 を加算する。サブ文字列が長ければ長いほど、このハッシュ法は他のハッシュ法よりも効果を発揮する。
理論的には他にも再計算が容易なアルゴリズムがある。例えば、各文字の ASCII コードを全てかけ合わせる。その場合、次のサブ文字列の計算をするには先頭文字のコードで割ってから最後の文字をかければよい。しかし、整数データ型のサイズは制限されているため、ハッシュ値をその範囲に収めるために合同式を使わなければならない。例えば単純に ASCII コードを加算するなどの方式では、ハッシュの衝突が頻発しアルゴリズムは低速になる。以上から、上述のハッシュ関数がラビン-カープに最も適している。