OSDN Git Service

:pencil2: fix hash.md
authorouuan <y___o___u@126.com>
Wed, 11 Sep 2019 00:46:22 +0000 (08:46 +0800)
committerouuan <y___o___u@126.com>
Wed, 11 Sep 2019 00:46:22 +0000 (08:46 +0800)
docs/string/hash.md

index c7be51d..b60fb54 100644 (file)
@@ -6,9 +6,9 @@ Hash 的核心思想在于,将输入映射到一个值域较小、可以方便
     这里的“值域较小”在不同情况下意义不同。
 
     在 [哈希表](../ds/hash.md) 中,值域需要小到能够接受线性的空间与时间复杂度。
-
+    
     在字符串哈希中,值域需要小到能够快速比较( $10^9$ 、 $10^{18}$ 都是可以快速比较的)。
-
+    
     同时,为了降低哈希冲突率,值域也不能太小。
 
 我们定义一个把字符串映射到整数的函数 $f$ ,这个 $f$ 称为是 Hash 函数。
@@ -58,7 +58,7 @@ void cmp(const string& s, const string& t) {
 
 ### 错误率
 
-由于 $n$ 远大于 $m$ ,要进行约 $n$ 次比较,每次错误率 $\frac1{M}$ ,那么总错误率是 $1-(1-1/M)^n$ 。在随机数据下,若 $M=10^9 + 7$ , $n=10^6$ ,错误率约为 $\frac 1{1000}$ ,并不是能够完全忽略不计的。
+若进行 $n$ 次比较,每次错误率 $\frac1{M}$ ,那么总错误率是 $1-(1-1/M)^n$ 。在随机数据下,若 $M=10^9 + 7$ , $n=10^6$ ,错误率约为 $\frac 1{1000}$ ,并不是能够完全忽略不计的。
 
 所以,进行字符串哈希时,经常会对两个大质数分别取模,这样的话哈希函数的值域就能扩大到两者之积,错误率就非常小了。
 
@@ -90,5 +90,5 @@ void cmp(const string& s, const string& t) {
     题目大意:给你若干个字符串,答案串初始为空。第 $i$ 步将第 $i$ 个字符串加到答案串的后面,但是尽量地去掉重复部分(即去掉一个最长的、是原答案串的后缀、也是第 $i$ 个串的前缀的字符串),求最后得到的字符串。
 
     每次需要求最长的、是原答案串的后缀、也是第 $i$ 个串的前缀的字符串。枚举这个串的长度,哈希比较即可。
-
+    
     当然,这道题也可以使用 [KMP 算法](./kmp.md) 解决。