-1

give a context-free grammar describing the language L={w∈{a,b}∗∣w is of the form xby, where |x|>|y|}.

I had one solution like this

S -> AYCbY|AYbY|YCbY
A->aB|bB
B->aB|bB|_
C->aD|bD
D->aD|bD|_
Y->aY|bY|_

but it was complaining that it accepts the language babbabaaaaa which is not belonging to the language. Anyone knows how to solve this? and I have no idea how it produces babbabaaaaa, if each time both Ys follows the same rule.

Raphael
  • 73,212
  • 30
  • 182
  • 400
Kristen
  • 99
  • 1

1 Answers1

3

One helpful technique is to decompose a problem like this into the concatenation of two subproblems, each of which can be generated by a simpler grammar. In this case, a string $xby$ with $|x|\ge|y|$ can be written as $uvby$ with $|u|\ge 1$ and $|v|=|y|$. The reason for doing this is that the $u$ part (all strings over $a,b$ of length at least 1) can be generated by $$ A\rightarrow aA\mid bA\mid a\mid b $$ and the $vby$ part (where $v$ and $y$ have the same length) can be generated (from inside out, starting with the central $b$) by $$ B\rightarrow aBa\mid aBb\mid bBa\mid bBb\mid b $$ Now just make a grammar from the concatenation of the $A$ part followed by the $B$ part.

You might want to look at this answer.

Rick Decker
  • 15,016
  • 5
  • 43
  • 54