2010-05-21 16 views
6

He intentado y he quemado mi cerebro para entender la definición de Lenguas Ordinarias en Discrete Mathematics and its Applications(Rosen) sin alcanzar el objetivo de entender por qué la definición es así en este libro. En la página (789), estoy reformular la definición:La Definición de Lenguajes Ordinarios

Tipo 3 gramáticas se definen como:

w1 --> w2 

que P1 es un no terminal, y W2 es de la forma:

w2 = aB 
w2 = a 

donde B es un no-terminal, y a es un terminal. Un caso especial es cuando W1 es el símbolo de inicio y W2 es lambda (la cadena vacía):

w1 = S 
S --> lambda 

Dos preguntas que no pude encontrar una respuesta para. Primero, ¿por qué no puede w2 tener el formato Ba. En segundo lugar, por qué lambda solo está permitido para el símbolo inicial solo. El libro afirma que, los idiomas regulares son equivalentes a la Automatización de estados finitos, y podemos ver fácilmente que podemos crear una FSA para ambos casos. Eché un vistazo a otros recursos, y estas restricciones no existen en estos recursos.

+0

¿Has verificado si el libro tiene alguna errata? –

+0

@David M No, no hice eso pero lo haré ahora.Curiosamente, en la página (795) el ejercicio # 19 (i, j) se resuelve exactamente de acuerdo con esta definición. – AraK

+0

Acabo de verificar la errata de la 6ª ed. y sin encontrar nada: http: //highered.mcgraw-hill.com/sites/dl/free/0072880082/299357/Rosen_errata.pdf – AraK

Respuesta

5

En primer lugar, ¿por qué no puede w2 ser de la forma Ba.

tomar las siguientes gramática con W como símbolo de inicio:

W -> lambda 
W -> aX 
X -> Wb 

genera {a n b n: natural n} que no es un lenguaje regular. Por lo tanto, esta restricción es esencial si desea generar solo idiomas regulares. Alternativamente, puede permitir w2 = Ba, pero prohíbe reglas de tipo w2 = aB - esto también da lenguajes regulares. Esa gramática construirá una palabra "hacia atrás".

Si permite ambos tipos de reglas, obtendrá una clase conocida como linear languages.

Segundo, porque lambda solo está permitido solo para el símbolo inicial.

Esto no es una restricción necesaria.

Puede eliminar todos los usos de lambda para símbolos no terminales: tome una regla W -> lambda, elimínela y reemplace todas las reglas U -> aw con U -> aw y U -> a. Obviamente, no puede eliminar el uso de lambda para símbolo de terminal (el idioma ya no producirá la palabra vacía).

Por lo tanto, cada gramática de tipo 3 que usa lambda en muchos lugares se puede "normalizar" a una gramática que utiliza lambda solo para el símbolo de inicio.

+0

Gran respuesta. Muchas gracias :) – AraK

Cuestiones relacionadas