grammar - 无法使用上下文语法构造语言
解决方案
对上下文无关语言使用抽水引理。用于这种语言的一个很好的字符串是字符串 (0^p)(1^p)(0^p)(1^p)。抽水引理说如果语言是上下文无关的,那么这个字符串可以写成 uvxyz where |vxy| <= p, |vy| > 0 并且对于所有自然数 n,u(v^n)x(y^n)z 也在该语言中。我们有几个不同的案例:
vy 仅由前导 0 组成。抽这将意味着 0 的两个部分具有不同数量的 0。这行不通
vy 仅由前两个部分的 0 和 1 组成。这是行不通的,因为要么 0 和 1 混淆,要么前半部分的 0 和 1 比后半部分多或少。
vy 由第二部分的 1 组成。这与案例 1 中的原因不同。
vy 由第二部分的 1 和第三部分的 0 组成。这与案例 2 中的原因不同。
vy 由第三部分的 0 组成。这与案例 1 和 3 中的原因不同。
vy 由来自第三和第四部分的 0 和 1 组成。这与案例 2 和 4 中的原因不同。
vy 由第四部分的 1 组成。这与案例 1、3 和 5 中的原因不同。
这些都是这种情况,在任何情况下,我们都无法像我们必须的抽水引理一样抽水 (0^p)(1^p)(0^p)(1^p)。因此,我们得出结论,该语言不可能是上下文无关的。
推荐阅读
- python - 多处理帮助。BrokenProcessPool 错误
- python-3.x - Python - 在一页中包含多个数字的 Pdf 文件(不包含子图!!)
- visual-studio - 如何防止 Visual Studio 或 Docker 更改主机端口号?
- excel - 如何编写一个完整的表达式来获得列的加权和?
- c# - 使用 C# MongoDB 驱动程序获取最后一条记录
- c# - 如何在 EF 中获取与组合列表(键/值)匹配的记录?
- npm - 无法在 shadow-cljs 项目中导入本地 wasm npm 包
- animation - SVG animateMotion (calcMode spline) 在 FF 和 Safari 中不起作用
- java - 为什么 MediaPlayer 不准备?
- sql - 您可以在 T-SQL 语句中的另一个 CASE 和 DATEADD() 函数中使用 CASE 吗?