“CYK 是 动态规划 在形式语言中的典型实例,也是 CFG 成员资格的标准多项式算法,证明了固定 上下文无关文法 的成员问题可在多项式时间解决。它以 Chomsky 标准形 为接口,可扩展为…”
形式陈述 ​
上下文无关文法处于 Chomsky 范式(CNF),若每条产生式形如
其中
每个 CFG 都可有效转换为生成同一语言(按上述空字约定)的 CNF 文法。转换通常依次引入新开始符号、消除 ε 产生式与单位产生式、删除无用符号、把长右侧二叉化并把混合右侧中的终结符替换为专用非终结符。
直觉
CNF 把任意上下文无关推导规整为两种动作:一个非终结符分成两个子结构,或直接产生一个终结符。于是长度为
例子与边界
规则
边界是空字:普通
空语言、只含空字的语言,以及允许原开始符号出现在产生式右部的教材约定都要分别处理;不能把同一张消元规则表机械套在这些退化情形上。转换承诺的是生成语言相同,不是语法树结构或歧义性保持不变。
推论与应用
CNF 是 CYK 算法的输入形式,使“非终结符
参考资料
- John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Chs. 1–9。
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Chs. 0–10。