计算理论导引笔记
第0章 绪论
自动机、可计算性与复杂性
- 为什么要学计算理论:计算理论是研究计算机的基本能力和局限性是什么
- 计算理论的三个传统的核心领域:自动机、可计算性、复杂性。三个领域分别对计算机的三个方面进行了讨论
- 在复杂性理论中,目标是把问题分成容易计算和难计算的;
- 而在可计算性理论中,是把问题分成可解的和不可解的
- 自动机理论阐述了计算的数学模型的定义和性质。有穷自动机模型用在文本处理、编译程序以及硬件设计中;上下文无关文法模型用在程序设计语言和人工智能上;自动机理论还有个应用:在编译原理中,FA与RE用于词法分析器设计,CFG用于语法分析器设计。
- 定义,证明,定理,引理的区别:定义描述了我们使用的对象的概念,证明是一种逻辑论证,是人们确信一个命题为真,定理是被证明为真的数学命题,有助于证明另一个更有意义的命题的命题称为引理,由定理或其证明得出的另一些有关的命题为真的结论为这个定理的推论。
- 证明类型:构造性证明、反证法、归纳法
第1章 正则语言
正则语言有三种表达方式:DFA、NFA、RE,下面我们针对这三种表达方式进行一一介绍
-
有穷自动机
- 只记忆有限量的信息,信息表示为有穷自动机的状态。状态随着输入改变而改变,改变的规则称为转移函数
- 有穷自动机的形式化定义:一个5元组:状态机、输入字母表、动作规则、起始状态以及接受状态集。 ( Q , ∑ , δ , q 0 , F ) (Q, \sum, \delta, q_0, F) (Q,∑,δ,q0,F)
- 如果A是机器M接受的全部字符串集,则称A是机器M的语言,记作L(M)=A
- 一台机器可能接受若干字符串,但是它永远只能识别一个语言
-
如果一个语言被一台有穷自动机识别,则称它是正则语言
-
正则运算
- 并:把两个语言中的所有字符串合并在一个语言中
- 连接:把一个语言的一个字符串接在另一个语言的一个字符串的前面所得到的所有字符串
- 星号: ε \varepsilon ε总是 A ∗ A* A∗的一个成员
- 封闭:如果把某种运算应用于一个对象集合的成员的得到的对象仍在这个集合中,则称这个对象的集合在该运算下封闭
- 正则语言类在并、连接、星号运算下封闭
-
非确定性有穷自动机的形式化定义:一个5元组:状态机、输入字母表、动作规则、起始状态以及接受状态集。 ( Q , ∑ , δ , q 0 , F ) (Q, \sum, \delta, q_0, F) (Q,∑,δ,q0,F)
其中 δ : Q ∗ ∑ ε → P ( Q ) , P ( Q ) 是 Q 的 幂 集 \delta: Q*\sum_\varepsilon\to P(Q),P(Q)是Q的幂集 δ:Q∗∑ε→P(Q),P(Q)是Q的幂集
-
正则表达式
- 正则表达式的值是一个语言
- 正则表达式的形式化定义:使用归纳定义
- 计算的优先级:星号,连接,并
- R + ⋃ ε = R ∗ R+\bigcup \varepsilon=R* R+⋃ε=R∗
- 正则表达式和有穷自动机是等价的
-
DFA与NFA与RE相互等价,只是一个语言的不同表示模式
- RE、NFA的表达能力并没有DFA更强,只是他们在一些语境中能够更简洁的方式表达
- NFA与DFA的等价性
- 如果两台机器识别同样的语言,则称它们是等价的
- 每一台NFA都等价于某一台DFA
- NFA到DFA的转换:子集构造法
- DFA是一种特殊的NFA
- 正则表达式与NFA的等价性
- RE->NFA: 汤姆孙转换法
- NFA->R: GNFA+状态消解
-
正则语言的泵引理:若A是一个正则语言,则存在一个数p(泵长度)使得,如果s是A中任一长度不小于p的字符串,那么s可以被分成3段,s=xyz,满足:1、对每一个 i ≥ 0 , x y i z ∈ A i\geq0,xy^iz\in A i≥0,xyiz∈A,2、 ∣ y ∣ > 0 |y|>0 ∣y∣>0, 3、 ∣ x y ∣ ≤ p |xy|\leq p ∣xy∣≤p
-
使用泵引理反证一个语言不是正则语言
-
语言类(一组语言的集合、例如正则语言)有两个重要属性:确定型(一个语言类的确定型是存在给定一个语言的正式表示,然后确定其是否具有一些属性(比如空属性))、闭包性(一个语言类在特定的运算中是否闭包,比如说正则语言在并、连接、星号下闭包)
第2章 上下文无关文法
由于正则语言只能存储少量信息,因此其不足以表达所有语言类,下面我们介绍一种表达能力更强的文法:上下文无关文法,正则语言是它的一个子集。上下文无关文法能够描述某些应用广泛的具有递归结构特征的语言。
2.1 上下文无关文法概述
-
替换规则(产生式)、变元、终结符、起始变元
-
根据文法获取一个字符串的替换序列称为派生。派生过程可用语法分析树描述。
-
上下文无关文法的概念形式化:上下文无关文法是一个4元组 ( V , ∑ , R , S ) (V,\sum, R,S) (V,∑,R,S), 其中V是变元集, ∑ \sum ∑是终结符集,R是有穷规则集,S是起始变元
-
A → w A\to w A→w是文法的一个规则,称uAv生成uwv
-
歧义性:如果文法以不同的方式产生同一个字符串,则称文法歧义地产生这个字符串。如果文法歧义地产生某个字符串,则称这个文法是歧义的
-
乔姆斯基范式:每一个规则形式都为 A → B C A\to BC A→BC 或者 A → a A\to a A→a
-
任意上下文无关语言都可以用一个乔姆斯基范式的上下文无关文法产生
- 首先,添加一个新的起始变元,然后,删除所有形如 A → ε A\to \varepsilon A→ε规则, 再删除所有形如 A → B A\to B A→B的单一规则。在删除时,要对文法做适当的弥补,以确保仍能产生相同的语言。最后,把所有留下来的规则转换成适当的形式
2.2 下推自动机
类似于非确定有穷自动机,但是下推自动机由一个栈,栈在控制器的有限存储量之外提供了附加的存储,使得下推自动机能够识别某些非正则语言。非确定型下推自动机在能力上与上下文无关文法等价
- 下推自动机的形式化定义:下推自动机时一个6元组
(
Q
,
∑
,
Γ
,
δ
,
q
0
,
F
)
(Q,\sum, \Gamma, \delta, q_0, F)
(Q,∑,Γ,δ,q0,F)
- 下推自动机与上下文无关文法的等价性
2.3 非上下文无关语言
关于上下文无关语言的泵引理:
如果A是 上下文无关语言,则存在数p(泵长度),使得A中任何一个长度不小于p的字符串s都能被划分成5段s=uvxyz且满足下述条件:
1、对于每一个 i ≥ 0 , u v i x y i z ∈ A i\ge 0, uv_ixy_iz \in A i≥0,uvixyiz∈A; 2、 ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0 ;3、 ∣ v x y ∣ ≤ p |vxy|\le p ∣vxy∣≤p
2.4 确定性上下文无关语言
第3章 丘奇-图灵论题
3.1 图灵机
- 图灵机与有穷自动机相似,但它有无限大容量的存储且可以任意访问内部数据。图灵机是一种更加精确的通用计算机模型,能模拟实际计算机的所有计算行为。
- 有穷自动机与图灵机之间的区别:图灵机在带子上既能读也能写;图灵机的读写头既能想左也能想右移动;图灵机的带子是无限长的;图灵机进入拒绝和接受状态将立即停机。(但由于存储的限制,现代计算机的’带子‘是有限的)
- 图灵机的形式化定义:图灵机是一个7元组 ( Q , ∑ , Γ , δ , q 0 , q a c c e p t , q r e j e c t ) (Q,\sum,\Gamma, \delta, q_0,q_{accept},q_{reject}) (Q,∑,Γ,δ,q0,qaccept,qreject),其中 ∑ \sum ∑是输入字母表, Γ \Gamma Γ是袋子字母表,包含特殊空白字符。运行图灵机可能出现三种结果:接受、拒绝、循环。
- 图灵机计算过程中,当前状态、当前带子内容和读写头当前文字组合在一起,称为图灵机的格局。如果图灵机能合法地从格局C1一步进入C2,则称格局C1产生了格局C2。图灵机的起始格局是 q 0 w q_0w q0w
- 如果一个语言能被某一图灵机识别,则称该语言是图灵可识别的。
- 如果一个语言能被某一图灵机判定,则称它是图灵可判定的。对所有输入都停机的图灵机称为判定器。
3.2 图灵机的变形
- 多带图灵机(可以类似于并行处理器)
- 多带图灵机等价于某一个单带图灵机
- 非确定型图灵机(可以类似于量子计算机)
- 非确定型图灵机等价于某一个确定型图灵机
- 原来的模型和它所有合理的变形有着同样的能力,也即识别相同的语言类
3.3 算法的定义
- 算法是解决特定问题求解决步骤的描述,是为实现某个任务而构造的简单指令集。算法等于图灵机算法。为什么说算法等于图灵机算法呢?原因在于图灵机可以刻画所有的算法。
第4章 可判定性
4.1 可判定语言
- A D F A , A N F A , A R E X , E D F A , E Q D F A , A C F G , E C F G A_{DFA},A_{NFA}, A_{REX},E_{DFA},EQ_{DFA},A_{CFG},E_{CFG} ADFA,ANFA,AREX,EDFA,EQDFA,ACFG,ECFG是可判定语言
4.2 不可判定性
- A T M , H A L T T M A_{TM}, HALT_{TM} ATM,HALTTM是不可判定语言
- 一个语言是可判定的,当且仅当它是图灵可识别的,也是补图灵可识别的
第5章 可归约性
- 归约旨在将一个问题转化成另一个问题,且使得可以用第二个问题的解来解第一个问题。其中第一个问题不可能比第二个问题更难。
- 根据将A_TM归约语言中,可以发现 H A L T T M , E T M , R E G U L A R T M , E Q T M HALT_{TM}, E_{TM}, REGULAR_{TM},EQ_{TM} HALTTM,ETM,REGULARTM,EQTM是不可判定的
- PCP问题是不可判定的
第7章 时间复杂性
计算复杂性理论------一门研究求解计算问题所需要的时间、存储量或者其他资源的理论
7.1 度量复杂性
- 大O和小o记法:大O记法指一个函数渐进地不大于另一个函数,小o记法指一个函数渐进地小于另一个函数
- 多项式界与指数界
- 时间复杂性类:TIME(t(n))为O(t(n))时间的图灵机判定的所有语言的集合
- 在可计算理论中,丘奇-图灵论题断言,所有合理的计算模型都是等价的,即它们所判定的语言类都是相同的。在复杂性理论中,模型的选择影响语言的时间复杂度,如在一个模型上线性时间内可判定的语言在另一个模型上就不一定是线性时间内可判定的
- 设t(n)是一个函数, t ( n ) ≥ n t(n)\ge n t(n)≥n。 则每一个t(n)时间的多带图灵机都和某一个 O ( t 2 ( n ) ) O(t^2(n)) O(t2(n))时间的单带图灵机
- 设t(n)是一个函数, t ( n ) ≥ n t(n)\ge n t(n)≥n。 则每一个t(n)时间的非确定型图灵机都和某一个 2 O ( t ( n ) ) 2^{O(t(n))} 2O(t(n))时间的单带图灵机
7.2 P类
- 问题的时间复杂度在确定型单带和多带图灵机上最多是平方或多项式的差异;在确定型和非确定型图灵机上,问题的时间复杂度最多是指数的差异
- 所有合理的确定型计算模型都是多项式等价的
- P是确定型单带图灵机在多项式时间内可判定的语言类
- 对于所有与确定型单带图灵机多项式等价的计算模型来说,P是不变的
- P大致对应于在计算机上实际可解的那一类问题
- 每一个上下文无关语言都是P的成员
7.3 NP类
- 多项式可验证性
- NP是具有多下昂是时间验证机的语言类
- 一个语言在NP中,当且仅当它能被某个非确定型多项式图灵机判定
- CLIQUE属于NP,SUBSET-SUM属于NP
7.4 NP完全性
- 如果一个问题存在多项式时间算法,那么所有NP问题都是多项式时间可解的,则称这个问题是NP完全的
- SAT问题是NP完全的、3SAT是NP完全的、顶点覆盖问题是NP完全的、背包问题是NP完全的
- 一个语言B是NP完全的,则满足:B属于NP;NP中每个A都多项式时间可归约到B