29、DAWG与后缀数组对比及扩展上下文无关文法预测解析

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是一种更复杂的结构,更适合处理复杂任务,如近似字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值