[英]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.