From a0d8383b5b41d9304ee7edf356b0d6ee1c0528de Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Sun, 17 Nov 2019 16:24:18 +0800 Subject: [PATCH] update words and modify some mistakes. --- thu_dsa/chp11/bm.md | 6 +++--- words.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/thu_dsa/chp11/bm.md b/thu_dsa/chp11/bm.md index 08b1718..0c98084 100644 --- a/thu_dsa/chp11/bm.md +++ b/thu_dsa/chp11/bm.md @@ -21,7 +21,7 @@ 因此,坏字符策略实现的关键,就在于找到模式串中,位于坏字符`Y`左侧,并且与字符`X`能够匹配的下一个字符。应该指出的是,这样的字符能够有多个,也就对应了多个移动距离,所有这些移动距离都是值得对齐的。因此,为了不错过其中的任意一个字符,应该取移动距离最小的那一个,使之与文本串中的`X`对齐。 -为了快速地确定下一个对齐位置,可以仿照`kmp`算法的思路,对于模式串中出现过的所有字符,保存每个字符出现的最后位置,构成`bc`表,以便在字符匹配时迅速更新对齐位置。因此,`bc`表就有$\left|\Sigma\right| + 1$项,其中$\Sigma$为模式串的字符集大小,并且将额外的一项用来代表所有没有在模式串中出现过的字符,此时直接将模式串整体移过该字符。 +为了快速地确定下一个对齐位置,可以仿照`kmp`算法的思路,对于模式串中出现过的所有字符,保存每个字符出现的最后位置,构成`bc`表,以便在字符匹配时迅速更新对齐位置。因此,`bc`表就有$\left|\Sigma\right| + 1$项,其中$\Sigma$为模式串的字符集,并且将额外的一项用来代表所有没有在模式串中出现过的字符,此时直接将模式串整体移过该字符。 这样,`bm-bc`策略就可以利用`bc`数组来快捷地实现了。在一次匹配失败后,比如失败位置`j`处文本串字符为`X`,查询`bc`表会有三种情况: @@ -86,11 +86,11 @@ void makeBC(char* const pattern, int* bc){ 基于上面的考虑,我们这里提出好后缀(good suffix, gs)策略。顾名思义,好后缀策略就是要将某次比对失败前的成功比对信息加以利用,因此它的思想和`kmp`算法是一致的。具体说来,就是要利用这些成功比对的信息,将模式串直接移动到下一个值得对齐的位置,那么这里的值得对齐的位置和`kmp`算法是否存在异同呢? -设某次比对失败于模式串的位置`j`,因此`P[j+1, m)`与文本串中的对应字符依次相等。一般地,如果这`m - j -2`个字符在模式串中左侧的另一位置再次出现,则显然是一个值得的对齐位置,如下图所示: +设某次比对失败于模式串的位置`j`,因此`P[j+1, m)`与文本串中的对应字符依次相等。一般地,如果这`m - j -1`个字符在模式串中左侧的另一位置再次出现,则显然是一个值得的对齐位置,如下图所示: ![gs_case1](gs_case1.png) -但是如果这`m - j - 2`字符没有在模式串中重复出现,是否就不存在值得的对齐位置了呢?答案是否定的,因为此时的情形就类似`kmp`的情形了啊,一般地,如果模式串存在一个前缀,与子串`P[j+1, m)`的后缀相互匹配,那么这也是一个值得的对齐位置,如下图所示: +但是如果这`m - j - 1`字符没有在模式串中重复出现,是否就不存在值得的对齐位置了呢?答案是否定的,因为此时的情形就类似`kmp`的情形了啊,一般地,如果模式串存在一个前缀,与子串`P[j+1, m)`的后缀相互匹配,那么这也是一个值得的对齐位置,如下图所示: ![gs_case2](gs_case2.png) diff --git a/words.md b/words.md index c45eafe..66c1857 100644 --- a/words.md +++ b/words.md @@ -1787,7 +1787,7 @@ Some Words > (adj)complete and including everything that is necessary - He has writen a fully comprehensive guide to Rome. - - We offer you a comprehensive training in all aspected of the business. + - We offer you a comprehensive training in all aspects of the business. + coordination > (n)the act of making all the people involved in a plan or activity work together in an organized way.