OSDN Git Service

Fix sam.md (#1124)
authorChrogeek <chrogeek@outlook.com>
Fri, 29 Mar 2019 13:39:53 +0000 (21:39 +0800)
committerTrisolaris HD <36555123+TrisolarisHD@users.noreply.github.com>
Fri, 29 Mar 2019 13:39:53 +0000 (21:39 +0800)
docs/string/sam.md

index 72c6c1b..299105b 100644 (file)
@@ -68,7 +68,7 @@ SAM 最简单、也最重要的性质是,它包含关于字符串 $s$ 的所
 
 在我们描述线性时间内构造 SAM 的算法之前,我们需要引入几个对理解构造过程非常重要的概念并对其进行简单证明。
 
-### 结束位置 $endpos$
+### 结束位置 `endpos`
 
 考虑字符串 $s$ 的任意非空子串 $t$ ,我们记 $endpos(t)$ 为在字符串 $s$ 中 $t$ 的所有结束位置(假设对字符串中字符的编号从零开始)。例如,对于字符串 $``abcbc\!"$,我们有 $endpos(``bc\!")=2,\,4$。
 
@@ -103,7 +103,7 @@ SAM 最简单、也最重要的性质是,它包含关于字符串 $s$ 的所
 
 记 $w$ 为等价类中最长的字符串、 $u$ 为等价类中最短的字符串。由引理 1,字符串 $u$ 是字符串 $w$ 的真后缀。现在考虑长度在区间 $[\left|u\right|,\left|w\right|]$ 中的 $w$ 的任意后缀。容易看出,这个后缀也在同一等价类中,因为这个后缀只能在字符串 $s$ 中以 $w$ 的一个后缀的形式存在(也因为较短的后缀 $u$ 在 $s$ 中只以 $w$ 的后缀的形式存在)。因此,由引理 1,这个后缀和字符串 $w$ 的 $endpos$ 相同。
 
-### 后缀链接 $link$
+### 后缀链接 `link`
 
 考虑 SAM 中某个不是 $t_0$ 的状态 $v$。我们已经知道,状态 $v$ 对应于具有相同 $endpos$ 的等价类。我们如果定义 $w$ 为这些字符串中最长的一个,则所有其它的字符串都是 $w$ 的后缀。
 
@@ -300,7 +300,9 @@ void sa_extend(char c) {
 
 现在我们来估计不连续的转移的数量。令当前不连续转移为 $(p,\,q)$ ,其字符为 $c$ 。我们取它的对应字符串 $u+c+w$ ,其中字符串 $u$ 对应于初始状态到 $p$ 的最长路径, $w$ 对应于从 $p$ 到任意终止状态的最长路径。一方面,每个不完整的字符串所对应的形如 $u+c+w$ 的字符串是不同的(因为字符串 $u$ 和 $w$ 仅由完整的转移组成)。另一方面,由终止状态的定义,每个形如 $u+c+w$ 的字符串都是整个字符串 $s$ 的后缀。因为 $s$ 只有 $n$ 个非空后缀,且形如 $u+c+w$ 的字符串都不包含 $s$ (因为整个字符串只包含完整的转移),所以非完整的转移的总数不会超过 $n-1$ 。
 
-将以上两个估计值相加,我们可以得到上界 $3n-3$ 。然而,最大的状态数只能在类似于 $``abbb\ldots bbb\!"$ 的情况中产生,而此时转移数量显然少于 $3n-3$ 。因此我们可以获得更为紧确的 SAM 的转移数的上界: $3n-4$ 。字符串 $``abbb\ldots bbbc\!"$ 就达到了这个上界。
+将以上两个估计值相加,我们可以得到上界 $3n-3$ 。然而,最大的状态数只能在类似于 $``abbb\ldots bbb\!"$ 的情况中产生,而此时转移数量显然少于 $3n-3$ 。
+
+因此我们可以获得更为紧确的 SAM 的转移数的上界: $3n-4$ 。字符串 $``abbb\ldots bbbc\!"$ 就达到了这个上界。
 
 ## 应用