【发布时间】:2015-02-16 11:52:28
【问题描述】:
我想为动态字符串实现一个字符串查找数据结构,它将支持高效的搜索和插入。目前,我正在使用 trie,但如果可能的话,我想减少内存占用。 This Wikipedia article 描述了一个 DAWG/DAFSA,通过压缩后缀显然可以节省大量空间。然而,虽然它会清楚地测试一个字符串是否合法,但我不清楚是否有任何方法可以排除非法字符串。例如,使用单词“cite”和“cat”,其中“t”和“e”是终端状态,DAWG/DAFSA 将如下所示:
c
/ \
a i
\ /
t
|
e
并且“cit”和“cate”将被错误地识别为没有一些元信息的合法字符串。
问题:
1) 是否有一种首选方法可以在 DAWG/DAFSA 中存储有关字符串/路径(例如合法性)的元信息?
2) 如果 DAWG/DAFSA 不符合要求(高效搜索/插入和存储元信息),最好使用什么数据结构?最小的内存占用会很好,但也许不是绝对必要的。
【问题讨论】:
-
在 DAWG-DAFSA 中,符号是边,而不是节点。
标签: string dictionary data-structures finite-automata dawg