【发布时间】:2021-10-17 00:29:21
【问题描述】:
给定一个 DFA(确定性有限自动机),我可以使用什么算法来生成自动机接受的所有输入序列的流,按升序排序?
【问题讨论】:
给定一个 DFA(确定性有限自动机),我可以使用什么算法来生成自动机接受的所有输入序列的流,按升序排序?
【问题讨论】:
如果您可以访问 DFA 的属性(即状态、转换、开始状态、接受状态),那么让算法将该信息转换为图形,其中状态是顶点,转换是标记为边(用输入标记符号)。
从起始节点执行广度优先遍历,并允许重新访问节点。每当访问表示接受状态的节点时,输出与路径对应的字符串。要么在扩展搜索时跟踪形成的字符串,要么保持对路径中前一个节点的反向引用,以便可以从该链表重建字符串。
如果必须为相同大小的字符串排序输出,则确保节点的输出边按标签(符号)排序。
这不是一种节省内存的方法。
如果 DFA 接受无限数量的输入,则该算法将无限运行,但实际上它会一直运行到内存不足。
【讨论】: