子集构造法NFA转换成DFA

教材《编译原理》(龙书)第2版

关于这部分,教材在P94页有说明,但是我觉得不容易理解,下面通过两个例题来理解一下。

目录

例题一:

例题二:

PS:

评论区:

第一次: 

第二次:

第三次:

第四次:


例题一:

这一题比较简单,我们直接从答案找解题方法

第一步:要根据NFA画出这个表格,可能有些模糊,表头分别为I,Ia,Ib,状态是对I这一列自定义的状态名称

下面我们来说一下第一行的三项如何得出:(S就是开始状态)

 先以S开始,经过任意个ε得到的结点就是第一个I,这道题就是{X, 1,2},

然后将{X,1,2}中的每一个字符经过a (中间可以有ε)后得到的结点加起来,

X的Ia={1,2}, 1的Ia={1,2}, 2的Ia是空集,所以这一行的Ia={1,2}。

后面的Ib也是一样,只不过是经过b后得到的结点的集合.

也就是说I的第一行第一列{X, 1,2},是从开始符号经过ε得到的集合,而Ia,Ib是集合中每个结点分别经过a,b得到的集合的并集。

第二行的第一列I,是第一行的Ia,如果仔细观察,就可以发现:第一列都是将前面的Ia和Ib作为I计算新的Ia和Ib。

当然要注意重复的状态集合,就没有必要再作为I写一次了。

直到把所有的新状态都作为I写一遍,这个表就完成了。

第二步:根据表格画出DFA

将这些集合依次标号,这道题是{X,1,2}为X,{1,2}为1, {1,2,3}为2,{1,2,Y}为3,根据上面那个表就

  • 58
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值