正则到NFA的转换

有穷自动机

作用:将输入的序列转换成一个状态图,方便之后的处理。通常被用在词法分析器中。
1)有穷自动机是一个识别器,对每个可能的的输入串简单的回答“是”或“否”。
2)有穷自动机分为两类:
a)不确定的有穷自动机(NFA)对其边上的标号没有任何限制。一个符号标记离开同一状态的多条变,并且空串ε也可以作为标号。
b)确定的有穷自动机(DFA)有且只有一条离开该状态,以该符号位标号的边。

不确定的有穷自动机

定义

NFA组成

正则式转NFA

这里看一个示例,下图为正则表达式 (a | b) * abb转换为NFA
不懂正则表达式的同学可以看这里

一个示例
然后我们来具体看看是正则式怎么完成这个转换的:
先一起来看几个简单的小例子,应该就懂了。
1
2
3
4
在这里插入图片描述
看到这,基本就懂了NFA的构建了。其实并不难,很简单。
这里再提一点,抛砖引玉一下,就是对于计算机来讲,构建NFA时通常采用的是自底向上的组合法,而人的逻辑通常是自顶向下的分解法。略微有些差异,感兴趣的同学可以研究讨论一下这一点,这里不做过多的提及。
做完转换图后,我们还是要把他变成一个表,因为只有变成一个表,才能有效的将数据录入的计算机内进行运算与处理。还是用之前的例子吧。
在这里插入图片描述
找出所有可以被匹配的字符即符号集合∑作为每一列的字段名,然后从起始态开始
1)状态0可以匹配a,匹配后可以到状态0或状态1,记为∅。匹配b只能得到状态0,记为{0}。
2)状态1可以匹配a,没有匹配到,记为∅。匹配b得到状态2,记为{2}。
3)状态0可以匹配a,没有匹配到,记为∅。匹配b得到状态3,记为{3}。
4)状态0可以匹配a,没有匹配到,记为∅。匹配b没有匹配到,记为∅。

至此,状态表建立完成。正则式(RE)转不确定型有穷自动机(NFA)完成。

  • 17
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值