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 …