Processing math: 100%

5 votos

Prueba de corrección de gramática

Estoy teniendo dificultades en la demostración de la corrección de las gramáticas. El siguiente problema y mi pena intentar resolver es mostrar que no puedo entender incluso los fundamentos de tales pruebas. Muy frutstrating....

Podría alguien que me señale en la dirección correcta?

El libro de texto utilizado en mi clase de "Introducción a la Teoría de Autómatas, Lenguajes y Computación (2ª Edición) por Juan Hopcroft". Contiene una breve descripción de cómo manejar estas pruebas en la página 179, en el cuadro de "La Forma de las Pruebas Sobre las Gramáticas". Él utiliza un lenguaje de palíndromos como ejemplo, que es mucho más fácil que el siguiente problema (en mi humilde opinión).

Hay algún lugar donde puedo encontrar ejemplos de la gramática de las pruebas?

Gracias! .. y aquí está el problema:

"Vamos a L ser el idioma en el ({a,b}), de todas las cadenas con un número igual de 'a' y 'b'.

Sϵ|aB|bA
AaS|bAA
BbS|aBB

Demostrar que G genera lenguaje L. "

w,Gw|w|a=|w|b

Demostrando el lado izquierdo por inducción sobre el número de derivación pasos y el lado derecho de la longitud de w Base: Lado izquierdo (una derivación de paso):
Gϵ
|ϵ|a=|ϵ|b

Lado derecho (longitud de w es 0):

|ϵ|a=|ϵ|b
Gϵ

Inducción: Lado derecho (longitud de w es n+1)

w=sa (es un símbolo y |s|=n)
|s|a=|s|b (hipótesis inductiva)
Gssa

