DAWG与后缀数组对比及扩展上下文无关文法预测解析
1. DAWG与后缀数组对比
1.1 空间与时间复杂度分析
后缀数组的构建所需空间取决于文本大小和排序算法。在实验中使用32位指针以实现简单的实现方式。后缀数组占用的空间为4 * n字节,加上用于字符串匹配所需的文本后为5 * n字节。采用标准的快速排序算法,该算法在排序时无需额外空间,最坏情况下时间复杂度为O(n * n),平均为O(n * log(n))。
有向无环单词图(DAWG)可使用在线构建算法在O(n)时间内创建,顶点重排序和元素编码也能在O(n)时间内完成,即DAWG的构建可在O(n)时间内完成。后缀数组和DAWG的构建时间相近。
1.2 搜索时间测试
编码后的DAWG搜索时间复杂度为O(m),但在实际实现中,搜索合适转移的时间与字母表大小呈线性关系。为比较字符串搜索时间,进行了相关测试。实验中的模式长度在4到20个符号之间,为每个文件准备了1000个模式,并对该集合搜索十次来测量时间。测试使用的计算机配置为PC、Linux操作系统、奔腾处理器和500MB RAM。结果显示,后缀数组的搜索时间约为0.5秒,而DAWG约为15秒,后缀数组在搜索时间上表现更优。不过,可以使用字典树自动机对模式集进行预处理,通过字典树和DAWG自动机的交集来解决模式集的搜索任务,该技术可用于解决更复杂的任务。
1.3 结论
提出了一种新的DAWG实现方法,并与后缀数组的实现进行了比较。结果表明,代码文件大小与输入文件大小的比例约为3:1。后缀数组更易于实现,构建速度更快,搜索时间也更短;而DAWG是一种更复杂的结构,更适合处理复杂任务,如近似字符
超级会员免费看
订阅专栏 解锁全文
5355

被折叠的 条评论
为什么被折叠?



