构建CFG

发布于 2024-11-03 13:10:37 字数 84 浏览 1 评论 0原文

如何为语言 x^ay^bz^2(a+b) 构造上下文无关语法,其中 a>=0,b>=0。 感谢您的帮助...

How can I construct a Context-Free Grammer for the language x^a y^b z^2(a+b) where a>=0, b>=0.
Thanks for helps...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

白馒头 2024-11-10 13:10:37

这样想

x^a y^b z^2(a+b) = x^a y^b z^2a z^2b = x^a y^b (z^2)^b (z^2)^a 

所以

S -> xSzz | S1
S1 -> yS1zz | e

Think of it this way

x^a y^b z^2(a+b) = x^a y^b z^2a z^2b = x^a y^b (z^2)^b (z^2)^a 

Therefore

S -> xSzz | S1
S1 -> yS1zz | e
在风中等你 2024-11-10 13:10:37

请注意,对于每个 x 和每个 y,您需要生成两个 z,因为 2(a + b)。另外,请注意每个字符串都可以被视为 yz 的“内部”部分,以及 x< 的“外部”部分。 /code> 和 z

由于对于每个y,您需要两个z,因此内部部分可以通过(使用大写字母表示非终结符和[] 对于空字符串):

I --> []
I --> y I z z

现在以相同的方式为外部部分编写语法,但在基本情况中引用 I

Observe that for each x and for each y, you need to generate two z's because of the 2(a + b). Also, observe that each string can be viewed as an "inside" part of y's and z's, and an "outside" part of x's and z's.

Since for each y you need two z's, the inside part can be described by (using capitals to denote non-terminal symbols and [] for the empty string):

I --> []
I --> y I z z

Now write a grammar for the outside part in the same way, but referring to I in the base case.

野侃 2024-11-10 13:10:37

本质上,您需要处理两种情况:

  • 您可以在字符串的开头添加一个 x,在这种情况下,您需要在以下位置添加两个 z:结束。
  • 或者,您可以在中间添加一个 y,在这种情况下,您需要在末尾添加两个 z

尝试将这些描述简化为您知道解决方案的更简单的语法(例如a^nb^n)。

这个提示应该足以推断出生成语法。

There are essentially two cases that you need to treat:

  • You can either add an x at the beginning of the string, in which case you need to add two z’s at the end.
  • Or you can add a y in the middle, in which case you also need to add two z’s at the end.

Try reducing either of these descriptions to a simpler grammer (e.g. a^n b^n) for which you know the solution.

This hint should be enough to deduce the generative grammer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文