给出一个上下文无关语法H,该语法生成语言 M = {a^m b^n | 2m> n> m}。 ' 提示:m不能为0,因为在这种情况下2m = m。 m不能是1,因为在这种情况下2> n> 1,这样的自然数n不存在。所以语言M中最短的字符串是aabbb。对于较长的字符串,您需要确保 bs的数量n和m的数量满足2m> n> m。查找上下文无关语法(CFG)
回答
我们知道aabbb
是在语言,所以S -> aabbb
是一个不错的开始。我们如何在语言中获得更长的字符串?那么,我们需要保持2m > n > m
。在这种语言中最短的字符串(对于给定数量的a
s)有一个b
比他们有a
多,所以我们可能会猜测S -> aSb
不是一个错误的猜测;它肯定会以我们的语言生成字符串,即最短的字符串(对于给定数量的a
s)。类似地,我们语言中最长的字符串比它们所具有的a
少一个b
,所以S -> aSbb
也是安全的,因为它产生最长的字符串(对于给定数量的a
s)。我们的语法到目前为止是这样的:
S -> aabbb
S -> aSb
S -> aSbb
第一后每个生产将单个a
和一个或两个b
秒。第二个生产可以单独使用以生成最短的字符串(对于给定数量的a
s),而第三个单独使用时生成最长的字符串(对于给定数量的a
s)。那些最短和最长的琴弦呢?这些制作能用来获取所有这些字符串吗?
他们可以。你可以通过归纳来证明。您必须证明语言中所有长度为n
(1)的字符串都是由语法生成的,而(2)是由语法生成的语言是用语言生成的。
基本情况:语言中最短的字符串是aabbb
,它由语法生成。
归纳假设:假定语法生成所有字符串,并且语言中包含长度为k
的任何字符串。
归纳步骤:我们必须显示语法生成所有字符串的唯一字符串长度为k + 1
。我们已经说过,语法不能产生一个不在语言中的字符串;通过仅使用第二次生产,您将获得n = m + 1
,并且通过使用第三次生产,您只能获得n = 2m - 1
。要看到它会生成该语言中的所有字符串,请回想一下,该语言中的任何字符串都以至少两个a
s开始,并以至少三个b
s结尾。所以,它可以写成aaxbbb
。可以看出,如果该字符串是用该语言编写的,则axbb
和/或axb
中的一个或两个都必须使用该语言。
axbb
是在L
如果2(m - 1) > n - 1 > m - 1
,或2m - 1 > n > m
axb
是在L
如果2(m - 1) > n - 2 > m - 1
,或。
由于在任何情况下开始与基部情况下,我们具有2m - 1 > n
至少一个和/或n > m + 1
,其中之一也是L
。通过归纳假设,语法产生它;并且其中一个语法产物将从中产生长度为k + 1
的原始字符串。所以语法生成L
中的所有字符串。
- 1. 查找上下文无关文法
- 2. 上下文无关语法
- 3. 上下文无关文法语法
- 4. 上下文无关语法与上下文敏感语法?
- 5. 上下文无关语法的算法
- 6. “任意”上下文无关语法?
- 7. 上下文无关语法帮助
- 8. 上下文无关语法公式
- 9. 为以下语言编写上下文无关语法
- 10. 上下文无关文法
- 11. 将EBNF语法转换为上下文无关语法
- 12. 需要帮助找到这些语言的上下文无关语法
- 13. 根据上下文无关的语法找出生成的语言?
- 14. 为语言创建上下文无关语法
- 15. 鉴于上下文无关文法,找到模棱两可的语句
- 16. 特定语言的上下文无关文法
- 17. 这是什么语法?上下文无关的或上下文敏感的
- 18. apropos /查找上下文相关信息
- 19. 导的上下文无关文法
- 20. 上下文无关文法对C
- 21. NLTK上下文无关文法
- 22. 上下文无关文法BNF
- 23. 歧义上下文无关文法
- 24. YACC和上下文无关文法
- 25. 上下文无关文法和逆转
- 26. 上下文无关文法平衡parethesis
- 27. 什么是模棱两可的上下文无关语法?
- 28. 用于识别行尾空白的上下文无关语法
- 29. 顺序是否在上下文无关语法中起作用?
- 30. 这些上下文无关语法是否等价?
如果你想要这个作业问题的帮助,你想要https://cs.stackexchange.com/。 –
我投票结束这个问题作为脱离主题,因为它不属于堆栈溢出,它属于其他网站,可能是https://cs.stackexchange.com/。 –
@DavisHerring:[cs.se]已经提出这个问题,可能是同一张海报,几乎立即关闭,作为一个交叉点,碰巧,但也因为[cs.se]强烈不鼓励“做我的家庭作业我“的问题。 – rici