context-free-grammar - 这是一种非上下文无关的语言吗?我可以用自动机来描述它吗?
问题描述
我很难知道这种语言是否与上下文无关。
The Language is: "L={a^n*a^z*b^n*b^z*c^n*c^k|n≥0, z≥0, k≥0}".
在我看来,这种语言不是上下文/自由的,因为我无法用自动机描述 z=k=0 的情况,在这种情况下我会:L = (a^n*b^n*c^n)
这显然不是上下文无关的语言。但我无法使用 Pumping Lemma(在起始语言上)并确保我的想法。
解决方案
n
在该描述中没有任何目的;任何与标准匹配的字符串也与标准匹配。(只需设置。)并且该语言可以用上下文无关语法来描述:apbpcq
p, q ≥ 0
p = n + z; q = n + k
S → A C
A → a A b | ε
C → C c | ε
这里的一个要点是算术表达式中的隐式结构不会自动成为该算术表达式所描述事物的一部分。(或者,换句话说,在你连接两个字符串之后,你不再看到它们之间的边界。)另一个可能更实际的收获是,大多数关于形式语言的考试问题都很复杂,以使答案不明显,所以从某种意义上说,它们几乎都是技巧问题。
推荐阅读
- kotlin - 如何在 Kotling 中重写 ext.sourcesDir?
- android - 如何从android中的在线ics文件中检索事件?
- quarkus - 重新启动响应式消息传递,例如在重新配置之后
- python - [Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype='int64', name='index')] 中没有一个在 [index]
- c++ - “WM”在 C++ 中是什么意思?
- java - java Datagram Socket处理数据的速度不够快
- angular7 - 我无法使用 Angular 7 将元标签分享到 Facebook
- git - (免费)组织中的 GitHub 私有存储库,2020 年更新
- git - 使用 `git commit --verbose` 配置选项卡宽度渲染
- java - 线程“主”java.lang.NumberFormatException 中的异常:用于输入 aaaabbaa