计算理论导引学习笔记

预备知识

        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

00
开门0111

         有穷自动机的形式化定义:

         

               若有穷自动机M能够识别语言A,则定义为L(M)=A;

               定义:如果一个语言被一台有穷自动机识别,则称它是正则语言。

            

             对于DFA它的每一步都必须是非常明确的,读取字符后下一步必须是确定的,这与NFA有所不同,NFA会在下文中提到。

              对于给定DFA的状态图,让我们写出DFA能够识别的语言,我们应该先对各种状态进行分类,在不同的q中代表了什么含义,最后才能写出该自动机识别了什么样的语言。反之,在我们构造自动机的时候,我们也应该对语言进行剖析,将自动机的状态分类好,画出等量的状态,一个不多一个不少。

                如构造一个DFA识别含有001的字符串。

                这时候我们要先进行定状态,譬如没读到0为q,读到一个0为q0,读到两个0为q00,读到001为q001,因此我们就确定了四个状态,并且该自动机就在这四个状态中来回跳动直到识别。

正则运算 并 连接 星号  外加 交与补 的封闭性证明 但交不属于正则运算的范畴 

        对于上述类型,我们 先通过构造性证明 再进行正确性证明。

        对于连接运算以及星号运算,由于不能确定在什么地方把他们的输出分开,因此我们无法使用DFA来证明,我们在后文运用NFA来证明。

DFA 对于\cap运算,

证明:对于任意正则语言L1,L2,L1\capL2为正则语言。

        存在M1,M1两个自动机,使L1=L(M1),L2=L(M2),

        令 M1={Q1,\Sigma,\delta1,q1,F1},M2={Q2,\Sigma\delta2,q2,F2}

        构造一个自动机 DFA M ={Q,\Sigma,\delta,q0,F} 

        Q={(r1,r2)|r1∈Q1且r2∈Q2}

        \delta=\delta((r1,r2),x)=(\delta1(r1,x),\delta2(r2,x))

        q=(q1,q2)

        F=F1xF2={(r1,r2)|r1∈F1且r1∈F2}

        //以上为构造性证明,下述为正确性证明。

        对于任意的x∈L(M)\Leftrightarrow   \delta(q0,x)∈F \Leftrightarrow\delta1(q1,x)∈F1且 \delta2(q2,x)∈F2 \Leftrightarrow x∈L(M1)且x∈L(M2)

        因此L(M)=L1\capL2,证明结束。

DFA 对于\cup运算

         

证明:对于任意正则语言L1,L2,L1\cupL2为正则语言。 

        存在M1,M1两个自动机,使L1=L(M1),L2=L(M2),

        令 M1={Q1,\Sigma,\delta1,q1,F1},M2={Q2,\Sigma\delta2,q2,F2}

        构造一个自动机 DFA M ={Q,\Sigma,\delta,q0,F} 

        Q={(r1,r2)|r1∈Q1且r2∈Q2}

        \delta=\delta((r1,r2),x)=(\delta1(r1,x),\delta2(r2,x))

        q=(q1,q2)

        F=F1xF2={(r1,r2)|r1∈F1或r1∈F2}

        //以上为构造性证明,下述为正确性证明。

        对于任意的x∈L(M)\Leftrightarrow   \delta(q0,x)∈F \Leftrightarrow\delta1(q1,x)∈F1或者 \delta2(q2,x)∈F2 \Leftrightarrow x∈L(M1)或x∈L(M2)

        因此L(M)=L1\cupL2,证明结束。

NFA 

证明: 同样先进行构造性证明;

        设N1=(Q1,\Sigma,\delta1,q1,F1)识别A1

        N2=(Q2,\Sigma,\delta2,q2,F2)识别A2

        构造识别A1\cupA2的N=(Q,\Sigma\delta,q0,F)

        Q={q0}+Q1+Q2;q0为一个新状态,用来空移动达到两个NFA;

        F=F1\cupF2;

        对于状态转移函数的定义如下,

 

 

 DFA 对于补运算

        构造一台DFA M1 L=L(M1),M1=( Q,\Sigma,\delta,q0,F)

        另一台DFA M2=( Q,\Sigma,\delta,q0,Q-F) 

        对于任意x∈L(M1), \delta(q0,x)=f ∈ F \Leftrightarrow   \delta(q0,x)=f \notin F \Leftrightarrow x∈F \Leftrightarrow\notin Q-F;

        所以L(M2)=\Sigma * - L(M1);

        因此正则语言对于补运算封闭。

NFA对于连接运算证明

证明:

        设N1=(Q1,\Sigma,\delta1,q1,F1)识别A1

        N2=(Q2,\Sigma,\delta2,q2,F2)识别A2

        构造识别A1°A2的N=(Q,\Sigma\delta,q0,F)

        Q=Q1\cupQ2

        N的起始状态是N1的起始状态,

        N的F是N2的F2;

        

 

NFA对于星号运算证明

证明:设N1=( Q1,\Sigma,\delta1,q1,F1) 识别A1,构造识别A1*的N( Q,\Sigma,\delta,q,F)

Q={q0}\cupQ1,

F={q0}\cupF1,

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周好蠢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值