视频课程:北大的刘田老师的理论计算机基础

书籍:1.《计算理论导引》,麻省理工,中文翻译本              2.  《computational complexity: a modern approach》,普林斯顿

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。


本质:通过学习这一个课程,解决什么问题是能计算的,什么是不能计算的?有多快,要用多少存储?以及采用什么计算模式?

课程结构:针对上述课程关心的三个问题,分为三大块,

    1)自动机:即形式语言、自动机;采用什么计算模型?

    2)可计算性:即可计算理论及算法;解决哪些是可计算的、哪些是不可计算的?

    3)复杂性:即计算复杂性理论;要用多少时间、要用多少存储?


1 自动机与语言

这一部分解决:有哪些计算装置?能力如何?

包括有穷自动机、下推自动机、图灵机

1.1 有穷自动机与正则语言

包括确定性有穷自动机(deterministic finite automaton,DFA)、非确定性有穷自动机(nondeterministic finite automaton,NFA)

1.1.1 确定性有穷自动机DFA

有穷自动机两个要素:状态、转移

一般用状态图或状态表来表示自动机

有穷指的的是有穷个状态,确定指的是接受输入后状态的转移是确定的

接受状态、拒绝状态、初始状态

马尔科夫链


有穷自动机的形式定义:一个5元组

【学习笔记】计算理论 算法 第1张

计算的形式定义:

【学习笔记】计算理论 算法 第2张

如果一个语言被一台有穷自动机识别,则称它是正则语言


正则运算:包括连接、并、星号(注意不包括补、交)

【学习笔记】计算理论 算法 第3张正则语言对正则运算封闭,也对补运算、交运算封闭(即对A,B两个正则语言做并、连接、星号、补或交运算之后仍然是正则语言)

补运算证明思路:只要将接受状态改动下即可补运算

并运算证明思路:让两个自动机同时运行 只要两个自动机有一个接受 我就接受

交运算证明思路:1)交可以根据布尔运算转化为补和并2)构造自动机,让2个自动机同时运行

连接运算证明思路:还是运行2自动机,和交运算并运算不同,不是同时运行,是先后运行;把输入分割为2部分,先后输入到2自动机,难点是何处断开;当遇到第一个断开点,第一个自动机不停继续走,第二个自动机开始启动,那么每次遇到一个断开点,第一个自动机保留一个副本,继续往下走,第二个自动机启动新副本从这儿往下走;那么只要控制断开点是常数个,就可以设计有穷自动机了

星号运算证明思路:类似证明,不过是启动一个自动机,把输入串截成若干段,每段都是接受的,每段都是重启自动机,难点和连接运算一样,在何处截断?


1.1.2 非确定性有穷自动机NFA

下一个状态可以不唯一确定

包含ε移动,多种选择(含0种选择)


计算树

非确定性自动机可以让证明简单,也可以让自动机变得简单

非确定性自动机是概念上的突破 更简单


确定性自动机的状态数更多,计算简单:描述复杂,分析简单

非确定性自动机状态数简单,计算复杂:描述简单,分析复杂


确定性自动机是真实的

非确定性自动机只是方便分析,没有实物,无法制造,只是数学概念


非确定有穷自动机的形式定义:

【学习笔记】计算理论 算法 第4张计算的定义:

【学习笔记】计算理论 算法 第5张


等价性:每台DFA都有对应的NFA,两台机器识别相同语言

推论:一个语言是正则的,当且仅当有一台NFA识别它


用NFA对正则运算的封闭性证明更加简单,用ε移动连接一下就搞定了

1.1.3 正则表达式

正则表达式是描述模式的手段


正则表达式形式定义:

【学习笔记】计算理论 算法 第6张是一个归纳定义


省略最外层括号

规定优先级,星号 > 连接 > 并

【学习笔记】计算理论 算法 第7张

正则表达式  等价于   正则语言   等价于  有穷自动机

利用泵引理证明一个语言是非正则语言

1.2 下推自动机与上下文无关文法

1.2.1 上下文无关文法

文法 文法(生成的)语言

产生式  替换规则 产生式缩写

变元  非终结符  初始符

非变元 终结符

派生 语法分析树


上下文无关文法CFG定义

【学习笔记】计算理论 算法 第8张一步生成 任意步生成(派生,推导)

上下文无关文法生成的语言称为上下文无关语言CFG


设计CFG:合并、正则、匹配、递归

正则语言是实际上CFG的一种特例

ww是上下文有关的  非ww是上下文有关的

定理:CFG对并运算封闭

定理:正则语言都是上下文无关语言


最左派生 文法的歧义性 歧义文法  固有歧义语言

非确定性


乔姆斯基范式CNF

【学习笔记】计算理论 算法 第9张等价:两个文法生成相同语言

定理:任意CFG都有等价的CNF

形式语言:零型文法(任意图灵机识别的文法TM) 一型文法(上下文有关文法  线性有界自动机LBA) 二型文法(上下文无关文法 下推自动机PDA) 三型文法(典型代表正则表达式 NFA DFA)

1.2.2 下推自动机PDA

比非确定性有穷自动机多了个设备--栈,栈可以做推入和弹出

下推自动机有非确定性的,这个非确定性直接扩展了下推自动机的能力,比如固有歧义文法和有穷自动机不同,有穷自动机的确定性与否,实际上是等价的,不改变自动机的能力

所以一般下推自动机指非确定性下推自动机,即PDA即NPDA


形式定义,6元组

【学习笔记】计算理论 算法 第10张

PDA计算

【学习笔记】计算理论 算法 第11张

另一个例子

【学习笔记】计算理论 算法 第12张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