Yo no puedo ir hormiga más... :(

4voto

DiGi Puntos 1925

Usted tiene que demostrar dos cosas:

  1. Para cada una de las w{a,b} si Gw,|w|a=|w|b.

  2. Para cada una de las w{a,b} si |w|a=|w|b,Gw.

A veces una prueba por inducción es más fácil si usted probar algo más fuerte que el resultado deseado. Yo probaría (1) en la prueba de los siguientes más fuerte

Reclamo: Para u{S,A,B,a,b} deje α(u)=|u|a+|u|Aβ(u)=|u|b+|u|B. Vamos S=u0u1u2un be a derivation in G, where uk{S,A,B,a,b} for k=0,,n. Then α(uk)=β(uk) for k=0,,n. In particular, if un{a,b}, then |w|A=|w|B=0, so |un|a=α(un)=β(un)=|un|b, and therefore un\enL.

Me gustaría probar esto por inducción en n, la longitud de la derivación. La única derivación de longitud 1 es la que ya tiene, Sϵ, e α(S)=β(S)=α(ϵ)=β(ϵ)=0, por lo que tenemos la inducción comenzó bien. Ahora supongamos que la Afirmación es verdadera para todas las derivaciones de longitud en la mayoría de las n, y vamos a S=u0u1u2unun+1 be a derivation of length n+1. Then S=u0u1u2un is a derivation of length n, so by the induction hypothesis α(uk)=β(uk) for k=0,,n. To complete the induction step you must show that α(un+1)=β(un+1). You do this by investigating how each of the productions of G changes α(un) and β(un). Suppose, for instance, that the derivation unun+1 uses the production \abAA. Then |un+1|a=|un|a, |un+1|A=|un|A+1, |un+1|b=|un|b+1, and |un+1|B=|un|B, so α(un+1)=α(un)+1=β(un)+1=β(un+1), como se desee. Voy a dejar las otras seis producciones.

Añadido: La prueba de (2) es por inducción sobre la longitud de w, que por supuesto debe ser, incluso si |w|a=|w|b. Tienes esto empezó bien: si |w|=0,w=ϵ, e Gϵ.

Supongamos ahora que si |w|<2n|w|a=|w|b,Gw; esa es su hipótesis de inducción. Deje w{a,b} ser tal que |w|=2n|w|a=|w|b=n; usted necesita para demostrar que Gw.

Hay dos casos. El más simple es cuando se w es la concatenación de dos cortas palabras pertenecientes a L; en ese caso, simplemente podemos "pegar" las derivaciones de la corta de palabras. He aquí una manera de hacer que precisa.

Deje w=s1s2s2n, donde cada una de las sk{a,b}. Para k=1,,2n vamos m(k)=|s1sk|a|s1sk|b, the excess of un's over b's in the first k letters of w. Suppose that m(k)=0 for some k<2n; then k is even, and the words u=s1sk and v=sk+1s2n belong to L. (Why?) By the induction hypothesis, therefore, there are derivations S=u0u1up1up=u and S=v0v1vq1vq=v. The only terminal production is Sϵ, so it must be the case that up1=xSy, where x,y{a,b} are such that xy=u. If x=u and y=ϵ, we can simply paste (1) and (2) together: S=u0u1up1=uS=uv0uv1uvq1uvq=uv=w, and therefore Gw, como se desee.

Si yϵ, me afirmación de que la derivación de w puede ser reorganizado de modo que up1=uS, y, a continuación, podemos pegar el reordenado derivación junto con (2) a ver que Gw. Cada producción con la excepción de Sϵ deja un símbolo no terminal en la mano derecha final de la palabra, así que debe haber algo de k<p tal que uk=xS uk+1=x algunos x{S,A,B,a,b}. A continuación, x=uk+1w es un legítimo derivación en G, lo SxSwSw es un legítimo derivación de w cuyo último paso nos permite pegarlo junto con el (2).

Tenga en cuenta que m(k) m(k+1) siempre difieren en exactamente 1, por lo que si m(k) nunca cambia de signo como k pistas de12n, debe haber alguna k<2n tal que m(k)=0. Ahora supongamos que w no es la concatenación de dos cortas palabras de L; lo que significa que m(k)01k<2n, lo m(k) no cambia de signo k pistas de12n. Si s1=a,m(1)=1, e m(k)>01k<2n: cada apropiado segmento inicial de w a's de b's. Pero sabemos que m(2n)=0, ya que el wL, por lo que debe ser el caso de que m(2n1)=1, e s2n=b. Del mismo modo, si s1=b, luego m(1)=1, m(k)<0 para 1k<2n, cada apropiado segmento inicial de w b's de a's, y s2n=a.

En el primer caso w=aub algunos u{a,b}, y en el segundo caso w=bua; en cualquier caso, es claro que uL. (Por qué?) Por otra parte, |u|<2n, de modo que por la hipótesis de inducción Gu. Se puede ver cómo modificar la derivación de u para obtener una derivación de w, y de esta manera completar la inducción paso?

2voto

Saif Bechan Puntos 3916

Para mostrar que cada palabra que puede ser producido por la gramática G contiene un número igual de 'a' y 'b' demostrar por inducción que en cada paso el número de "a", más el número de 'A' es igual al número de la " b " más el número de 'B'. Tenga en cuenta que la palabra inicial, S tiene esta propiedad y que es conservado por cualquiera de las reglas de producción. Ya que la palabra no puede contener el los símbolos no terminales de la 'a' y 'B' debe contener un número igual de 'a' y 'b'.

Para el reverso de la inclusión, vamos a w ser una palabra que contiene un número igual de 'a' y 'b' y el uso de la inducción por la longitud de la palabra para mostrar que w puede ser producido por G. Si w es la palabra vacía, sólo tiene que utilizar la regla de Sε. De lo contrario, w debe contener ab o ba como una subcadena, w.l.o.g. deje w=uabv palabras uv. A continuación, uv contiene un número igual de 'a' y 'b', por lo que puede ser producido en G por la hipótesis de inducción. En la izquierda de la derivación de uv, debe haber algo intermedio palabra uXy donde X es un símbolo no terminal, es decir,X{S,A,B}. Por las reglas dadas, es posible deducir abX X (por ejemplo,AaSabA, igualmente paraBS). Así que usted puede derivarse uabXyG. A continuación, como en la derivación de uv para obtener una derivación de w=uabv.

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