我遇到了这个问题。我相信它告诉我,不会产生任何字符串,甚至包括#b和s' s。这是由于第二组的减法。
来自新成立的CFG的好字符串应该是aaabbc或abbbcc等等。
所以我尝试将问题分成三部分......
单州
a.) S(1) -> aS(1) | a | ^
b.) S(2) -> bS(2) | b | ^
c.) S(3) -> cS(2) | b | ^
两个国家
a.) S(4) -> aS(4)b | S(1) | S(2)
b.) S(5) -> bS(5)c | S(2)
c.) S(6) -> aS(6)c | S(3) | S(1)
有AB州的国家
a.) S(7) -> S(1) | S(4)S(6)
b.) S(8) -> S(2) | S(5)S(6)
c.) S(9) -> S(3) | S(6)S(3)
原始开始状态为......
S -> S(7) | S(8) | S(9)
但是我在构建像aaaabbbcc ...
这样的字符串时遇到了问题我是否错误地制作了CFG?我觉得自己走在正确的轨道上,但现在我已经迷失了。
答案 0 :(得分:0)
这种语言的简单表达方式是:
{a n b m c * | n ≠ m } a {a * b n c < em> m | n ≠ m }
(使用上面的Kleene星可能是滥用符号。最初,我用第三个整数变量编写它。但我认为这颗星更清晰。)
现在,{a n b m | n ≠ m }只是 n (a + | b + )b'SUP> 名词
所以完整的表达式可以写成 n ( + | b + )b < sup> n c * |一个 * B'SUP> 名词 (B + | C + )C 名词
将所有这些放在CFG中有点单调乏味,所以我把它留给了读者。但它完全是机械的。
制作DFA(或更正确的确定性下推自动机)可能比较棘手,因为CFG不明确。实际上,该语言的每个 CFG都是不明确的。但制作NDPA没问题。
答案 1 :(得分:0)
所以我将问题分成两个子问题
a的数量与b的数量不同。因此,a和c以及b&c和c可以是相同的。
b的数量与c的数量不同。因此,a和b以及a和c可以是相同的。
编辑:更正式地说,如Rici {a n b m c * | n ≠ m } a {a * b n c < em> m | n ≠ m }
//a and b is different
S-->XR
//b and c is different
S-->DY
//Genarates a string where a is more than b
X--> aXb | A
A --> aA | a
//Genarates a string where b is more than a
X--> bXa | B
B --> bB | b
//Genarates a string where b is more than c
Y--> bYc | B
B --> bB | b
//Genarates a string where c is more than b
Y--> cYb | C
C --> cC | c
R-->Rc|c|^
D-->Da|a|^
答案 2 :(得分:0)
可以使用给定的形式构造a ^ n b ^ n c ^ n语言的上下文无关语法。
S -> aSc | X
X -> BX
X -> null
使用上述生成的结果,您可以生成a ^ n b ^ n c ^ n。假设我们正在生成a ^ 2 b ^ 2 c ^ 2。我们将从S开始。
= aSc
= aaScc ; aSc
= aaXcc ; S -> X
= aabXcc ; X -> bX
= aabbXcc ; X -> bX
= aabb(null)cc ; X -> null
= aabbcc
答案 3 :(得分:0)
Murdock 上面的答案非常接近,但在某些情况下失败了。例如,它可以生成 a、b 和 aabcc,但不能生成 c、abbcc 或 bc,即使它应该能够生成。 (JFlap 是一个很棒的软件,我用来在我构建的语法上快速测试不同的字符串,它对形式语言和计算理论中的许多其他概念也很有帮助。) 使用 Murdock 的 CFG 也可以让字母以不同的顺序出现,但问题陈述强制所有 a 出现在最前面,然后是所有 b,最后是所有 c。
Danish Ahmed 似乎误解了这个问题,并试图为 a's, b's 和 c's 等量的语言构建一个 CFG。我的讲师突然说不可能为此构建 CFG。对于 a = b = c,丹麦语的 CFG 是不正确的,因为它可以通过 S -> X 自行生成一个 'b'; X -> BX; X -> null(还假设大写 B 是终端 b。)
这是我的回答,它添加并调整了 Murdock 的 CFG 的一些组成部分,使其对问题有效。
S=XR|DY|WR|DZ
X=aXb|A
A=aA|a
W=aWb|B
B=bB|b
Y=bYc|B
Z=bZc|C
C=cC|c
R=Rc|c|epsilon
D=Da|a|epsilon