预备知识
1.笛卡尔积:A×B={(x,y)|x∈A且y∈B}
假设集合A={a, b},集合B={0, 1, 2},
则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
笛卡尔积在后文构造自动机时具有重要意义。
2.字母表与字符串:∑ 为字母表——非空有穷集合。
字符串为字母表上的有穷序列。
∑^(*)表示∑上所有的有穷字符串。
由本书的商场自动门的例子引入,我们可以知道一个DFA(确定性有穷自动机,下文简称DFA),可以知道DFA由多个状态构成(>=1),并且在确定状态(开始&结束)后要发生转移。我们可以通过状态图以及状态转移表来进行表示。
前后无人 | 前有人 | 后有人 | 两边都有人 | |
关门 | 0 | 1 | 0 | 0 |
开门 | 0 | 1 | 1 | 1 |
有穷自动机的形式化定义:
若有穷自动机M能够识别语言A,则定义为L(M)=A;
定义:如果一个语言被一台有穷自动机识别,则称它是正则语言。
对于DFA它的每一步都必须是非常明确的,读取字符后下一步必须是确定的,这与NFA有所不同,NFA会在下文中提到。
对于给定DFA的状态图,让我们写出DFA能够识别的语言,我们应该先对各种状态进行分类,在不同的q中代表了什么含义,最后才能写出该自动机识别了什么样的语言。反之,在我们构造自动机的时候,我们也应该对语言进行剖析,将自动机的状态分类好,画出等量的状态,一个不多一个不少。
如构造一个DFA识别含有001的字符串。
这时候我们要先进行定状态,譬如没读到0为q,读到一个0为q0,读到两个0为q00,读到001为q001,因此我们就确定了四个状态,并且该自动机就在这四个状态中来回跳动直到识别。
正则运算 并 连接 星号 外加 交与补 的封闭性证明 但交不属于正则运算的范畴
对于上述类型,我们 先通过构造性证明 再进行正确性证明。
对于连接运算以及星号运算,由于不能确定在什么地方把他们的输出分开,因此我们无法使用DFA来证明,我们在后文运用NFA来证明。
DFA 对于运算,
证明:对于任意正则语言L1,L2,L1L2为正则语言。
存在M1,M1两个自动机,使L1=L(M1),L2=L(M2),
令 M1={Q1,,
1,q1,F1},M2={Q2,
,
2,q2,F2}
构造一个自动机 DFA M ={Q,,
,q0,F}
Q={(r1,r2)|r1∈Q1且r2∈Q2}
=
((r1,r2),x)=(
1(r1,x),
2(r2,x))
q=(q1,q2)
F=F1xF2={(r1,r2)|r1∈F1且r1∈F2}
//以上为构造性证明,下述为正确性证明。
对于任意的x∈L(M)
(q0,x)∈F
1(q1,x)∈F1且
2(q2,x)∈F2
x∈L(M1)且x∈L(M2)
因此L(M)=L1L2,证明结束。
DFA 对于运算
证明:对于任意正则语言L1,L2,L1L2为正则语言。
存在M1,M1两个自动机,使L1=L(M1),L2=L(M2),
令 M1={Q1,,
1,q1,F1},M2={Q2,
,
2,q2,F2}
构造一个自动机 DFA M ={Q,,
,q0,F}
Q={(r1,r2)|r1∈Q1且r2∈Q2}
=
((r1,r2),x)=(
1(r1,x),
2(r2,x))
q=(q1,q2)
F=F1xF2={(r1,r2)|r1∈F1或r1∈F2}
//以上为构造性证明,下述为正确性证明。
对于任意的x∈L(M)
(q0,x)∈F
1(q1,x)∈F1或者
2(q2,x)∈F2
x∈L(M1)或x∈L(M2)
因此L(M)=L1L2,证明结束。
NFA
证明: 同样先进行构造性证明;
设N1=(Q1,,
1,q1,F1)识别A1
N2=(Q2,,
2,q2,F2)识别A2
构造识别A1A2的N=(Q,
,
,q0,F)
Q={q0}+Q1+Q2;q0为一个新状态,用来空移动达到两个NFA;
F=F1F2;
对于状态转移函数的定义如下,
DFA 对于补运算
构造一台DFA M1 L=L(M1),M1=( Q,,
,q0,F)
另一台DFA M2=( Q,,
,q0,Q-F)
对于任意x∈L(M1), (q0,x)=f ∈ F
(q0,x)=f
F
x∈F
x
Q-F;
所以L(M2)= - L(M1);
因此正则语言对于补运算封闭。
NFA对于连接运算证明
证明:
设N1=(Q1,,
1,q1,F1)识别A1
N2=(Q2,,
2,q2,F2)识别A2
构造识别A1°A2的N=(Q,,
,q0,F)
Q=Q1Q2
N的起始状态是N1的起始状态,
N的F是N2的F2;
NFA对于星号运算证明
证明:设N1=( Q1,,
1,q1,F1) 识别A1,构造识别A1*的N( Q,
,
,q,F)
Q={q0}Q1,
F={q0}F1,