Edición de «Demostraciones (Teoría de Lenguajes)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 54: Línea 54:
== Lema de Pumping (LIC) ==
== Lema de Pumping (LIC) ==


=== Altura del árbol ===
=== Altura del arbol ===


La altura del árbol de derivación es la longitud del camino más largo en el árbol de derivación tal que comienza en la raíz y el final es una hoja (definicion natural de arbol). Vale que la hoja siempre es un terminal o <math>\lambda</math>. Notar que en el árbol de derivación, la base (hojas leídas en preorder) es igual a la cadena derivada.
La altura del arbol de derivacion es la longitud del camino más largo en el arbol de derivacion tal que comienza en la raiz y el final es una hoja (definicion natural de arbol). Vale que la hoja siempre es un terminal. Notar que en el arbol de derivacion, la base (hojas leidas en preorder) es igual a la cadena derivada.


Sea una gramatica donde <math>a</math> es la longitud del lado derecho más largo entre todas las producciones. Dado un árbol T para una cadena <math>\alpha</math>, vale que <math>| \alpha | \leq a^h</math>, donde <math>h</math> es la altura del arbol.  
Sea una gramatica donde ''a'' es la longitud del lado derecho más largo entre todas las producciones. Dado un arbol T para una cadena alfa, vale que <math>| \alpha | \leq a^h</math>, donde ''h'' es la altura del arbol.  


La demostración se hace por inducción sobre la altura. El caso base con h = 0 es trivial (<math>\alpha = S \implies | \alpha | = 1 \leq a^0 = 1</math>). El paso inductivo para <math>h + 1</math> se basa en que la base correspondiente a la altura <math>h</math>, llamémosla <math>\gamma</math>, cumple la HI; y como <math>\alpha</math> se deriva a partir de <math>\gamma</math> expandiendo a lo sumo <math>| \gamma |</math> simbolos no terminales, entonces <math>| \alpha | \leq a * | \gamma | \leq a * a^h = a^{h + 1}</math>.
La demostracion se hace por induccion sobre la altura. El caso base con h = 0 es trivial. El paso inductivo se basa que la base correspondiente a la altura ''h'', llamemosla <math>\gamma</math>, cumple la HI; y como <math>\alpha</math> se deriva a partir de <math>\gamma</math> expandiendo a lo sumo <math>| \gamma |</math> simbolos no terminales, entonces <math>| \alpha | \leq a * | \gamma |</math>.


=== Pumping (LIC) ===
=== Pumping (LIC) ===
Línea 66: Línea 66:
El lema de pumping para LIC es similar al de gramaticas regulares. La idea es que para toda cadena que supere una longitud critica ''n'' del lenguaje (puede tomarse <math>a^{|V_N|+1}</math>), la cadena pueda descomponerse en 5 partes ''r,x,y,z,s'' tal que puedan insertarse tantas repeticiones de ''x'' y ''z'' como se desee y que la cadena se mantenga en el lenguaje. Se pide ademas que la longitud de ''x+z'' sea no nula (para que haya algo a insertar) y que ''x+y+z'' no supere a '''n'''.
El lema de pumping para LIC es similar al de gramaticas regulares. La idea es que para toda cadena que supere una longitud critica ''n'' del lenguaje (puede tomarse <math>a^{|V_N|+1}</math>), la cadena pueda descomponerse en 5 partes ''r,x,y,z,s'' tal que puedan insertarse tantas repeticiones de ''x'' y ''z'' como se desee y que la cadena se mantenga en el lenguaje. Se pide ademas que la longitud de ''x+z'' sea no nula (para que haya algo a insertar) y que ''x+y+z'' no supere a '''n'''.


