证明思路
M1M1和M2M2是两个DFA,且L(M1)=A,L(M2)=A2L(M1)=A,L(M2)=A2,现在要证明存在一个DFAMM可以recognizes (我们将会找到这样一个DFA,而不仅仅是存在),即L(M)=A∪A2L(M)=A∪A2。我们找这样一个DFA的方法是通过模拟simulate。但是在读到一个字符时,我们的DFA要往哪个状态转移呢?DFA不允许我们遇到一个字符可以有多条路走(所以之后我们用NFA证明会很简单),那怎么办呢?这时候,聪明的人用二元组的方式表示转移状态,即(ri,rj)(ri,rj),其中,ri∈Q1,rj∈Q2ri∈Q1,rj∈Q2。这样子,MM的状态集,’××’表示笛卡尔积。那接下来就容易证明了。
证明
设, M1=(Q1,∑1,δ1,q1,F1)M1=(Q1,∑1,δ1,q1,F1); L(M2)=A2L(M2)=A2, M2=(Q2,∑2,δ2,q2,F2)M2=(Q2,∑2,δ2,q2,F2),我们构造M=(Q,∑,δ,q0,F)M=(Q,∑,δ,q0,F),使得L(M)=A1∪A2L(M)=A1∪A2,其中:
1. Q={(r1,r2)∣r1∈Q1 and r2∈Q2}Q={(r1,r2)∣r1∈Q1 and r2∈Q2}
2. 这里我们假设∑=∑1=∑2∑=∑1=∑2,如果∑1≠∑2∑1≠∑2,我们只要使∑=∑1∪∑2∑=∑1∪∑2,并Q1=Q1∪rerror1Q1=Q1∪rerror1,Q2=Q2∪rerror2Q2=Q2∪rerror2,δ1(r,a)=rerror1δ1(r,a)=rerror1, r∈Q1r∈Q1, a∉∑1a∉∑1,δ2(r,a)=rerror2δ2(r,a)=rerror2, r∈Q2r∈Q2, a∉∑2a∉∑2
3. δ(r1,r2),a)=(δ1(r1,a),δ2(r2,a))δ(r1,r2),a)=(δ1(r1,a),δ2(r2,a)), 其中(r1,r2)∈Q and a∈∑(r1,r2)∈Q and a∈∑
4. q0=(q1,q2)q0=(q1,q2)
5. F={(r1,r2)∣r1∈F1 or r2∈F2}F={(r1,r2)∣r1∈F1 or r2∈F2}
证毕。
因为上面证明是简单直白的,所以该证明的正确性读者只需模拟simulate上述过程就知道了,不再证明其正确性。