繁体   English   中英

两个确定性有限自动机的并集?

[英]The union of two determinstic finite automata?

我正在尝试解决一个必须为两种语言的结合创建DFA的问题。

这些是:{s是{a,b,c} * | s中的每个“ a”后面紧跟一个“ b”},然后

{s是{a,b,c} * | s中的每个“ c”都以“ b”开头

我认为我走在正确的道路上,但不确定是否完全正确。 有人可以看看吗?

这是一篇类似的文章 ,介绍了如何查找两个DFA的联合。

要理解的关键是,您必须同时运行两个DFA,或者通常必须在联合DFA中维护两个DFA的状态。


编辑:

您得到错误结果的原因是因为您的DFA不确定,并且它们实际上并不能决定您描述的语言。 我认为您对联盟的计算是正确的,但是您应该先修复DFA,然后再继续进行。

两种语言的交集由L1 ∩ L2 = not(not(L1) ∪ not(L2)) (根据de Morgans法则)。

DFA的补码( "not" )是通过将所有接受状态都更改为不接受而来的,反之亦然。 这将为您提供不确定的有限自动机(NFA)。

通过将您的两个DFA或NFA合并到一个同时接受两种语言的新NFA中来创建联合。 这是通过引入一个起始状态完成的,您可以从中进入两个NFA的起始状态,而无需消耗任何东西(仅消耗ε)。

完成所有这些操作后,您便拥有了NFA。 您可以使用常用方法将其简化为DFA。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM