automata - 为语言构建语法
问题描述
L = {a^i b^j c^k | not(i=j=k)}
提示:将 L 描述为其他语言的联合
我一直在尝试这样做一个星期,但我做不到。谁能帮我理解?
编辑 :
说得对吗:
(i≠j or j≠k)
或者 (i≠j and j≠k and i≠k)
解决方案
是否可以说:(i≠j 或 j≠k)或(i≠j 和 j≠k 和 i≠k)
这么说并没有错,但这比你需要说的要多。真的,你只需要说第一部分:
(i≠j 或 j≠k)
如果第一部分无论如何都不是真的,那么第二部分就不可能是真的。从这里,我们可以进一步分解:
i < j 或 i > j 或 j < k 或 j > k
这是四种非常基本的上下文无关语言的结合。如果你得到的语法 G1、G2、G3 和 G4 分别带有开始符号 S1、S2、S3 和 S4,你可以添加一个新的开始符号 S 和产生式 S -> S1 | S2 | S3 | S4 为他们的工会获取语法。
推荐阅读
- windows - Windows 操作系统上的哪个表包含是否使用 osquery 启用远程桌面的信息
- python - 计算字符串矩阵之间相似度核的最快方法?
- android - 具有预定义宽度的水平子项的线性布局
- angular - Angular - 将 API 与 HTTP Digest Auth 一起使用
- azure-logic-apps - 资源事件发生时逻辑应用触发两次
- javascript - 使用 node.js 导入 JSON 文件
- python - 在生成器表达式中使用 lambda 函数
- php - Accelo API - 返回带有任务列表的公司名称
- java - 有没有办法在java中制作一个随机数生成器,它更有可能落在一个数字上而不是另一个数字上?
- sql - 选择具有不同where子句的2列同一张表