【问题标题】:Find all matches of a DFA查找 DFA 的所有匹配项
【发布时间】:2021-10-17 00:29:21
【问题描述】:

给定一个 DFA(确定性有限自动机),我可以使用什么算法来生成自动机接受的所有输入序列的流,按升序排序?

【问题讨论】:

    标签: algorithm dfa


    【解决方案1】:

    如果您可以访问 DFA 的属性(即状态、转换、开始状态、接受状态),那么让算法将该信息转换为图形,其中状态是顶点,转换是标记为边(用输入标记符号)。

    从起始节点执行广度优先遍历,并允许重新访问节点。每当访问表示接受状态的节点时,输出与路径对应的字符串。要么在扩展搜索时跟踪形成的字符串,要么保持对路径中前一个节点的反向引用,以便可以从该链表重建字符串。

    如果必须为相同大小的字符串排序输出,则确保节点的输出边按标签(符号)排序。

    这不是一种节省内存的方法。

    如果 DFA 接受无限数量的输入,则该算法将无限运行,但实际上它会一直运行到内存不足。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 2012-03-10
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-06
      相关资源
      最近更新 更多