¿Cómo mostrar que L = L (G)?


22

Especificar idiomas formales al dar gramáticas formales es una tarea frecuente: necesitamos gramáticas no solo para describir idiomas, sino también para analizarlos, o incluso hacer ciencia adecuada . En todos los casos, es importante que la gramática en cuestión sea correcta , es decir, que genere exactamente las palabras deseadas.

A menudo podemos discutir en un alto nivel por qué la gramática es una representación adecuada del idioma deseado, omitiendo una prueba formal. Pero, ¿qué pasa si tenemos dudas o necesitamos una prueba formal por alguna razón? ¿Qué técnicas podemos aplicar?

Se supone que esto se convertirá en una pregunta de referencia . Por lo tanto, tenga cuidado de dar respuestas generales, presentadas didácticamente, que se ilustran con al menos un ejemplo pero que, sin embargo, cubren muchas situaciones. ¡Gracias!

Respuestas:


21

Las gramáticas son objetos inherentemente recursivos, por lo que la respuesta parece obvia: por inducción. Dicho esto, los detalles a menudo son difíciles de entender. En la secuela describiré una técnica que permite reducir muchas pruebas de corrección gramatical a pasos mecánicos, siempre que se realice un preprocesamiento creativo.

La idea básica es no restringirse a las palabras de gramática y lenguaje; Es difícil comprender la estructura de la gramática de esta manera. En cambio, discutiremos sobre el conjunto de oraciones que la gramática puede crear. Además, dividiremos un objetivo de prueba desalentador en muchos objetivos pequeños que son más manejables.

Deje que una gramática formal con los no terminales de , los terminales , las reglas y a partir símbolo . Denotamos por el conjunto de oraciones que se pueden derivar de dado , es decir, . El lenguaje generado por es . Supongamos que queremos mostrar que para algunos .N T δ S N ϑ ( G ) S δ α ϑ ( G )G=(N,T,δ,S)NTδSNϑ(G)SδG L ( G ) = ϑ ( G ) T L = L ( G ) L T αϑ(G)SαGL(G)=ϑ(G)TL=L(sol)LT

El ansatz

Así es como lo hacemos. Definimos para queMETRO1,...,METROk(norteT)

  1. ϑ(sol)=yo=1kMETROyo y
  2. Tyo=1kMETROyo=L .

Mientras que 2. generalmente es claro por definición de , 1. requiere un trabajo serio. Los dos elementos juntos implican claramente como se desee.L ( G ) = LMETROyoL(sol)=L

Para facilitar la notación, denotemos .METRO=yo=1kMETROyo

El camino rocoso

Hay dos pasos principales para realizar tal prueba.

  • ¿Cómo encontrar (bueno) ? METROyo
    Una estrategia es investigar las fases por las que funciona la gramática. No toda gramática es susceptible a esta idea; En general, este es un paso creativo. Ayuda si podemos definir la gramática nosotros mismos; Con cierta experiencia, podremos definir gramáticas más manejables con este enfoque.

  • ¿Cómo probar 1.?
    Como con cualquier conjunto de igualdad, hay dos direcciones.

    • Gϑ(sol)METRO : (estructural) de inducción sobre las producciones de .sol
    • M i SMETROϑ(sol) : Por lo general, una inducción por , a partir de la que contiene .METROyoS

Esto es tan específico como se pone; los detalles dependen de la gramática y el idioma en cuestión.

Ejemplo

Considera el idioma

L={unanortesinortedometronorte,metronorte}

y la gramática con dada porδsol=({S,UNA},{una,si,do},δ,S)δ

SSdoUNAUNAunaUNAsiε

para lo cual queremos mostrar que . ¿Cuáles son las fases por las que funciona esta gramática? Bueno, primero genera luego . Esto informa inmediatamente nuestra elección de , a saberc m a n b n M iL=L(G)cmanbnMi

M0={ScmmN},M1={anAbncmm,nN},M2={anbncmm,nN}.

Como y , el elemento 2. ya se ha . Hacia 1., dividimos la prueba en dos partes como se anunció.M 0T = M 1T = M2=LM0T=M1T=

