1. 语言类的定义
1.1 正则语言
定义:
如果一个语言可以被一台有穷自动机识别,则称它是正则语言。
有穷自动机是一个五元组 ( Q , Σ , δ , q 0 , F ) (Q,Σ,δ,q_0,F) (Q,Σ,δ,q0,F),其中:
- Q Q Q是一个有穷集合,称为状态集。
- Σ Σ Σ是一个有穷集合,称为字母集。
- δ : Q × Σ → Q δ:Q×Σ→Q δ:Q×Σ→Q是转移函数。
- q 0 ∈ Q q_0∈Q q0∈Q是起始状态。
- F ⊆ Q F⊆Q F⊆Q是接受状态集。
举例: L ( M ) = L(M) = L(M)= { w ∣ w w | w w∣w是空串或以0结束}
1.2 上下文无关语言
定义:
与上下文无关文法相关的语言或者被下推自动机PDA识别的语言称为上下文无关语言。
上下文无关文法是一个四元组 ( V , Σ , R , S ) (V,Σ,R,S) (V,Σ,R,S),其中:
- V V V是一个有穷集合,称为变元集。
- Σ Σ Σ是一个与 V V V不相交的有穷集合,称为终结符集。
- R R R是一个有穷规则集,每条规则由一个变元和一个由变元及终结符组成的字符串构成。
- S S S是起始变元。
举例:{ 0 n 1 n ∣ n ≥ 0 0^n1^n | n ≥ 0 0n1n∣n≥0}
1.3 图灵机
定义:
一台图灵机是一个七元组,{
Q , Σ , Q , Σ , Q,Σ, ? , δ , q 0 , q a c c e p t , q r e j e c t δ , q_0 , q_{accept} , q_{reject} δ,q0,qaccept,qreject},其中: Q , Σ , Q , Σ , Q,Σ, ? 都是有限集合,且满足:
- Q Q Q是状态集合。
- Σ Σ Σ是输入字母表,其中不包含特殊的空白符☐。
- ? 是带字母表,其中☐∈? 且Σ ∈? 。
- δ δ δ: Q × Q × Q× ? → Q × → Q × →Q× ? × × × {L,R}是转移函数,其中{L,R}表示读写头是向左移还是向右移。
- q o ∈ Q q_o∈Q qo∈Q是起始状态。
- q a c c e p t q_{accept} qaccept是接受状态。
- q r e j e c t q_{reject} qreject是拒绝状态。 q a c c e p t ≠ q r e j e c t q_{accept} ≠ q_{reject} qaccept=qreject
1.4 图灵可判定语言
定义:
如果一个语言能被某一图灵机判定,则称该语言是图灵可判定的。
举例: A C F G = A_{CFG} = ACFG= {
< G , w > ∣ G 是 C F G , w 是 串 , G 派 生 w <G,w> | G是CFG,w是串,G派生w <G,w>∣G是CFG,w是串,G派生w}
1.5 图灵可识别语言
定义:
如果一个语言能被某一图灵机识别,则称该语言是图灵可识别的。
举例: A T M A_{TM} ATM
1.6 非图灵可识别语言
定义:
如果一个语言不能被任何图灵机识别,则称该语言是图灵不可识别的。
举例: ~ A T M ~A_{TM} ~ATM
2. 封闭性证明
2.1 证明正则语言类在并、连接、星号运算下封闭
-
并运算
构造两个有穷自动机 N 1 N 2 N_1N_2 N1N2,分别识别两个正则语言,构造第三个有穷自动机 N N N识别它们俩的并。其中:
N N N的起始状态是新的。
N N N的状态集是它们俩状态集的并再加上 N N N的起始状态。
N N N的接受状态集是它们俩的接受状态集合的并。
只要其中一个有穷自动机接受则接受。 -
连接运算
构造两个有穷自动机 N 1 N 2 N_1N_2 N1N2,分别识别两个正则语言,构造第三个有穷自动机 N N N识别它们俩的连接。其中:
N N N的状态集是 N 1 N 2 N_1N_2 N1N2的状态集的并。
N N N的起始状态是 N 1 N_1 N1的起始状态, N N N的接受状态集是 N 2 N_2 N2的接受状态集。 -
星号
构造一个识别正则语言 A 1 A_1 A1</