タグ付けされた質問 「rolling-hash」

1
Rabin-Karpは本当にローリングハッシュにmod Q操作を適用することに注意する必要がありますか?
私はRabin Karpアルゴリズムについて読んでいて、値Qによって制限されたローリングハッシュ値を維持することの大事なことは何だろうとずっと思い続けました。 一般的なコンピューターでの整数表現は2の補数であるため、実際には、ローリングハッシュに対するすべての操作を2 ^ 31で制限するのとまったく同じであると考えました。つまり、気にしないでください。さらに、バインドまたはハッシュする値が小さいほど、衝突が増えるため、Qが大きいほどパフォーマンスが向上します。 簡単な(Java)実装をコーディングしてみました。 public static int rabinKarp(String text, String pattern) { if (text.length() < pattern.length()) { return -1; } else { int patternHash = 0; int textHash = 0; int pow = 1; // preprocessing the pattern and the first characters of the text string for (int …

1
Rabin–Karpでハッシュを計算するために使用される基底が常に素数であるのはなぜですか?
Rabin–Karp文字列照合アルゴリズムには、迅速に計算できるハッシュ関数が必要です。一般的な選択は h(x0…xn)=∑i=0nbixi,h(x0…xn)=∑i=0nbixi, h(x_0\ldots x_n) = \sum_{i=0}^n b^i x_i, どこ bbbあるプライム(すべての計算は、モジュールです2w2w2^w、 どこ wwwマシンワードの幅です)。なぜそれが重要なのかbbb プライムになるには?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.