9

素数で除算してハッシュをモジュラス値に減らした後、ローリング ハッシュ アルゴリズムがどのように機能するかを理解するのに苦労しています。

数字の 5 桁のシーケンスを考えてみましょう123456

最初のチャンクは12345. 値を保存すると、次のウィンドウで 6 が入って 1 が出てきます。

したがって、新しいハッシュは(12345-1*10^4)*10 + 6 = 23456. これはかなり直感的です。

明らかなように、これらの数値は大きいため、数値を小さく保つモジュラス関数が必要です。101この目的のために素数を取るとします。

したがって12345、 に減少し23ます。では、これから、次のウィンドウのローリング ハッシュをどのように導き出すの23456でしょうか?

4

2 に答える 2

6

計算と同じ方法で計算します23456が、常にモジュロを使用し101ます。

(((23 - (10^4 mod 101))*10) mod 101 + 6) mod 101 = 24.

これは、必要な値です23456 mod 101 = 24

于 2016-04-23T18:03:46.160 に答える