正则表达式转换nfa再转dfa?nfa和dfa的转换函数有什么区别

发布时间:2023-12-01 04:13:33
发布者:网友

各位老铁们,大家好,今天由我来为大家分享正则表达式转换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的转换函数有什么区别的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

——————————————小炎智能写作工具可以帮您快速高效的创作原创优质内容,提高网站收录量和各大自媒体原创并获得推荐量,点击右上角即可注册使用

小炎智能写作