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