17、基于精炼的程序输入语法学习算法解析

基于精炼的语法学习算法解析

基于精炼的程序输入语法学习算法解析

语法精炼过程

在长度为 4 的情况下,语法 G′ 会生成一些特定的单词,具体如下:
- G′ 生成的单词有:+ + ∗∗、+ + ∗+、∗+ ∗∗ 和 ∗+ ∗+,对应的解析树如图 1 所示。
- 由于 + +∗+、∗+∗+、∗+∗∗ 不属于有效输入(validInputs(p)),且 l = 1,因此删除候选集(deleteCandidates)取值为 {S →N+A2, S →N∗A1, S →N∗A2}。
- 因为 + + ∗∗ 属于有效输入,所以将 S →N+A1 添加到安全产生式(safeProductions)中。
- 经过上述操作,精炼产生式(refinedProductions)的内容进一步缩减为(注意 A2 →SN+ 不再可达,因此也被消除):

S →N+N∗ | N+A1
A1 →SN∗
N+ →+
N∗ →∗

在长度为 5 的情况下,l 的值设为 2,但由于上一步得到的语法无法生成长度为 5 的单词,所以其他方面没有变化。最终,当长度为 5 时,该语法生成的所有单词都属于有效输入,且因为 l = 2,规则 A1 →SN∗ 被添加到安全产生式中。此时,精炼产生式中的所有产生式都属于安全产生式,满足终止条件。

运行时间分析

由于 G′ 是乔姆斯基范式(Chomsky normal form),其每个解析树都是二叉树。因此,算法 1 中第 12 - 41 行的主 while 循环最多会重复 p = 2m 次,其中 m = |N ′| 是初始 G′ 中非终结符的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值