非确定型有限自动机变换为确定型有限自动机

      最近在看编译原理这本书,看的我想去吃掉它的冲动。可谓是百般难受,但还是有所收获的。

      下面是我对非确定型有限自动机变换为确定型有限自动机的理解:

      1.先画语法树.

      2.用Thompson算法构造正规式的NFA(非确定性有限自动机)。

      3.构造出正规式的状态转换矩阵然后把NFA转化为DFA(确定性有限自动机)。

      如:正规式(a|c)* ac

语法树:

          M(R3)、

        由图可知最底层是a b

           我们可以很容易得到:

       注: So 为初态 F为终态

         ------>So--a--->F   M(R1) 

         ------>So--c -->F   M(R2)

         ------>So--a--->F   M(R6)

         ------>So--c--->F   M(R8)

    还剩下 M(R3)、 M(R4)、 M(R5)、 M(R7)、 M(R3)、M(R9)等

     由语法树可知:

     M(R3) = R1| R2

     由Thompson算法规则(2)对于正规式p|q  ,构造合成的NFA M(p|q)。有

        

         所以: 我们可以知道:M(R3)

        

        由Tompson算法规则(4) 对于括起来的正规式(p) 使用M(p) 本身作为它的NFA

         所以R(4)= R(3)

         由Tompson 算法规则(3) 对于正规式P* 构造合成的NFA M(P*) 如图:

       

        所以: M(R5)= R4*:

            M(R5):

       

         

        所以:最终的NFA如图:

          

   

   到此NFA结束!

   然后 我们把 所有的 初态找出来(所谓的初态就是不经过任何字母都能到达的状态)  

    初态 A{0 1 2 3 7}

     经过a 能得到的集合B{1,2,3,4,6,7,8}

    经过c能得到的集合C{5,6,7,1,2,3}

经过a能得到的集合 还是为 B 

经过c能得到的集合  为 D{9,5,6,7,1,2,3}

C

经过a能得到的集合 B

经过c能得到的集合 C

D

经过a能得到的集合 B

经过c能得到的集合 C

 所以:

      

      到此结束。

     



  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值