【发布时间】:2019-04-14 03:03:00
【问题描述】:
我有这种语言L = {a^n b^m c^k: m = |n - k|}。
我知道m = |n - k|可以用两种方式表达
1) m = n - k for n >= k or n = m + k
2) m = k - n for k >= n or k = m + n
因此,我得到了两种语言,其中 L1 = {a^n b^m c^k: n = m + k} 和
L2 = {a^n b^m c^k: k = m + n}。
然后我声称L 是两者的结合,L = L1 U L2。
我不太明白如何生成一个语法,其中一个终端的一个指数是其他两个终端的总和。即,在L1 中有n = m + k。 L1 也可以进一步简化为 a^n => a^(m+k) => a^(m)a^(k) 所以 L1 变成 L1 = {a^m a^k b^m c^k: m, k >= 0}
尝试回答
L1 = {a^m a^k b^m c^k: m, k >= 0}
一个语法G1 S -> A|B A -> aAb|lambda B -> aBc|lambda
【问题讨论】:
-
我投票结束这个问题,因为它不是关于计算机编程的。
-
有没有办法把它移到另一个站点?也许在 CS 堆栈交换或数学中。
标签: context-free-grammar regular-language formal-languages context-free-language