Decimos que un árbol de derivación mínimo T para la cadena <math>\alpha</math> es uno de altura mínima tal que no existe otro de la misma altura que tenga menos derivaciones. La demostración parte de un árbol T mínimo para una cadena <math>\alpha</math> con <math>|\alpha| \geq n</math>. Usando el lema anterior, puede probarse que <math>a^h \geq | \alpha| \geq n = a^{|V_N|+1}</math>, lo que lleva a que <math>h \geq |V_N|+1</math>.
La demostracion parte de una cadena <math>\alpha</math> y un arbol de derivacion minimo T (es decir, de altura minima). Usando el lema anterior, puede probarse que <math>a^h \geq | \alpha| \geq n = a^{|V_N|+1}</math>, lo que lleva a que <math>h \geq |V_N|+1</math>.


En otras palabras, si la cadena es lo suficientemente grande, entonces la altura del arbol que la genera sera mayor estricto a la cantidad de simbolos no terminales que tiene la gramatica. Por lo tanto, recorriendo la rama mas larga del arbol, debe haber por lo menos un no terminal repetido (supongamos ''A'').
En otras palabras, si la cadena es lo suficientemente grande, entonces la altura del arbol que la genera sera mayor estricto a la cantidad de simbolos no terminales que tiene la gramatica. Por lo tanto, recorriendo la rama mas larga del arbol, debe haber por lo menos un no terminal repetido (supongamos ''A'').
Línea 75: Línea 75:


Esto significa que ''A'' deriva (en uno o mas pasos) tanto en ''y'' como en ''xyz'', y que ''S'' deriva en ''rAs''. Haciendo induccion en la cantidad de apariciones de ''x'' y ''z'' (caso base es cero) es sencillo ver que ''A'' termina derivando en ''xAz'' o ''y'', con lo que <math>r x^i y z^i s</math> es forma sentencial del lenguaje.
Esto significa que ''A'' deriva (en uno o mas pasos) tanto en ''y'' como en ''xyz'', y que ''S'' deriva en ''rAs''. Haciendo induccion en la cantidad de apariciones de ''x'' y ''z'' (caso base es cero) es sencillo ver que ''A'' termina derivando en ''xAz'' o ''y'', con lo que <math>r x^i y z^i s</math> es forma sentencial del lenguaje.
Nos falta ver que <math>|xz| > 0</math>. Llamemos <math>A_2</math> a la aparición más baja de A, y <math>A_1</math> a la que le precede. Supongamos que <math>|xz| = 0</math>. Esto quiere decir que podríamos reemplazar el subárbol con raíz en <math>A_1</math> por el árbol con raíz en <math>A_2</math> y tener un árbol T' que genera la misma cadena <math>\alpha</math>. Como <math>A_2</math> ocurre después que <math>A_1</math>, T' tendría menos derivaciones que T. Pero dijimos que T es un árbol mínimo. Absurdo, que vino de suponer que <math>|xz| = 0</math>.
'''NOTA''': Un detalle importante que se toma en el final (y que no queda tan claro en los apuntes) es la justificación de que <math>|xyz| \leq a^{|V_N|+1} </math> (en el dibujo es vwx).
La respuesta es sencilla, recorremos el árbol de abajo hacia arriba buscando la segunda aparición de A, la cantidad  MÁXIMA de no terminales por los que tenemos que pasar hasta encontrar el primer repetido es <math>|V_N|+1 </math>. Esa es la justificación por la que podemos afirmar que ese subárbol tiene esa altura y de ahí acotar la longitud de <math>xyz</math>.


== Decidibilidad ==
== Decidibilidad ==
Línea 440: Línea 435:
<br/><math>A' \rightarrow \beta _1 | \beta _2</math>
<br/><math>A' \rightarrow \beta _1 | \beta _2</math>


Notar que a pesar de los algoritmos para eliminar factorización y recursividad a izquierda, puede haber lenguajes para los que no haya una gramática LL(1) que los reconozca (por ejemplo, cualquier lenguaje libre de contexto no determinístico, como ser <math>ww^r</math>).
Notar que a pesar de los algoritmos para eliminar factorización y recursividad a izquierda, puede haber lenguajes para los que no haya una gramática LL(1) que los reconozca (por ejemplo, cualquier lenguaje libre de contexto no determinístico, como ser wwr).


=== ASDP Recursivo ===
=== ASDP Recursivo ===
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)