📜  门| GATE-CS-2006 |第85章

📅  最后修改于: 2021-06-29 03:39:30             🧑  作者: Mango

在上述问题的正确语法中,生成具有l≠m的字符串a l b m的导数的长度(从S开始的步数)是多少?
(A)最大(l,m)+ 2
(B) l + m + 2
(C) l + m + 3
(D)最大(l,m)+ 3答案: (A)
解释:
最后一个问题的正确语法是(D),即:

S -> AC|CB
C -> aCb|epsilon
A -> aA|a
B -> Bb|b

现在,最优化和直观的方式来生成形式A L B M将是第一次使用的字符串“C – > ACB |小量”的生产规则得到尽可能多的A和B就可以了,这将是分( l,m)。要获得字符串的其余部分,我们可以相应地使用后两个生产规则。从上述语法中正式得出一般格式为a l b m的字符串–

1.      S -> AC 
2.          -> A(aCb) 
3.          -> .... 
4.          -> ....
5.          -> A(am C bm) 
6.          -> A(am bm) 
7.          -> aA(am bm) 
8.          -> .... 
9.          -> ....
10.         -> a(l-m-1)A(am bm) 
11.         -> al bm

从上面的一组推导步骤中,我们可以算出总步骤如下:

Production 1 took 1 step       : 1                   [using S->AC]
Production 2-5 took steps      : min(l,m)            [using C->aCb] 
Production 6 took 1 step       : 1                   [using C->epsilon]
Production 7-11 took steps     : max(l,m)-min(l,m)   [using A -> aA|a or B -> Bb|b]
                        
               Total steps   : max(l,m) + 2     

因此,答案应为(A) :max(l,m)+ 2

该解释由Vineet Purswani提供。
这个问题的测验