11 votos

Cómo crear una gramática para el complemento de anbn ?

Tengo una L de lengua: Σ={a,b},L={anbn|n0}

Y estoy intentando crear una gramática libre de contexto para co-L .

He creado la gramática de L:

P = {
  S -> aSb
  S -> ab | epsilon
}

En co-L, no sé cómo asegurar, que no habrá el mismo número de a,b . ¿Debería crear algo así?

P = {
  S -> aSb
  S -> a | b | aS | bS
}

15voto

hhsaffar Puntos 1975

Consideremos esta lógica: una frase en el complemento de L debe comenzar con b o terminan en a o si empieza por a y termina con b la subcadena entre las dos no debe estar en L (debe estar en el complemento de L ). Así que podemos escribir:

SbA|Aa|aSb

AaA|bA|ϵ

3voto

TheNavigat Puntos 131

Podemos descomponer este lenguaje en la unión de varios lenguajes más sencillos:

L = { aibj | i > j } { aibj | i < j } (a b)^b(a b)^a(a b)^ .

Es decir, todas las cadenas de a's seguidas de b's en las que el número de a's y b's difiere, unidas con todas las cadenas que no sean de la forma aibj .

En primer lugar, podemos conseguir la unión de los CFG de las tres lenguas:

S S1|S2|S3

Ahora, el conjunto de cadenas { aibj | i > j } es generado por un CFG simple:

S1aS1b|aS1|a

Del mismo modo para { aibj | i < j }:

S2aS2b|S2b|b

Por fin, (a b)^b(a b)^a(a b)^ se genera fácilmente de la siguiente manera:

S3 XbXaX

X aX|bX|


Fuente: http://cseweb.ucsd.edu/classes/su99/cse105/sample2.pdf

1voto

eljenso Puntos 7690

Las cadenas no de forma anbn vienen en varios grupos.

Una cadena que empiece por b puede obtenerse a través de SbS1 entonces S1aS1|bS1|ε

Una cadena puede tener un número positivo de a entonces un número positivo de b entonces un número positivo de a y luego cualquier cosa. Este lleva más pasos: SaS2 entonces S2aS2|bS3 entonces S3bS3|aS4 entonces S4aS4|bS4|ε.

Las cadenas restantes del complemento tienen a seguido de b sino más bien a a la izquierda o más b a la derecha. Para más información a a la izquierda, utilice SaS5, entonces S5aS5|aS5b|ε Por último, para más b sobre el uso correcto SS6b, y luego S6S6b|aS6b|ε.

No soy un experto en este tema, pero lo anterior me parece intuitivamente que cubre todas las cadenas en el complemento de anbn sin dejar que se produzca ninguno de estos últimos.

0voto

ANWAR MULLA Puntos 1

A^n b^n significa igual número de a que sigue a igual número de b

Gramática g={N,T,P,S}

N- No Terminales-{A}

T- Terminales-{a,b,epsilon}

p- Producción

S->A

A->aAb

A->Epsilon(^)

S- Símbolo de inicio-{S}

Espero que esta respuesta sea correcta ANWAR MULLA (AGCE)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X