2

Rabin–Karp文字列検索アルゴリズムに関連するいくつかの問題を解決しています。このアルゴリズムでは、ローリングハッシュを単純な検索よりも高速にする必要があります。この記事では、ローリングハッシュを実装する方法について説明します。「ラビン-カープローリングハッシュ」を問題なく実装しましたが、実装の実装はほとんどありませんでしたが、計算の複雑さについても言及されており、循環多項式によるn-gramのハッシュが推奨されています。これは、そのような手法のBuzHash実装にリンクしていますが、その上にn-gramハッシュを構築するためにどのように使用できるのでしょうか。このようなものが欲しい、または

CPHash cp = new CPHash("efghijk");
cp.shiftRight('l') // now we got hash of "fghijki"
cp.shiftLeft('d') // "defghi"

Javaの場合。

文字列検索に関連する問題に遭遇する人(私のように)のために、私が有用だと思った記事がいくつかあります1、2、3

4

1 に答える 1

4

私は最近、CyclicやRabin-Karpを含むいくつかのローリングハッシュ関数を実装するApacheライセンスのJavaライブラリを公開しました。

http://code.google.com/p/rollinghashjava/

https://github.com/lemire/rollinghashjava

于 2011-03-11T15:54:50.697 に答える