我正在处理以下语法:
G = ( {S, A}, {a, b}, P, S )
P = { S -> aAb, S -> bAa,
A -> aSa,
A -> S,
A -> epsilon}
我需要找出L(G)。 问题是,我发现语法中的单词形式如下: 以a开头,以b结尾,或以b开头,以a结尾,在这些字母之间以下组合之一:ab,ba,aaba,abaa;然后通过在中间的a和b之间插入这4种组合中的一种来形成下一个单词。但是我怎样才能正式表达呢? 我的意思是,据我所知,L(A)= a ^ n S a ^ n并且如果w属于L(G),则w反转也属于L(G)。 我试图将其表达为正则表达但却失败了......有人可以帮忙吗?
谢谢。
答案 0 :(得分:1)
你知道L不规律,证明你可以使用Pumping lemma或Myhill–Nerode theorem,所以不能讨论正则表达式
你可以注意到,由于L仅由{a,b}组成,你可以使用它的力量 我们看到该语言的形式为aAb或bAa或aAa,但aAa不能位于单词的开头 -
所以让我们使用它,我们唯一想念的是bAb的组合 A几乎可以生成所有内容(单词| w | = 2k,| w |> = 2)但是b的位置与b的位置相反的单词
形式上
对不起我的tex技巧和正式表达
肯定会有一些错误,因为我没有那么多时间来思考这个问题,但它可以通过某种方式继续下去,这是家庭作业,所以没关系,想一想! :)
答案 1 :(得分:0)
我试图将其表达为正则表达式但未通过
这种语言可能是'不规律。无上下文语言比正则表达式更复杂/更强大。
尝试生成几个单词,看看是否可以提供该语言的名称,属性。或者尝试在语言中找到不的单词。
一些提示,您可以轻松看到的一些属性:
最小的字符串至少为2。
字符串的大小是偶数。
b的数量是< =而不是
如果你取出A -> aSa
,并将一个单词与其反转版本进行比较,则应该可以看到一个模式。如果您包含遗漏规则,则模式稍有变化......
答案 2 :(得分:0)
要求您找到语法 G 生成的语言
S → aAb | bAa
A → aSa | S | λ
首先,考虑从起始符号 S
开始的小推导S ⇒1 aAb ⇒1 aaSab | aSb | ab
S ⇒1 bAa ⇒1 baSaa | bSa | ba
困难的一步是处理规则 A → aSa , S → aAb 生成的递归和 S → bAa 。通过考虑 G 生成的语言的归纳定义,揭示了处理这一困难的线索:
1. ab ∈ L4
2. ba ∈ L4
3. w ∈ L4 → awb ∈ L4
4. w ∈ L4 → bwa ∈ L4
5. w ∈ L4 → awa ∈ L4
规则(3) - (5)对应于规则 A → aAa , S → aAb G 中的>和 S → bAa 。很容易看出归纳定义和 G 的规则定义了相同的语言。归纳定义表明 G 的语言可以逐步增加。从 G 中可生成的最小字符串开始,我们构建了与问题规则相对应的越来越大的字符串集:
L(1) = {ab, ba}
L(n + 1) = {awb, bwa, awa : w ∈ L(n)}
集合 L (1)包含 G 中可生成的最小字符串。集合 L (n + 1)包含每个字符串 w的字符串 awb , bwa 和 awa ∈ L (n)。也就是说, L (n + 1)中的字符串对应于通过应用规则获得的字符串 S → aAb , S → bAa 和 A → aAa 一次到 L (n)中的字符串。剩下的就是构造 L (n)的并集,这是一个集合:
L = ⋃ {L(n) : n ∈ ℕ}
要看到 L 等同于语法 G 生成的语言,您可以通过归纳来判断 G 。从 G 中可编辑的最小字符串开始(即 ab 和 ba ),使用适当的归纳假设向后工作。
答案 3 :(得分:0)
生成的语言是:(a) n (b) m 是n> = m