【问题标题】:Best way to construct a Directed Acyclic Word Graph (DAWG)构建有向无环词图 (DAWG) 的最佳方法
【发布时间】:2013-10-15 18:55:57
【问题描述】:

我目前正在研究 DAWG,但我还没有找到一种构建无环自动机的好方法。

所以基本上,我想做的是:

它基本上是一棵树,其中状态的数量减少了。我会将它与数字一起使用,但概念完全相同。

我想知道最快的方法是什么,我的实际计划是构建左图所示的图形,然后查看低级别的状态,并在它们相似时合并它们。

虽然,我不确定这是不是最好的方法,但有没有人知道如何构建它。

问候。

【问题讨论】:

标签: c algorithm data-structures dawg


【解决方案1】:

DAWG 是特定集合的最小状态有限自动机(如果它们存储字符串)。您可以通过将您拥有的特里树视为非最小有限自动机并在其上运行标准 DFA 最小化算法来构建它们。这可能是构建 DAWG 的最简单方法,也可能是最快的方法。

希望这会有所帮助!

【讨论】:

  • 嗯,是的,但是有多种最小化算法,我宁愿“自己”构建 DAWG,因为有时我需要将它存储在一个数组中。我实际上正在寻找一个伪代码来获取树 -> DAWG。
  • @Anoracx- 我想我对你在问什么感到困惑。 trie->DAWG 步骤是 DFA 最小化步骤。 “自己构建 DAWG”是什么意思?
  • 好吧,我从阅读维基百科中认为 DAWG (DAFSA) 是一种由普通树 / DFA 构建的树。所以我实际上在想会有一个特定的算法来做到这一点。而不仅仅是最小化算法。所以当我说我想自己做时,我实际上是在寻找一种将其从 DFA 转换为 DAFSA (DAWG) 的方法,以及从底层开始的想法是否是个好主意。
  • @Anoracx- 啊,我明白了。据我所知,由于在数学上您正在最小化 DFA,因此您所做的任何 算法都将是 DFA 最小化算法,我担心的是,如果您尝试自己执行此操作,那么您要么 (a) 重新发明轮子,但效率较低,要么 (b) 以错误的算法告终。
  • @templatetypedef 然后人们将永远无法再次学习如何重建这些数据。这是我“避免重新发明轮子”的唯一缺陷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多