该语言是(0^i)(1^j) where 2i >= j
形式的所有二进制字符串。换句话说,二进制字符串的集合最多只有1's
的两倍,然后是0's
,所有0's
都是领先的。
我的尝试:
S -> 0S | T
T -> 0T1 | U
U -> 0U11 | epsilon
然而,这在string 0011
上是不明确的。我该如何解决这个问题?
答案 0 :(得分:2)
你几乎拥有它,只是一个小小的变化:
S -> 0S | T
T -> 0U1 | U
U -> 0U11 | epsilon
这可以确保只能以一种方式生成一定数量的1。规则S - >然后使用0S来产生仍然必要的0。