Post on 02-Jun-2015
description
AUTOMATAS Y LENGUAJES FORMALES
TRABAJO COLABORATIVO DOS
LENGUAJES INDEPENDIENTES DEL CONTEXTO
PRESENTADO A:
INGENIERO MSC
CARLOS ALBERTO AMAYA TARAZONA
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA
UNAD CEAD DUITAMA – BOYACA
NOVIEMBRE 2012
INTRODUCCION
El presente trabajo corresponde al desarrollo del trabajo colaborativo número dos del curso de
Autómatas y lenguajes formales, en el aplicaremos los contenidos temáticos que se han adquirido del
estudio de la unidad dos del curso Lenguajes independientes del contexto.
Cuando necesitamos validar campos de texto en programación como por ejemplo nombres, números
de cedula, fechas de nacimiento entre otros muchos campos más y para realizarlo de una manera
sencilla y precisa podremos emplear los lenguajes regulares. Existen diversidad de métodos para
validar esta información contenida entre estos para ello se encuentran los Autómatas de Pila que
contienen las expresiones regulares, que tienen parecido a una especie de lenguaje que se puede
usar para buscar, remplazar y sobreponer ciertos patrones en un texto, trabajable casi de manera igual
que los Autómatas Finitos y no Finitos. Un autómata con pila o autómata de pila o autómata a pila o
autómata apilador es un modelo matemático de un sistema que recibe una cadena constituida por
símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autómata reconoce. El
lenguaje que reconoce un autómata a pila pertenece al grupo de los lenguajes de contexto libre en la
clasificación de la Jerarquía de Chomsky.
OBJETIVOS
GENERAL
Reconocer los lenguajes independientes del contexto y sus diversas aplicaciones.
OBJETIVOS ESPECIFICOS
Analizar la estructura de las gramáticas independientes del contexto.
Estudiar el concepto de los autómatas de pila, su funcionamiento y los lenguajes
utilizados.
Distinguir los lenguajes independientes del contexto existentes y sus propiedades, así
como los algoritmos de decisión.
Generalizar los conceptos de autómatas finitos y gramáticas regulares.
Reconocer el potencial de procesamiento del lenguaje del autómata con los
Autómatas de pila.
1. Calcular el autómata mínimo correspondiente al siguiente autómata finito determinista.
ACTIVIDADES ANTES DE MINIMIZAR.
1. Identifique los componentes del autómata (que tipo de tupla es).
Autómata Finito No Determinista por lo cual su tupla es:
5-tupla A= (Q, Σ, q0, δ, A)
Q es un conjunto de estados;
Σ es un alfabeto;
δ: Q x Σ → Q es una función de transición para un AFD;
q0 ϵ Q es el estado inicial;
A C Q es un conjunto de estados finales o de aceptación.
A= ({q0, q2, q3, q4, q5, q6, q7}, {1, 0}, δ, {q0, q0, q2, q3, q4})
δ:=(q0,0) = {q1} δ:=(q0,1) = {q6}
δ:=(q1,0) = {q2} δ:=(q1,1) = {q3}
δ:=(q2,0) = {q1} δ:=(q2,1) = {q5}
δ:=(q3,0) = {q1} δ:=(q3,1) = {q4}
δ:=(q4,0) = {q7} δ:=(q4,1) = {q4}
δ:=(q5,0) = {q7} δ:=(q5,1) = {q3}
δ:=(q6,0) = {q7} δ:=(q6,1) = {q3}
δ:=(q7,0) = {q7} δ:=(q7,1) = {q3}
2. Identifique la tabla de transición
0 1 # q0 q1 q6
q1 q2 q3# q2 q1 q5# q3 q1 q4# q4 q7 q4# q5 q7 q3 q6 q7 q3 q7 q7 q3
Cada fila la corresponde a un estado q ∈ Q
El estado inicial se precede del símbolo →
Cada estado final se precede del símbolo #
Cada columna corresponde a un símbolo de entrada x ∈ Σ
Se debe identificar la función δ
3. Identifique el lenguaje que reconoce y las posibles cadenas.
L= {A ϵ {1, 0} | A= 1i 0i ,i >=1}
Posibles cadenas
110000101
110101
00101
01
011
11101
110000000101
111101
1111011111111
4. Encuentre la expresión regular válida. (Compruebe una cadena válida de esa expresión regular en el simulador). Identifique sus componentes.
La expresión regular válida para el autómata es:
((0+1(0+111*0)*10)(10+111*0(0+111*0)*10)*0)*(λ+1(0+111*0)*(1+111*)+(0+1(0+111*0)*10)(10+111*0(0+111*0)*10)*(1+111*+111*0(0+111*0)*(1+111*)))
Comprobación en simulador:
Comprobación de cadenas validas en el simulador
El propósito de las ER (que no son más que simples fórmulas) es representar cada una de ellas un lenguaje.
5. Encuentre su gramática que sea válida para la función de transición (describa sus componentes y como se escriben matemáticamente). Justifíquela si la convierte a la Izquierda o a la derecha. Plásmela en el simulador y recréela. (Debe quedar documentado en el texto el paso a paso que realizan en el simulador)
La gramática válida para la función de transición es:
Izquierda DerechaS → λS → 0AF → 1CC → 1DG → 1CA → 0BB → 0AE → 0GB → λS → 1FC → 0AC → λA → 1CE → 1CD → 1DG → 0GD → 0GF → 0GD → λB → 1E
La conversión se hace a la Izquierda porque es lineal a la derecha ya que el mismo lenguaje es generado por la siguiente gramática línea por la derecha.
Gramatical en Jflap
Abrimos el Simulador y seleccionamos gramática:
Luego ingresamos la gramática en el simulador:
Ahora comprobamos si las cadenas que son válidas con respecto a la gramática del autómata para ello nos vamos a Input y luego a multiple brute forcé parse e ingresamos las cadenas que deseamos validar:
El simulador nos indica que cadenas fueron aceptadas y cuales rechazadas.
Las gramáticas son mecanismos generadores de lenguajes, es decir, nos dicen cómo podemos obtener o construir palabras de un determinado lenguaje.
6. Realice el árbol de Derivación de esa gramática.
El árbol de derivación es demasiado grande para ser plasmado gráficamente.
Un árbol ordenado y etiquetado es un árbol de derivación para una gramática libre de contexto
7. Identifique si ese árbol ó gramática es ambigua o no y plasme las razones de su afirmación.
La gramática del árbol no es ambigua se trata de una gramática univoca ya que es una gramática libre de contexto que tiene asociado un solo árbol de derivación para toda cadena del lenguaje.
Ejemplo para la cadena (101) el único árbol de la gramática que la puede representar es el siguiente:
8. Si el árbol de transición es demasiado grande, a su criterio seleccione una regla en la que se detenga por cualquier rama (izquierda o derecha) y plásmelo hasta ahí.
La siguiente es una regla para detener el árbol de transición por la derecha:
(S→1F)(F→1C)(C→0A)(A→1C)(C→0A)(A→1C)(C→ λ)
Regla Derivación Árbol
S → 1FF → 1CC → 0AA → 1CC → 0AA → 1CC → λ
S1F11C110A1101C11010A110101C110101
ACTIVIDADES PARA EL EJERCICIO A MINIMIZAR O YA MINIMIZADO:
9. Explicar el proceso de Minimización (que estados se suprimen y porque).
Paso 1: Se crean dos subconjuntos, uno formado por los estados no finales y el otro por los estados finales.
No finales Finales{q1, q5, q6, q7} {q0, q2, q3, q4}
Paso 2: Aplicar a los dos subconjuntos formados en el paso anterior, las transiciones del AFD, en este caso aplicaremos para los subconjuntos la transición “0”.
No finales Finales{q1, q5, q6, q7} {q0, q2, q3, q4}
0 q2, q7, q7, q7 q1, q1, q1, q7
Paso 3: Se separan del subconjunto los estados de un subconjunto que al aplicarle la transición se comporta de manera diferente a los demás estados del subconjunto. Esto es, el que se desplaza hacia el estado final en nuestro caso es q1 para los estados no finales y q4 para los estados finales.
No finales Finales{q1, q5, q6, q7} {q1} {q0, q2, q3} {q4}
Repetimos el paso dos
Paso 2: Aplicar a los dos subconjuntos formados en el paso anterior, las transiciones del AFD, en este caso aplicaremos para los subconjuntos la transición “1”.
No finales Finales{q5, q6, q7} {q1} {q0, q2, q3} {q4}
1 q3, q3, q3, q1 q6, q5, q4 q4
Repetimos el paso tres
Paso 3: Se separan del subconjunto los estados de un subconjunto que al aplicarle la transición se comporta de manera diferente a los demás estados del subconjunto. Esto es, el que se desplaza hacia el estado final en nuestro caso es q0 para los estados no finales y q3 para los estados finales.
No finales Finales{q5, q6, q7} {q1} {q0, q2} {q3} {q4}
Repetimos el paso dos
Paso 2: Aplicar a los dos subconjuntos formados en el paso anterior, las transiciones del AFD, en este caso aplicaremos para los subconjuntos la transición “1” y “0”.
No finales Finales{q5, q6, q7} {q1} {q0, q2} {q3} {q4}
1 q3, q3, q3, q3 q6, q5 q4 q40 q7, q7, q7 q2 q1, q1 q1 q7
Como no se reflejan cambios al aplicar este paso hemos llegado al final de los procedimientos a seguir por lo tanto tenemos nuestro autómata al mínimo.
Paso 4: Elaboramos la tabla de transición del autómata minimizado, en base a los subconjuntos formados. Para los subconjuntos que tengan más de un estado se debe elegir un estado que sea representante del subconjunto y remplazarlo en la tabla de transición por su respectivo representante esto con el fin de eliminar estados repetidos.
Autómata Minimizado Eliminación Estados Nuevo AutómataEstados Finales
1 0
q0 q6 q1q2 q5 q1
q3 q4 q1
q4 q4 q7
1 0
q0 q5 q1q0 q5 q1
q3 q4 q1
q4 q4 q5
1 0
q0 q5 q1
q3 q4 q1
q4 q4 q5
Estados No finales
1 0
q5 q5 q7q6 q3 q7q7 q3 q7
q1 q3 q2
1 0
q5 q3 q5q5 q3 q5q5 q3 q5
q1 q3 q0
1 0
q5 q3 q5
q1 q3 q0
Paso 5: En este paso se elabora la tabla de transición y se grafica el nuevo autómata minimizado.
Para realizar la tabla de transición de nuestro autómata minimizado se ordenaran los estados y se asignan nuevos estados ordenados en base a las transiciones del autómata minimizado.
Equivalencia ordenada de estados Nueva tabla de estados1 0
q0 = q0q3 = q1q4 = q2q5 = q3q1= q4
q0q1q2q3q4
q3q2q2q1q1
q4q4q3q3q0
10. Que transiciones se reemplazan o resultan equivalentes.
Las transiciones equivalentes son:
1 0
q0 q6 q1
q2 q5 q1
q5 q5 q7
q6 q3 q7
q7 q3 q7
Por lo tanto podemos eliminar por ser equivalentes:
δ:=(q2,1) = {q5} δ:=(q2,0) = {q1}
δ:=(q6,1) = {q3} δ:=(q6,0) = {q7}
δ:=(q7,1) = {q3} δ:=(q7,0) = {q7}
11. Escribir la función de transición del nuevo autómata.
Función de transición
δ= Q x Σ → Q
δ:=(q0,0) = {q4} δ:=(q0,1) = {q3}
δ:=(q1,0) = {q4} δ:=(q1,1) = {q2}
δ:=(q2,0) = {q3} δ:=(q2,1) = {q2}
δ:=(q3,0) = {q3} δ:=(q3,1) = {q1}
δ:=(q4,0) = {q0} δ:=(q4,1) = {q1}
12. Identificar la expresión regular (explicarla en la lectura matemática que se le debe hacer).
La expresión regular para el autómata minimizado es:
(00+ (10*1+01) (01+11*00*1)*00)*(λ+(10*1+01)(01+11*00*1)*(λ+11*))
13. Compruebe una cadena válida para esa expresión regular.
14. Identificar el lenguaje que reconoce y las posibles cadenas.
L= {A ϵ {1, 0} | A= 1i 0i ,i >=1}
Posibles cadenas
1100001011101010010101011
15. Identificar su gramática. Demuéstrela para una cadena válida del autómata.
Gramática del autómata Demostración de una cadena valida S → 0D
S → 1CS → λD → 0SA → 0DD → 1AB → 1BC → 0CA → 1BB → 0CB → λA → λC → 1A
16. Expresarlo o graficarlo con su respectivo diagrama de Moore.
17. Identificar sus tablas de Transición (plasmarlas)
1 0 # q0 # q1 # q2 q3 q4
q3q2q2q1q1
q4q4q3q3q0
18. Plasmar los pasos de minimización en el simulador y capturar los procesos en imágenes para ser documentadas en el texto.
Primer paso: Construir el autómata en el simulador
Segundo Paso: Seleccionar en el menú convert luego vamos a la opción miniminize DFA
Tercer Paso: Seleccionamos los estados no finales y hacemos click en Complete Subtree, ahora hacemos click en los estados finales y luego hacemos clic en Complete Subtree.
Cuarto Paso: Damos click en Finish y luego en el botón completar para realizar las transiciones.
Quinto paso: Damos click en el botón Done? el programa nos envía una ventana de mensaje en la cual nos dice que la minimización del autómata está hecha y que se abrirá una nueva ventana con el autómata minimizado, damos aceptar y listo ya tenemos nuestro autómata minimizado, ahora solo debemos ordenarlo para que se pueda visualizar mejor.
2. Construya el autómata de Pila Correspondiente
Diseñe un AP que acepte el Lenguaje x n+1 yn para cualquier número natural n.
L= { x n+1 yn }
Las posibles cadenas que acepta el autómata pueden ser:
(xxy) (xxyxxy) (xxyxxyxxy)
Un autómata con pila puede ser descrito como una séptupla M= (Q, A, B, δ, q0, Z0 F)
M= ({q0, q1, q2, q3}, {x, y},{A}, δ, q0, x, {q3}
19. Grafíquelo en JFLAP y realice el “Traceback” para las transiciones. (Las columnas para un AP son: El estado en que se encuentra el autómata, lo que falta por leer de la palabra de entrada, y el contenido de la pila).
Graficado en JFLAP
Traceback para las Transiciones
20. Plasme las imágenes y capturas en el documento. (Documente el proceso)
Traza para la cadena (xxy)
Para comprobar la validez de esta cadena hacemos click en Input luego nos vamos a step with closure, nos aparece otra ventana allí digitaremos la cadena que deseamos comprobar y le diremos que hasta el estado final, Seguido daremos click en step para recorrer el autómata por cada uno de sus estados hasta el estado final.
Si hacemos click en Trace se abre otra ventana en la cual nos muestra la traza de ejecución para esa cadena.
21. Muestre el diagrama correspondiente de estados.
Diagrama de estados
Para los autómatas con pila se pueden hacer diagramas de estados, similares a los ya conocidos, pero resultan de poca utilidad práctica ya que el procesamiento completo de una cadena de entrada depende del contenido de la pila, el cual puede cambiar en cada paso computacional.
ESTADO POR LEER PILAqqqq
xxyxxyxyy
xxxxxy
22. Identifique los contenidos de la pila y el estado de parada.
3. Construcción de Autómatas
Para los siguientes dos autómatas:
23. Identifique la tupla que los define y justifique en que difieren.
Una tupla está definida por: M=(S,Σ,T,s A)
AUTOMATA A AUTOMATA B
TUPLA M=({q6,q2}, {x,y},δ, q6, {q2})
δ:=(q6,x) = {q6} δ:=(q6,y) = {q2}δ:=(q2,x) = {q2} δ:=(q2,y) = {q2, q6}
M=({q5,q0, q4}, {x,y},δ, q5, {q0,q4})
δ:=(q5,x) = {q5} δ:=(q5,y) = {q0}δ:=(q0,x) = {q0} δ:=(q0,y) = {q4}δ:=(q4,x) = {q4} δ:=(q4,y) = {q4}
El autómata A difiere del autómata B principalmente en el número de estados ya que para A el número de estados es dos mientras que para B es de tres estados, De igual forma para el autómata A se tiene que posee un solo estado de aceptación mientras que el autómata B posee dos estados de aceptación, Partiendo de estos hechos notaremos que la función de transición es diferente.
24. Que lenguaje reconoce cada Autómata y justifique si es el mismo o no.
AUTOMATA A AUTOMATA B
Lenguaje L= {A ϵ {x, y} | A= xn yn ,n >=1} L= {A ϵ {x, y} | A= xn yn ,n >=1}
El lenguaje que reconocen los dos autómatas es el mismo ya que ambos lenguajes generan cadenas validas en base a las transiciones del autómata, el lenguaje nos dice que “A” pertenece a (x) y (y) tal que “A” es igual a (xn) y (yn) donde n es mayor o igual a uno.
25. Identifique si son AFD o AFND. (Tenga en cuenta todas las variables a tener en cuenta para calificar un autómata o para clasificarlo como tal)
Tanto el autómata A como el autómata B son autómatas finitos no deterministas AFND. Porque nuestro autómata A en el estado q2 salen dos transiciones con el mismo símbolo e independientemente de esta regla también tiene más de una transición en sus estados. Igual caso para el autómata B este posee más de una transición en uno o mas estados.
26. Plásmelo en los simuladores y genere la ER de cada uno y evalúelas (compárelas).
Autómata A
Expresión regular
(x*x(y+x)*y)*x*x(y+x)*
Autómata B
Expresión regular
ER= yx*+yx*y(x+y)
4. Gramáticas
Sean L1 el lenguaje generado por la gramática G1 y L2 el lenguaje generado por la gramática G2
S → xAByA → xzS | BB → yz | λ
S → xAyzy | xAyA → xzS | yz | λ
Gramática G1 Gramática G2
27. Obtener el autómata Finito para cada gramática (plasme los diagramas de Moore)
Gramática G1
Autómata Finito Diagrama de Moore
Gramática G2
Autómata Finito Diagrama de Moore
28. Justifique si las gramáticas son idénticas o no he identifique el Lenguaje que generan.
Las gramáticas no son idénticas pero generan el mismo lenguaje. Para verlo, basta sustituir el no-terminal B por las secuencias que puede generar. En los diagramas de moore podemos ver que son idénticos ya que no se alteran los estados de aceptación y la gramática se mantiene.
29. Identifique la ER para cada Autómata generado.
La expresión regular para el autómata de la gramática G1 es: xy (zy+yz*) y
La expresión regular para el autómata de la gramática G2 es: xy (yz*) y
30. Identifique y demuestre la palabra generable común tanto por la Gramática 1 como por la Gramática 2. (Use el simulador para verificarla).
La Gramática 1 y la Gramática 2 generan dos palabras comunes del lenguaje que son:
xyzy
xyzyzy
Usaremos el simulador para verificar estas palabras:
Verificación palabra xyzy para la Gramática 1
Verificación palabra xyzy para la Gramática 2
Verificación palabra xyzyzy para la Gramática 1
Verificación palabra xyzyzy para la Gramática 1
BIBLIOGRAFIA
MODULO
AUTÓMATAS Y LENGUAJES FORMALES
Edgar Alberto Quiroga Rojas Actualización: Carlos Alberto Amaya Tarazona
Gramáticas formales http://gramaticasformales.wordpress.com/
Grammatical regular http://es.wikipedia.org/wiki/Gram%C3%A1tica_regular
Gramaticas libres de context http://luzem.dyndns.org/2010/05/05/practica-8-gramaticas-libres-de-contexto-en-jflap/
Gramatica libre de contexto a pila http://luzem.dyndns.org/tag/gramatica-libre-de-contexto-a-
automata-de-pila/
lengujaes libres de Contexto http://teodelacomp.blogspot.com/2011/03/automatas-pushdown-presentan-ing.html
Minimizacion de un autómata http://www.youtube.com/watch?v=jd4cQ9yJj2c
Automata de pila http://www2.dis.ulpgc.es/~mluengo/automatas/teoria/tema4.pdf
Gramaticas y autómatas
De pila http://informatica.utem.cl/~rcorbin/files/talf/APUNTES_Y_GUIAS/Capitulo3.pdf