正则表达式转换nfa再转dfa?nfa和dfa的转换函数有什么区别
各位老铁们,大家好,今天由我来为大家分享正则表达式转换nfa再转dfa,以及nfa和dfa的转换函数有什么区别的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
一、nfa终态集合为啥可以是空集
编译原理中DFA的终态和非终态区别为:包含不同、空集不同、状态不同。
1、DFA的终态:DFA的终态包含了NFA终点结点的状态集合。
2、DFA的非终态:DFA的非终态不包含NFA终点结点的状态集合。
1、DFA的终态:DFA的终态不可能为空集,因为NFA的终点一定会包含在某个DFA的状态集合中。
2、DFA的非终态:DFA有可能得到的非终态是空集,意味着所有的DFA的状态集合都包含了NFA的终点。
1、DFA的终态:DFA的终态每个状态之间属于同一个状态。
2、DFA的非终态:DFA的非终态每个状态之间不一定属于同一个状态。
二、nfa和dfa的转换函数有什么区别
1.DFA对于文本串里的每一个字符只需扫描一次,比较快,但特性较少;NFA要翻来覆去吃字符、吐字符,速度慢,但是特性丰富,所以反而应用广泛,当今主要的正则表达式引擎,如Perl、Ruby、Python的re模块、Java和.NET的regex库,都是NFA的。
2.只有NFA才支持lazy和backreference等特性;
3.NFA急于邀功请赏,所以最左子正则式优先匹配成功,因此偶尔会错过最佳匹配结果;DFA则是“最长的左子正则式优先匹配成功”。
4.NFA缺省采用greedy量词(见item4);
5.NFA可能会陷入递归调用的陷阱而表现得性能极差。
正则表达式转换nfa再转dfa和nfa和dfa的转换函数有什么区别的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
——————————————小炎智能写作工具可以帮您快速高效的创作原创优质内容,提高网站收录量和各大自媒体原创并获得推荐量,点击右上角即可注册使用
相关新闻推荐
- 正则表达式转换为3位数,正则表达式如何匹配全角数字并替换 2023-12-01
- 正则表达式转换nfa再转dfa?nfa和dfa的转换函数有什么区别 2023-12-01
- 正则表达式转意字符怎么输入,正则表达式匹配特殊符号的方法为 2023-12-01
- 正则表达式转字符串 UE中如何使用正则替换行中部分字符串 2023-12-01
- 正则表达式转化有穷自动机 dfa转化为正则表达式的两种方法 2023-12-01
- 正则表达式转化为nfa例题讲解(验证中文姓名的正则表达式是什么) 2023-12-01