加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

正规表达式转换成NFA,最终化简为DFA

(2013-01-21 13:21:20)
标签:

杂谈

分类: Linux

 

 

 

http://s13/mw690/697b9689gd3c5a70036bc&690

 

 

 

确定化

 

0

1

{X,1,Y}

{1,Y}

{2}

{1,Y}

{1,Y}

{2}

{2}

{1,Y}

φ

φ

φ

φ

 

给状态编号:

 

0

1

0

1

2

1

1

2

2

1

3

3

3

3

 

 

http://s16/mw690/697b9689gd3c5a980b38f&690

 

 

 

最小化:

1、将所有状态作为一个大的集合:{0123}

2、将这个集合进行划分,如{012}{3}这样子也是可以的。

3、划分后按照这个集合中的状态取下一个元素为0的时候,{012}这个集合根据上面的(给状态编号)表格结果状态有111。 这个是符合的,但是取1的时候,结果状态有223 不一致,所以必须对这个集合再次进行划分,把导致不一致的拆开。所以有了{01}{2}这两个集合。

4、最后加上第一个划分的{3},总共有三个集合{01}{2}{3},构成三个新的状态0,1,2

当然,前面的话必须从整个大地集合开始划分,即{0\1\2\3}把取一个元素的时候不一致结果的区分出来。

 

5、最后由于{3}这个状态时不可达的,为空的,所以将这个状态删除。

 

 

http://s8/mw690/697b9689gd3c5ac28feb7&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有