首页 > 其他 > 详细

NFA到DFA的转换

时间:2020-06-03 23:37:45      阅读:119      评论:0      收藏:0      [点我收藏+]

一、有限自动机

1、不确定的有限自动机(NFA)

  • 只要有一条路径能够使一个字符串从初始态到达接收态就称这个字符串是接收的
  • 匹配结果,是不确定的
  • 慢,有Backtrack(回溯)
  • 基于表达式
  • 某时刻可能处于一组状态之中的任何一个,因此记录所有的可能路径

2、确定的有限自动机(DFA)

  • 匹配速度,是确定的
  • 快,无Backtrack(回溯)
  • 基于文本
  • 在任意时刻必定处于某个确定状态

二、NFA到DFA转换

1、根据RE构造NFA

技术分享图片 技术分享图片

2、NFA转为DFA

又称NFA的确定化

技术分享图片

技术分享图片

技术分享图片

状态转换表

注:标有*为接收状态 带ε

边记得增加一列

  1. NFA的开始状态集合为[0],将NFA将接收的符号代入当前状态,最长子串原则,得出新产生的状态
  2. 新产生的状态作为将来要列出的状态重复1中步骤
  3. 直至新产生的状态集合中无新集合时结束
  4. 将第一列中将来要列的状态重命名

转换为DFA

  1. S0为初始状态,根据状态转换表中NFA接受的符号产生的集合到重命名中寻找匹配的状态
  2. 画图,根据新的圈重复1中步骤,直至结束
  3. 重命名中标有*的接受态要用双圈标出

 

技术分享图片

技术分享图片

计算ε-closure(T):

技术分享图片

 

NFA到DFA的转换

原文:https://www.cnblogs.com/wkfvawl/p/13040653.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!