上下文免费语法问题

时间:2010-11-01 20:33:46

标签: context-free-grammar language-theory

首先,这是一个家庭作业问题。我有一个想法,但我仍然无法得到正确的答案。我不是要求答案,我只是在寻求帮助来回答这个问题。

我目前正在尝试为该语言编写无上下文语法

a(iterated i times)db(iterated j times),  for i and j>=0,  and j = 2 * i.

所以基本上有两倍于b和a介于两者之间。例如:

d,  adbb,  aadbbbb,  …… 

这是关于我所拥有的,我没有太多...我理解这些CFG的概念我只是不确定这个问题的逻辑。我不确定我是否正朝着正确的方向前进......

S -> AdB
A -> EMPTY
A -> aAB
B -> DD

感谢。

2 个答案:

答案 0 :(得分:1)

我想我会先说明你只需要2个语句来解决这个问题。我宁愿看到你的一些作品(即使是在错误的方向!)如果我不再给你的话。

修改

感谢您发布您所拥有的内容。这是一对思想练习,希望能让你朝着正确的方向前进:

  

为n>写一个表达 n b n 的语法。 0(ab,aabb,aaabbb,...)

维基百科关于CFG的文章如果你仍然陷入困境,会对此有所帮助。

  

为n>写一个表达 n db n 的语法。 0(adb,aadbb,aaadbbb,...)

当你得到最后一个时,你会看到一个微不足道的补充来达到你的语法。

答案 1 :(得分:1)

每当你有一种语言时,你可以像这样列出,其中每个字符串在以下字符串的子字符串中,写一个简单的递归语法相当简单。您需要一个规则来创建第一个(最短的)字符串,以及一个规则来从前一个字符串中生成每个更长的字符串。