respuesta alternativa: La gramática puede producir solamente un número finito de cadenas, a saber 6.
S -> aabbbaab | aabbb | bbaab | bb | abbaab | abb.
ahora se puede condensar esto de nuevo a Chomsky forma normal con la mano.
Por sustitución, podemos encontrar el conjunto de todas las cadenas producidas. Sus reglas iniciales:
S -> AB | aB.
A -> aab | lambda.
B -> bbA.
En primer lugar dividir la regla S
:
S -> AB.
S -> aB.
Ahora sustituir lo que A y B se expanden en:
S -> AB
-> (aab | lambda) bbA
-> (aab | lambda) bb (aab | lambda).
S -> aB
-> abbA
-> abb (aab | lambda).
ampliar estos de nuevo para obtener:
S -> aabbbaab.
S -> aabbb.
S -> bbaab.
S -> bb.
S -> abbaab.
S -> abb.
Para cambiar este conjunto finito a Chomsky Normal Form, basta hacerlo por fuerza bruta sin ningún factoring inteligente. En primer lugar introducimos dos reglas de terminal:
X -> a.
Y -> b.
Ahora, para cada cadena, consumimos la primera letra con una variable terminal y las letras restantes con unas nuevas variables. Por ejemplo, así:
S -> aabbb. (initial rule, not in Chomsky Normal Form)
S -> XC, where X->a and C->abbb.
C -> XD, where X->a and D->bbb.
D -> YE, where Y->b and E->bb.
E -> YY, where Y->b and Y->b.
Acabamos de pasar por este proceso para todas las 6 cuerdas, lo que genera una gran cantidad de nuevas variables intermedias.
El primero que hay que comprobar es, ¿ha leído [Wikipedia] (http://en.wikipedia.org/wi ki/Chomsky_normal_form)? – Nayuki
Solicitud de aclaración: ¿Qué es lambda? ¿Es un símbolo terminal? – Nayuki
sí, ¿por qué? No tengo idea de lo que dice la última regla. Lambda es el Epsilon en wikipedia, va a null – tehman