一、计算(机械而有效的方式获取问题答案)理论:中心从数学转至计算机科学
1.1 核心问题:计算机的基本能力和限制是什么?
-
可计算性理论:究竟哪些问题,可通过计算解决?
计算和算法:一阶逻辑谓词可解决的话,就可以用数理逻辑一劳永逸的解决问题。有些问题是不存在算法的。
-
计算复杂性理论:解决可计算的问题,究竟需要多少资源?
到底是什么原因导致有些问题需要耗用大量资源才能解决?——可以对问题按照性质不同进行分类。
-
形式语言与自动机理论:为了研究计算,要使用哪些计算模型?
简单明确、功能强大。
1.2 自动机理论:研究抽象机器及其所能解决问题的理论
- 图灵机:计算机的理论抽象模型,它区分了哪些问题是可计算的,哪些是不可计算的。(P = NP ?)
- 有限状态机:数字电路、通信协议的设计验证方面等实际问题中有重要应用。
- 文法、下推自动机:在计算机语言设计和编译器的实现上发挥了重要的作用。
1.3 形式语言
如果说自动机是研究计算的模型,那么语言就是去研究计算的问题或实例。
形式语言:经数学定义的语言。
二、基本概念
2.1 形式语言中的基本概念:字母表 字符串 集合
-
字母表:符号(字符)的非空有穷集。(类似几何中的点、线,不再做过多定义。)
-
字符串:由某字母表中的符号组成的有穷序列。
-
空串:记为 ϵ \epsilon ϵ (\epsilon),有0个字符的串。
字母表 Σ \Sigma Σ 可以是任意的,但都有 ϵ ∉ Σ \epsilon \notin \Sigma ϵ∈/Σ .
-
字符串的长度:字符串中符号所占位置的个数,记为 | |
下面给出递归的定义:
若 字 母 表 为 Σ , 其 中 a ∈ Σ , w 和 x 是 Σ 中 字 符 组 成 的 字 符 串 若字母表为 \Sigma,其中 a \in \Sigma,w 和 x 是 \Sigma 中字符组成的字符串 若字母表为Σ,其中a∈Σ,w和x是Σ中字符组成的字符串
∣ w ∣ = { 0 , w = ϵ ∣ x ∣ + 1 , w = x a |w| = \begin{cases} 0,w=\epsilon \\ |x|+1,w=xa \end{cases} ∣w∣={0,w=ϵ∣x∣+1,w=xa -
字符串x和y的连接:将首尾相接得到新字符串的运算,记为 x ⋅ y , 或 x y x\cdot y,或xy x⋅y,或xy
不满足交换律,满足结合律。
-
字符串的n次幂, ( a b ) 2 ! = a b 2 (ab)^2 != ab^2 (ab)2!=ab2
-
集合A和B的连接:记为 A ⋅ B , 或 A B A\cdot B,或AB A⋅B,或AB
-
集合A的n次幂
A = { a } A 3 = A A A = { a } { a } { a } = { a 3 } A=\lbrace{a\rbrace} \\ A^3=AAA=\lbrace{a\rbrace}\lbrace{a\rbrace}\lbrace{a\rbrace}=\lbrace{a^3\rbrace} A={a}A3=AAA={a}{a}{a}={a3}那么,若 Σ \Sigma Σ 为字母表,则 $\Sigma ^n $ 为 Σ \Sigma Σ 上长度为n的字符串的集合。
注意:在学习程序语言设计的时候,需要明确区分字符和字符串,但是在形式语言自动机中,无需明确的进行区分,因为在上下文中它会极其明显。
-
克林闭包( K l e e n e C l o s u r e Kleene \quad Closure KleeneClosure)
由字母表中任意长度的字符组成的字符串;
Σ
∗
=
⋃
i
=
0
∞
Σ
i
=
Σ
0
⋃
Σ
1
⋃
Σ
2
⋃
Σ
3
.
.
.
\Sigma * =\bigcup_{i=0}^{\infty} \Sigma^i \\ = \Sigma ^0 \bigcup \Sigma ^1 \bigcup \Sigma ^2 \bigcup \Sigma ^3 ...
Σ∗=i=0⋃∞Σi=Σ0⋃Σ1⋃Σ2⋃Σ3...
- 正闭包( P o s i t i v e C l o s u r e Positive \quad Closure PositiveClosure)
Σ + = ⋃ i = 1 ∞ Σ i = Σ 1 ⋃ Σ 2 ⋃ Σ 3 . . . \Sigma ^+ =\bigcup_{i=1}^{\infty} \Sigma^i \\ = \Sigma ^1 \bigcup \Sigma ^2 \bigcup \Sigma ^3 ... \\ Σ+=i=1⋃∞Σi=Σ1⋃Σ2⋃Σ3...
显然有:
Σ
∗
=
Σ
+
⋃
{
ϵ
}
\Sigma * = \Sigma ^+ \bigcup \lbrace\epsilon\rbrace
Σ∗=Σ+⋃{ϵ}.
2.2 语言
定义:若 Σ \Sigma Σ 为字母表且 ∀ L ⊆ Σ ∗ \forall L \subseteq \Sigma * ∀L⊆Σ∗,则L称为字母表 Σ \Sigma Σ 上的语言。比如:
- 自然语言、程序设计语言
- 集合语言、数学语言
- 文字方式描述集合
关于语言:唯一重要的约束就是所有字母表都是有穷的。
2.3 自动机理论中的典型问题:成员性问题
判断给定的字符串 w w w 是否属于某个具体的语言 L L L ?即: w ∈ L ? w \in L? w∈L?
- 任何所谓问题,都可以转为语言成员性的问题;
- 语言和问题其实是相同的东西;
2.4 形式化证明方法
-
演绎法
-
归纳法
课上有两个例子讲了两种形式的归纳法:对长度的归纳和对结构的归纳
-
反证法