正则表达式自动机转换及转移复杂度研究
1. 计算 Follow(α) 的新算法
在正则表达式处理中,计算 Follow(α) 是一个重要的问题。此前,Brüggemann - Klein 在 1993 年提出了一种基于将 α 转换为星范式的方法,之后在 1996 年和 1997 年也有其他复杂的二次算法被提出。
这里我们定义了一个新的函数 E,对于每个标记的正则表达式 α,有 Follow(α) = E(α)。该函数的优势在于其定义中的所有并集都是不相交的。函数 E 的定义如下:
- (E(\varnothing) = E(\varepsilon) = E(\sigma_i) = \varnothing)
- (E(\alpha + \beta) = E(\alpha) \cup E(\beta))
- (E(\alpha\beta) = E(\alpha) \cup E(\beta) \cup \text{Last}(\alpha) \times \text{First}(\beta))
- (E(\alpha^\star) = E^\star(\alpha))
其中 (E^\star) 的定义如下:
- (E^\star(\varnothing) = E^\star(\varepsilon) = \varnothing)
- (E^\star(\sigma_i) = {(i, i)})
- (E^\star(\alpha + \beta) = E^\star(\alpha) \cup E^\star(\beta) \cup \text{Cross}(\alpha, \beta))
- (E^\st
超级会员免费看
订阅专栏 解锁全文
990

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



