【问题标题】:How to make this context free grammar unambiguous? [closed]如何使这种上下文无关语法明确? [关闭]
【发布时间】:2018-07-13 15:12:57
【问题描述】:

语言是(0^i)(1^j) where 2i >= j 形式的所有二进制字符串。换句话说,二进制字符串的集合,其中1's 最多是0's 的两倍,并且所有0's 都在前导。

我的尝试:

S -> 0S | T

T -> 0T1 | U

U -> 0U11 | epsilon

但是,这在string 0011 上是模棱两可的。我该如何解决这个问题?

【问题讨论】:

标签: algorithm context-free-grammar ambiguous formal-languages context-free-language


【解决方案1】:

你几乎拥有它,只是一点点变化:

S -> 0S | T    
T -> 0U1 | U 
U -> 0U11 | epsilon

这确保了一定数量的 1 只能以一种方式产生。然后使用规则 S -> 0S 来生成仍然必要的 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2018-03-29
    • 1970-01-01
    • 2019-04-12
    • 2014-06-07
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多