正则表达式与上下文语法的深入探究
1 正则表达式相关内容
1.1 多项式运行时间定理
对于所有正则表达式 (r \in R_{\Sigma}) 和所有位置 (q \in sym(\mu(r))),有以下结论:
- 计算 (first(r)) 和 (last(r)) 的时间复杂度为 (O(|r|))。
- 计算所有 (q) 的 (follow(r, q)) 的时间复杂度为 (O(|r|^3))。
证明过程 :
- 对于第一点,根据引理 1 的部分内容可知 (|first(r)| = O(|r|)) 且 (|last(r)| = O(|r|))。假设集合的并集操作可以在线性时间内完成,并且给位置添加前缀数字(如 (\langle1\rangle \odot p))可以在常数时间内完成。然后通过对 (r) 进行归纳,可以证明运行时间为 (O(|r|))。
- 对于第二点,首先计算 (r) 的所有子表达式的 (first) 和 (last),这需要 (O(|r|^3)) 的时间。然后计算 (follow(r, q)) 意味着对 (follow) 进行线性次数的调用,每次调用除了递归调用 (follow) 之外,最多需要 (O(|r|^2)) 的时间。
1.2 约束范式与计数器 - 1 无歧义性
1.2.1 约束范式
一个正则表达式 (r) 处于约束范式中,当且仅当 (r) 中不存在形式为 (r_{n..m}^1) 的子表达式,其中 (r_1 \in N_{\Sigma})。例如,((a^ a)^{2..3}) 处于约束范式中,而
超级会员免费看
订阅专栏 解锁全文
3260

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



