C++ 如何创建DAWG?
如何创建?我发现有两种方法;一个是将trie转换为dawg,另一个是直接创建新的dawg?哪一个最容易?你能详细说明这两个词并提供一些链接吗?考虑DAWG的一种方法是将其作为单词列表中所有单词的最小状态DFA。因此,构建DAWG的传统算法如下:C++ 如何创建DAWG?,c++,data-structures,C++,Data Structures,如何创建?我发现有两种方法;一个是将trie转换为dawg,另一个是直接创建新的dawg?哪一个最容易?你能详细说明这两个词并提供一些链接吗?考虑DAWG的一种方法是将其作为单词列表中所有单词的最小状态DFA。因此,构建DAWG的传统算法如下: 首先,为单词集合构建一个trie 将一个新节点添加到trie,使所有输入上的边从自身到自身 对于trie中的每个丢失的字母转换,添加从开始节点到新的死节点的转换 (此时,对于这组单词,您现在有了一个(可能不是最小值)。) 使用最小化DFA 一旦你完成了这
希望这有帮助 考虑DAWG的一种方法是将其作为单词列表中所有单词的最小状态DFA。因此,构建DAWG的传统算法如下:
希望这有帮助 我正在为一本字典做一个字典?所以重点是我应该首先构建一个trie?如果是这样的话,它会变得更容易,因为我有一些在书中创建trie的参考资料?我还没有完全理解算法。一些视觉帮助将不胜感激,或者一个链接。提前谢谢。@UsmanAmjed-我没有任何DFA最小化算法的可视化,因为该算法有点复杂。然而,老实说,编写代码并不难。至于构建trytes,我强烈建议不要尝试编写一个DAWG,直到您觉得使用trytes很舒服为止。尝试比DAWG简单得多,并提供相同的性能保证,但内存开销要高得多。我建议先读一下,是的,我会的。我正在编一本大约50万字的字典;内存开销会很大吗?我是不是应该去找哥们?就遍历etc而言,trie与尝试有很大的不同吗?@UsmanAmjed-与本例中的DAWG相比,trie肯定会有巨大的内存开销,因此压缩单词会很有用。不过,根据应用程序的不同,最好使用哈希表或其他结构;自动更正和拼写检查功能我正在为字典构建一个dawg?所以重点是我应该首先构建一个trie?如果是这样的话,它会变得更容易,因为我有一些在书中创建trie的参考资料?我还没有完全理解算法。一些视觉帮助将不胜感激,或者一个链接。提前谢谢。@UsmanAmjed-我没有任何DFA最小化算法的可视化,因为该算法有点复杂。然而,老实说,编写代码并不难。至于构造尝试,我强烈建议