ϑ(G)M

Realizamos inducción estructural a lo largo de las reglas de .G

IA: Dado que anclamos con éxito.S=Sc0M0

IH: Supongamos por un conjunto de frases que también sabemos .X MXϑ(G)XM

IS: Deje arbitrario. Tenemos que demostrar que cualquiera de sus formas tiene y lo que se aplica la regla siguiente, que no deje . Hacemos esto por distinción de caso completo. Por hipótesis de inducción, sabemos que (exactamente) se aplica uno de los siguientes casos:α MαXϑ(G)MαM

  • w = S c m m N MwM0 , es decir para algunos . Se pueden aplicar dos reglas, las cuales derivan una oración en : w=Scmetromnorte
    METRO
    • SdometroSdometro+1METRO0 0 y
    • SdometroUNAdometro=una0 0UNAsi0 0dometroMETRO1 .
  • w = a n A b n c m m , n NwMETRO1 , es decir, para algunos : w=unanorteUNAsinortedometrometro,nortenorte
    • wunanorte+1UNAsinorte+1dometroMETRO1 y
    • wunanortesinortedometroMETRO2 .
  • w T wMETRO3 : dado que , no son posibles más derivaciones.wT

Como hemos cubierto con éxito todos los casos, la inducción se ha completado.

ϑ(sol)METRO

Realizamos una prueba (simple) por . Observe cómo encadenamos las pruebas para que "posterior" pueda anclar utilizando el "anterior" .M i M iMETROyoMETROyoMETROyo

  • m S c 0 = S S S cMETRO1 : Realizamos una inducción sobre , anclando en y usando en el paso.metroSdo0 0=SSSdo
  • m n A c m S S c m A c m A a A bMETRO2 : fijamos en un valor arbitrario e inducimos sobre . en , usando esa por la prueba anterior. El paso avanza a través de .metronorteUNAdometroSSdometroUNAdometroUNAunaUNAsi
  • METRO3 : Para arbitrario usamos la prueba anterior para .metro,nortenorteSunanorteUNAsinortedometrounanortesinortedometro

Esto concluye la segunda dirección de la prueba de 1., y hemos terminado.

Podemos ver que explotamos mucho que la gramática es lineal . Para gramáticas no lineales, necesitamos con más de un parámetro variable (en la (s) prueba (s)), que puede volverse feo. Si tenemos control sobre la gramática, esto nos enseña a mantenerlo simple. Considere como ejemplo disuasorio esta gramática que es equivalente a :METROyosol

SunaUNAsidoεUNAunaUNAsiεdododoε

Ejercicio

Dar una gramática para

L={sikunal(sido)metrounanortesiok,l,metro,norte,onorte,ko,2l=norte,metro2}

y probar su corrección.

Si tienes problemas, una gramática:

Considere con produccionesG=({S,Br,Bl,A,C},{a,b,c},δ,S)

SbSbBlBrBlbBlbABrBrbAbAaAaaCCbcCbcbc

y :Mi

M0={biSbiiN}M1={biBlbooN,io}M2={bkBrbikN,ik}M3={bkaiAa2ibok,o,iN,ko}M4={bkal(bc)iCa2lbok,o,l,iN,ko}M5=L

¿Qué pasa con las gramáticas no lineales?

La característica que caracteriza la clase de lenguajes sin contexto es el lenguaje Dyck : esencialmente, cada lenguaje sin contexto puede expresarse como la intersección de un lenguaje Dyck y un lenguaje regular. Desafortunadamente, el lenguaje Dyck no es lineal, es decir, no podemos dar una gramática que sea inherentemente adecuada para este enfoque.

Mi

  1. ϑ(G)L
  2. |L(G)Tn|=|LTn|nN

G nN

Para las gramáticas ambiguas y sin contexto, me temo que volvemos a ansatz one y pensamos en mayúsculas.


  1. Cuando usamos ese método particular para contar, obtenemos como bonificación que la gramática es inequívoca. A su vez, esto también significa que la técnica tiene que fallar para las gramáticas ambiguas, ya que nunca podemos probar 2.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.