【学习笔记】计算理论

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

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


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

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

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

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

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


1 自动机与语言

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

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

1.1 有穷自动机与正则语言

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

1.1.1 确定性有穷自动机DFA

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

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

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

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

马尔科夫链


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

image

计算的形式定义:

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


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

image正则语言对正则运算封闭,也对补运算、交运算封闭(即对A,B两个正则语言做并、连接、星号、补或交运算之后仍然是正则语言)

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

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

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

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

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


1.1.2 非确定性有穷自动机NFA

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

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


计算树

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

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


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

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


确定性自动机是真实的

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


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

image计算的定义:

image


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

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


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

1.1.3 正则表达式

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


正则表达式形式定义:

image是一个归纳定义


省略最外层括号

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

image

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

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

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

1.2.1 上下文无关文法

文法 文法(生成的)语言

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

变元  非终结符  初始符

非变元 终结符

派生 语法分析树


上下文无关文法CFG定义

image一步生成 任意步生成(派生,推导)

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


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

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

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

定理:CFG对并运算封闭

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


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

非确定性


乔姆斯基范式CNF

image等价:两个文法生成相同语言

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

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

1.2.2 下推自动机PDA

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

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

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


形式定义,6元组

image

PDA计算

image

另一个例子

image

posted @ 2020-06-22 10:23  九命猫幺  阅读(1676)  评论(0编辑  收藏  举报