Article
计算理论-CH01-语言与字母表
计算理论-CH01-语言与字母表,待补充摘要。
计算理论基础:字母表、字符串与语言
在学习计算理论(Theory of Computation)时,自动机、上下文无关文法及图灵机等核心工具,本质上都是为了识别、转换或生成某种特定的“语言”。为了能够精确地讨论这些机器的行为,我们必须首先建立一套严密的数学基石。
本讲义将按照“字符 字符串 语言 判定系统”的逻辑顺序,带你彻底攻克计算理论的第一道关卡。
知识图谱与核心脉络
[ 字母表 (Alphabet) ] ---> 允许使用的基本符号集合 (Σ)
│
▼ (通过按顺序拼接)
[ 字符串 (String) ] ---> 字符的有限序列 (w),属于 Σ*
│
▼ (通过设定筛选规则)
[ 语言 (Language) ] ---> 满足特定规则的字符串集合 (L ⊆ Σ*)
第一部分:字母表 (Alphabet)
1. 概念引入
在日常生活中,我们有英文字母表、汉语拼音等。而在计算理论中,字母表(Alphabet)是所有允许使用的基本符号的有限非空集合。我们通常用希腊字母 (Sigma) 来表示。
2. 数学定义
字母表 必须满足两个基本特征:
-
有限性(Finite):包含的符号数量是有限的。
-
非空性(Non-empty):至少要有一个符号。
3. 经典示例
-
二进制字母表: (计算机最底层的字母表)
-
英文小写字母表:
-
十进制字母表:
-
自定义抽象符号表: 或
考试重点:字母表里的“符号”不一定局限于单字符,关键在于它们是组成更高级对象的“最小积木”。
第二部分:字符串 (String)
1. 概念引入
有了积木(符号),我们就可以把它们拼成更长的一串。字符串(String)就是由字母表 ****中的符号按顺序连接而成的有限序列。
2. 空字符串 (Empty String)
在计算理论中,有一个极为特殊的字符串——空字符串,记作 (Epsilon,有些教材也写作 )。
-
定义:不包含任何符号的字符串。
-
理解:可以类比为数字中的“0”或集合中的空集 ,但注意它是一个字符串。
3. 补充考点:字符串的属性与运算
为了应对考试,我们需要补充笔记中未提及的几个高频考点:
(1) 字符串的长度 (Length)
字符串 中所包含符号的个数,记作 。
-
若 ,则 。
-
对于空字符串,恒有 。
(2) 字符串的连接 (Concatenation)
若 且 ,则它们的连接记作 。
- 性质: (任何字符串与空字符串连接,保持原样)。
(3) 字符串的幂运算 (Powers)
将同一个字符串连续连接若干次:
-
-
-
例题:若 ,则 。
第三部分:克莱尼星号与闭包 ( 与 )
1. 克莱尼星号 (Kleene Star)
定义:由字母表 能够拼出来的所有可能字符串(包括空字符串 )*_构成的集合。 数学表达: 其中 ,,,依此类推。
示例
设 ,则:
2. 正闭包 (Positive Closure)
定义:由字母表 能够拼出来的所有非空字符串构成的集合(即排除空字符串 )。
🚨 易错点避坑指南: 是否属于 ?
考试真题模拟: 设 ,请问字符串 是否属于 ?
-
错误解答:属于,因为它是由字符组成的。
-
正确解答:不属于 ()。
-
原因剖析: 的积木盒里只有 和 。而字符串 中出现了一个不在字母表中的符号 。既然原料不足,我们就不可能用盒里的积木拼出 。 因此,。
-
记忆口诀:只要字符串里出现了一个不在当前字母表中的字符,该字符串就绝对不属于 。
第四部分:语言 (Language)
1. 概念引入与数学定义
语言(Language) 其实就是字符串的集合。 在数学上,一个语言 被定义为 的一个子集:
-
语言可以包含有限个字符串,也可以包含无限个字符串。
-
空语言:不包含任何字符串的语言,记作 (注意:,前者不含任何元素,后者含有一个元素即空字符串)。
2. 集合描述符 的考点透析
在考试中,语言通常采用集合构建器的形式给出:
💡 学长提醒:不要与条件概率混淆 这里的竖线“”(或冒号“”)读作 “满足…的条件” (such that),表示只有当字符串 满足竖线后面的条件时,它才能进入集合 。这与条件概率 中的“在…发生的条件下”有着完全不同的数学含义。
第五部分:核心实战——如何判断字符串是否属于语言?
考试中最经典的题型便是:给定一个语言定义 和一个字符串 ,判断 是否成立?
我们将其拆解为一套四步判定法。
📋 判定标准四步法
-
明确字母表 :看清当前上下文允许使用哪些符号。
-
前置合法性检查:判断待测字符串 是否完全由 中的字符组成(即 )。若否,直接判定 。
-
解读语言规则:仔细翻译集合定义中给出的限制条件(如:长度、首尾字符、特定字符数量等)。
-
条件匹配验证:逐个检查 是否完全符合这些规则。若全部满足,则 ;否则 。
✍️ 经典例题全解析(包含笔记精选及拓展题)
【例题 1】有限集合匹配
题目:设 ,定义语言 。 请判断以下字符串是否属于 :
解答过程:
-
对于 :它直接出现在集合 的显式列举中,因此 。
-
对于 :尽管 ,但它没有出现在 中,因此 。
-
对于 :虽然由 组成,但不在 中,因此 。
【例题 2】长度条件约束
题目:设 ,定义语言 。 请判断以下字符串是否属于 :
解答过程:
-
对于 :。因为 是偶数,所以 。
-
对于 :。因为 是偶数,所以 。
-
对于 :。因为 是奇数,所以 。
【例题 3】首尾字符特征
题目:设 ,定义语言 。 请判断字符串 是否属于 。
解答过程:
-
合法性检查: 仅包含 和 ,因此 。
-
规则检查:该语言要求“以 开头”。
-
比对: 的第一个字符是 ,满足条件。
- 结论:。
【例题 4】特定字符计数
题目:设 ,定义语言 。 请判断字符串 是否属于 。
解答过程:
-
合法性检查:。
-
规则检查:要求“恰好包含两个 ”(即 的个数等于 2)。
-
计数比对:在 中,字符 出现了 次(分别在第 和第 个位置),字符 出现了 次。
- 结论:满足数量条件,因此 。
【例题 5】多条件组合(综合演练)
题目:设 ,定义语言 。 请判断字符串 是否属于 。
解答过程:
-
合法性检查:,通过。
-
拆解条件:
-
条件 A:以 开头。
-
条件 B:以 结尾。
-
-
比对条件 A: 的前两个字符为 ,满足。
-
比对条件 B: 的最后两个字符为 ,满足。
- 结论:由于同时满足条件 A 和条件 B,因此 。
📊 快速判定速查表
| 语言定义 | 待测字符串 | 是否属于 | 原因解析 |
|---|---|---|---|
| 所有以 结尾的字符串 | 不属于 () | 最后一个符号是 | |
| 所有长度为偶数的字符串 | 属于 () | 长度为 4,4 是偶数 | |
| 所有恰好包含两个 的字符串 | 不属于 () | 包含 3 个 ,不满足“恰好两个” | |
| 所有至少包含一个 的字符串 | 不属于 () | 包含 0 个 ,不满足“至少一个” | |
| 所有由 组成的字符串 | 不属于 () | ,根本不是合法的输入串 |
第六部分:承前启后——这些基础与后续课程有什么联系?
你现在掌握的“判断字符串是否属于某语言”是整个计算理论课程的核心灵魂。后续你将要学到的所有进阶工具,其本质都是围绕这个概念展开的:
┌─────── DFA / NFA (有限自动机:识别正则语言)
├─────── PDA (下推自动机:识别上下文无关语言)
识别 w 是否属于 L ──┼─────── Regex (正则表达式:描述语言的规则)
└─────── Turing Machine (图灵机:识别可计算语言)
-
DFA / NFA (确定性/非确定性有限自动机):这就是一个“机器判定系统”。你输入一个字符串,机器在内部状态流转,最后停在“接受状态”则表示 ,停在“拒绝状态”则表示 。
-
正则表达式 (Regular Expression):一种用来高效描述语言 的数学表达式。例如,用 描述所有“以 开头且以 结尾的字符串”。
-
图灵机 (Turing Machine):计算理论的核心巅峰。它通过读写带判定任何复杂语言的归属问题,并据此定义了什么是“可计算的”。
掌握了字母表、字符串和语言的基础,你就已经拿到了进入计算理论殿堂的入场券!