[英]Do not understand empty string in finite automata from regular expression
我正在阅读我的教科书(Michael Sipser的“计算理论导论”),其中一部分试图将正则表达式(ab U b)*转换为不确定的有限自动机。 这本书告诉我将表达式分开,并为每篇写一个NFA。 到达ab
时显示:
a
从第一状态进入第二 b
从第三状态变为最终接受状态。 试图理解第二步,我真的很困惑。 空字符串的目的是什么。 如果不存在会不正确吗?
您可能正在参考示例1.56,对吗? 首先,请记住他正在描述一个过程-将其视为一种算法,将始终在同一件事上执行。 他的意思是,如果您将正则表达式串联为PQ,则无论P和Q是什么,都可以通过将P的结束状态与空字符串连接到Q的开始状态来加入其AFN。
因此,在他的示例中,他正在创建一个AFN来表示ab AFNs来表示a和b,这些都是琐碎的,如下所示:
因此,为了同时加入两者,您只需遵循算法,将一个空字符串连接从第一个AFN的最终状态到第二个算法的起始状态,如下所示:
在这种特殊情况下,由于创建ab AFD非常容易,因此我们对其进行查看,并认为此空字符串不是必需的。 但是该过程适用于每个单独的连接-实际上,很明显,这等同于简单正确的AFD只是在强化他的说法:该过程有效。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.