C1.1 - 算法注记

第一章内容主要以展转相除展开具体内容。其中对于算法E的解释,亦或是(1)(2)变式都不易产生困惑。算法

可是变式(3)会遇到翻译上的理解障碍。主要问题是,段落中前半部分是对式(2)的说明,后半部分是对(3)的推导翻译

参考习题8的设定,给出我认为比较通俗的解释:字符串

  推导式以下:字符串处理

    1.f((σ,j)) = (σ,ajgc

    2.f((σ,j)) = (αΦjω,bj集合

    3.f((σ,N)) = (σ,N) 字符

  上述公式,其实就是把除法变相运用在字符串处理中,m个a,n个b,每次删除j数量的a和b(公式2,每次删除一个a和一个b并在最左端加上一个c,直到不存在ab这种字符组合,一共会重复j次这样的操做),若字符串中再也不存在a或者不存在b(即更小的值被除掉了,参考表达式 m = qn + r),则已经向原字符串中插入了j个c。重复该过程时,隐含的设定是把结果字符串中左侧的c当作a,右侧的字母当作b。gcd

  虽然上面用到的是集合的关系,以m=3,n=2为例,A*为[{aaabb}, {aabb}, {abb}, {bb}, {aaab}, {aaa}, {aab}, {aa}, {ab}, {a}].其实就包含了每次删除以后的结果(每次删除其实就是从子集i变成了子集j)。这就是这边所说的模式匹配的概念ab

 

 最后,看原书的习题解答,有: 令A = {a, b, c},N = 5, 算法结束时获得字符串agcd(m,n)

 也就不难理解为何说:“每次迭代要么减小m,要么保持m不变并减小n”了。

相关文章
相关标签/搜索