【问题标题】:Any algorithm to fix the ambiguity of a CFG?有什么算法可以解决 CFG 的歧义?
【发布时间】:2014-04-15 18:00:12
【问题描述】:

这是一个模棱两可的 CFG:

S -> aSb|bA|Ba
A -> bA|B
B -> aB|A|ε

您可以通过解析字符串“ba”轻松检查语法的歧义。

是否有任何算法可以解决上述 CFG 的歧义?

感谢您的帮助

【问题讨论】:

  • 不,没有通用算法来证明某些语法是不明确的,并证明两个语法是等价的,因此没有算法可以解决语法中的歧义 - 这是所谓的“无法解决的问题”之一.

标签: context-free-grammar automata automata-theory


【解决方案1】:

检查一个语法是否有歧义是一个不可判定的问题,这意味着不存在每次都能正确输出是/否的算法。

通过表明它等同于 Post Correspondence Problem 来显示不可判定性,后者也是不可判定的。

【讨论】:

  • @ValentinLorentz 不,这个问题不是针对 CFG 的(常规语法),我们没有任何通用算法可以检查语法是否歧义。 Pranav Raj 的回答完全正确。
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多