Gramática livre de contexto para {a ^ ib ^ j | i, j ≥ 0; eu ≠ 2j}


7

Alguém pode ajudar com isso:

L={aibji,j0 and i2j}

Estou tentando escrever uma gramática para esse idioma? Eu não sei como fazer isso. Eu tentei isso:
SaaAbaAAaAa


5
Você pode simplificar a tarefa dividindo o idioma: L={aibji<2j}{aibji>2j}
Mike B.

3
O raciocínio é que os CFGs são fechados em união.
Paresh

11
Basicamente, a pergunta já foi respondida aqui: Contexto gratuito gramática para a linguagem
Hendrik Jan

Respostas:


7

Considere os dois idiomas:
L1={aibji,j0 and i>2j}
L2={aibji,j0 and i<2j}

Convença-se de que L=L1L2.

No L1, o número de asão mais que o dobro deb, então tem que haver pelo menos um a (quando não houver b's). Além disso, para cada adição debpelo menos 2 adeve ser adicionado. Você pode gerarL1 Como:

S1aAAaaAbaAε

L2é um pouco mais complicado. O número deasão menos que o dobro do número de bpara que possa haver 0 a, mas diferente de zero b's. Considere o "caso base" de1 b. A cadeia pode serb ou ab. Vamos deixar a primeira regra gerar esse caso base. Depois disso, observe que, para cada adição deb, podemos aumentar o número de aé no máximo 2. Então podemos adicionar0, 1ou 2 apara cada adição de b. Vamos deixar a segunda regra lidar com isso. Então, o CFG paraL2 torna-se:

S2BbaBbBBbaBbaaBbε

Observe que os CFGs são fechados em união, ou seja, a união de dois CFGs também é um CFG. Então, para obter o CFG paraL, deixe o estado inicial S do L levar ao estado inicial de L1ou de L2:

SS1S2

O restante das regras permanece o mesmo dos dois idiomas. Pode haver uma gramática mais simples, mas essa foi a primeira que veio à mente.


0

Comece com uma gramática para {aib2i:i0}:

SaSbbϵ
Agora corte-o para que haja mais a do que bb:
SaSbbAAaAa
A modificação para forçar mais bé semelhante e deixado para você. Acrescenta uma produção não-terminal e três produções.

3
Isso não irá gerar strings de todos aou todos b, que fazem parte de L.
Paresh

Se eu mudar a pergunta para i, j≥1 e i ≠ j e i <2j, como posso pensar em solução?
user6885

@Paresh, a parte do extra bs é deixado para concluir. E tudoas é SAak.
21813 vonbrand

Aah ... não sei como senti falta disso. Desculpa!
Paresh

@ Vonbrand o problema que eu não sei, eu devo fazer o bso extra que não será mais do que o a.
user6885
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.