14、从代表性示例学习正则表达式

从代表性示例学习正则表达式

1. 正则表达式类的定义

我们要定义算法学习的正则表达式类 R,它包含所有循环深度为 2 的强左对齐无歧义 ∗ 表达式。实际上,每个无歧义 ∗ 表达式都等价于某个强左对齐 ∗ 表达式,并且有如下定理:
- 定理 1 :每个(循环深度为 2 的)无歧义 ∗ 表达式都等价于某个(循环深度为 2 的)强左对齐无歧义 ∗ 表达式。
基于此定理可知,语言类 {L|L = L(R),其中 R ∈ R} 是由无歧义 ∗ 表达式(循环深度至多为 2)表示的所有语言类,记为 L。

强左对齐表达式的定义可以扩展到任意循环深度的 ∗ 表达式,相应地,我们的算法也可扩展用于学习任意循环深度的无歧义强左对齐 ∗ 表达式。但要实现这种扩展,需要重新定义 LSHIFT2 过程,使其适用于任意深度的循环。不过,这样的过程会复杂得多,涉及自身和其他定义过程的多次递归调用。例如,对于深度为 3 的表达式 ab(((ab)∗cdab)∗eab)∗,应用 LSHIFT2(.,2) 到前缀 ab 后的循环,得到 ((ab(ab)∗cd)∗abe)∗ab,它与原表达式等价且保持无歧义,但并非(强)左对齐。要使其左对齐,(ab)∗ 循环需左对齐,一般情况下这可能涉及对上述定义过程的多次(递归)调用,使整个过程变得混乱,且不清楚这对算法正确性的影响。

2. 学习模型

我们定义了一个算法学习模型,旨在证明类 L 可以在多项式时间内学习。该学习模型基于 D. Angluin 引入的主动学习模型。在这个模型中,学习者向神谕(或教师)询问关于要学习的概念(语言)的问题,并得到(正确的)答案。最自然的查询类型是成员查询:学习者询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值