• C1.1


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

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

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

      推导式如下:

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

        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。

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

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

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

  • 相关阅读:
    函数响应式编程
    RxSwift
    Swift 5.1 新语法
    MVVM
    SwiftUI 九
    SwiftUI 八
    SwiftUI制作View可嵌套组件
    Swift 5.1 新语法
    MVVM
    Linux系统修改hostname,不用重启
  • 原文地址:https://www.cnblogs.com/ranyuu/p/9341718.html
Copyright © 2020-2023  润新知