Lecture1
第一部分:计算理论概述
1.1 计算理论的目的
- 目标:开发与现实世界计算机相关的正式数学模型,用以解释计算的能力与局限性。
- 历史背景:
- 1930年代,艾伦·图灵(Alan Turing)研究了一种抽象机器,即图灵机(Turing Machine),用以破解由Enigma生成的代码。
- 1940年代和1950年代,出现了较为简单的机器模型,如有限自动机(Finite Automata)。
- 1950年代末,乔姆斯基(Noam Chomsky)开始研究形式文法(Formal Grammar)。
- 1969年,斯蒂芬·库克(Stephen Cook)定义了“难解问题”(NP-hard)。
1.2 计算的定义与问题
- 计算:计算是指可以通过数学公式定义的算法来解决问题。
- 核心问题:计算机能解决的是什么类型的问题?哪些问题是不可解的?
- 计算模型:
- 有限自动机:用于处理文本、编译器和硬件设计。
- 上下文无关文法:用于定义编程语言,涉及人工智能的领域。
- 图灵机:作为“真实”计算机的抽象模型,像个人电脑一样工作。
1.3 课程的重要性
- 本课程探讨计算机的基本能力与局限性,是计算机科学的核心内容。
- 理论方面:与编程语言设计、编译器、字符串搜索、模式匹配、计算机安全、人工智能等领域息息相关。
- 实践方面:该理论简化了复杂的计算机模型,使其成为简单的数学模型,帮助学生更好地理解计算机。
- 通过该课程可以提升问题解决能力,包括如何思考、证明、论证、解决问题、表达以及抽象。
1.4 符号表示法
- 语言符号表示法:形式语言用于精确定义语言、构建编译器、检查字符串是否属于特定语言,以及比较不同语言的描述是否一致。
- 分析工具:主要包括分析自然语言和编程语言的工具,帮助识别有效的句子或程序。
1.5 形式语言与文法
- 语言:由符号的集合和操作规则构成,是表达想法、事实和概念的系统。
- 字母表(Alphabet):有限、非空的符号集。
- 字符串(String):符号的有限序列。
- 语言(Language):由字母表构成的符号串的集合,遵循特定的语法规则。
示例
2.2 字符串操作
2.3 闭包运算
2.4 文法
2.5 文法的应用
2.6 语法树(Parse Tree)
示例
3.2 自动机的类型
例子:
2. 非确定性有限自动机(Nondeterministic Finite Automaton, NFA)示例
假设有一个 NFA 来识别包含子串 ab
的字符串,字母表为 {a, b}
。NFA 允许从一个状态有多种状态转换,并且可以从某些状态没有输入符号(即空移动)。
例子:
3. 图灵机(Turing Machine, TM)示例
假设有一个简单的图灵机,它执行两个二进制数字的加法(例如,输入 101 + 011
)。
工作过程:
例子:
3.3 自动机的组成部分
3.4 自动机的工作原理
3.5 图灵机的特点
3.6 自动机的应用
3.7 自动机模型之间的关系
示例
4.2 关系与函数(Relation and Function)
4.3 图(Graph)
4.4 证明技巧(Proof Techniques)
示例
- 字母表:∑ = {a, b}
- 字符串
第二部分:形式语言与文法
2.1 形式语言的定义
-
形式语言:由符号构成的字符串集合,按照特定的语法规则生成。形式语言广泛用于计算机科学、语言学和数学领域,来定义和分析语言的结构。
-
字母表(Alphabet):有限的符号集合,通常表示为 ∑。
- 例子:∑ = {a, b},则 abab, aaaabbba 是 ∑ 上的字符串。
-
字符串(String):由字母表中的符号组成的有限序列。
- 空字符串:没有任何符号的字符串,记作 ϵ。
- |ϵ| = 0
- ϵw = wϵ = w
-
|𝑤 1 𝑤 2| = | 𝑤 1| + | 𝑤2|
-
w = 𝑎 1 𝑎 2 … 𝑎 𝑛w 𝑅 = 𝑎 𝑛 … 𝑎 2 𝑎 1(reverse)A palindrome is a string w satisfying w = wR.
-
语言的表示方法:
- 语言 L 是字母表 ∑ 上字符串的集合。形式语言就是这些集合的子集。
-
串联(Concatenation):将两个字符串合并为一个字符串。
- 例子:若 w = ab, v = cd,则 wv = abcd。
-
逆序(Reverse):字符串符号顺序反转。
- 例子:w = abcd,w⁻¹ = dcba。
-
子串(Substr