我遇到了两个完全不同的答案。
一个人说:
是的,确实存在 的上下文无关文法,以下文法确保存在的 1 可以有一半或更少的 0:{0i1j | 1≤i≤j≤2i}
S -> 0S11 | 0S1 | 01
另一个:不,反证法:
情况1:
假设您将 i 0 压入堆栈。
弹出 j 1s。
您无法确定 j<=2i。
案例二:
假设您将 2i 0 压入堆栈。
弹出 j 1s。
您无法确定 j>=i。
压入堆栈的任何其他不等于 i 或 2i 的值都是相对于这两个值中的任何一个的值,因此适用相同的推理。
是否正确?非常感谢!