如何解决是否可以计算两个未完全指定的DFA的交集?
如果未完全指定要为其计算交集的两个DFA,则可能会出现可能仅包含两个DFA中的一个状态的状态。在进行相交的计算之前,是否需要正确或其他步骤?
解决方法
鉴于缺少某些状态转换的DFA,您始终可以通过添加新状态q dead 来将其转换为“完整” DFA,该状态不接受并且仅转换为本身,然后为每个丢失的过渡添加过渡到q dead 中。因此,从这个意义上讲,如果您未指定完整的DFA,则始终可以将DFA转换为“完整的” DFA,然后照常运行跨产品构造。
如果您要专门构建DFA,但是对于两个输入DFA的交集,则不需要这样做,因为以这种方式生成的所有状态都将彼此等效(它们都无法达到原始计算机中的接受状态)。形成相交的方法有两种,根据所采用的方法,您可以进行从小到大的调整:
- 一种算法仅从两个输入DFA计算所有可能的状态对,然后通过查看状态对转换到的位置来填充转换。如果您使用的是这种方法,则只需在输入DFA之一中缺少转换的每个状态的叉积中都没有转换,就可以模拟“其中一个自动机将在此处死亡”。
- 另一种算法使用DFS或BFS在叉积中仅构造 reachable 状态。在这种情况下,无需进行任何修改-如果您发现一对缺少过渡的状态,只需不添加任何后继状态即可。
另一方面,如果您正在做类似工会建设的工作,而您只需要接受两个状态之一,那么这些方法将行不通,因为您需要能够模拟“一个自动机死亡,另一个自动机仍在快乐地运行。”为此,添加显式死态是一种简单有效的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。