正则表达式模式匹配与L系统的有限性和无限性研究
1. 正则表达式模式匹配算法
正则表达式模式匹配在许多领域都有重要应用,如文本搜索、数据处理等。下面将详细介绍一种新的正则表达式模式匹配算法及其相关特性。
1.1 算法复杂度分析
在匹配多个正则表达式模式时,该算法的复杂度分析如下:
设字典 $D$ 的大小为 $m$,包含 $r$ 个带有固定长度通配符间隙且无字符类的正则表达式模式,待匹配文本 $T$ 的长度为 $n$。经过预处理,时间复杂度为 $O(m + \sum_{i = 1}^{r} k_{i}^{2} \log k_{i}/w)$,空间复杂度为 $O(m + \sum_{i = 1}^{r} k_{i} \log k_{i})$。匹配算法能在时间 $O(n(\log r + k/w)K_{D})$ 内找到 $D$ 中所有模式在 $T$ 中的出现位置,其中 $K_{D} = \max{\text{occ-dictionary}(\text{closure}(y)) | y \text{ 是 } D \text{ 中的关键字字符串}}$,工作空间复杂度为 $O(\text{maxdist} \cdot K_{D})$。
当只有单个正则表达式模式 $P$ 时,匹配算法的时间复杂度为 $O(n(k/w + K_{D}))$,这里 $k$ 是 $P$ 中的关键字数量,$K_{D}$ 按上述定义。当 $K_{D} < \log w$ 时,该算法的复杂度优于 Bille 和 Thorup 的算法。这种情况在实际中经常出现,例如当模式 $P$ 中每个关键字 $j$ 的后缀关键字 $j’$ 的数量小于 $\log w$ 时。
超级会员免费看
订阅专栏 解锁全文

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



