You are on page 1of 7
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 PRACTICA N° 02: “AUTOMATAS FINITOS” |. QBJETIVoS ‘+ Comprender los conceptos basicos de autématas finitos. ‘© Evaluar secuencias de caracteres en un automata finito usando JFLAP y C++. Il. FUNDAMENTO TEORICO AUTOMATAS EN COMPUTACION Los autématas son sistemas capaces de transmit informacién. En sentido amplio, todo sistema que acepta sefiales de su entomo y, como resultado, cambia de estado y transmite otras sefiales al medio puede considerarse como un autémata. Con esta definicién, cualquier maquina, una central telefénica, una computadora, e incluso los seres vivos, los seres humanos y las sociedades se comportarian como automatas. Puede darse el caso de que la informacion que devuelve el autémata sea muy reducida: podria ser una sefial binaria (como el encendido o apagado de una lémpara), que indica si la entrada recibida por el autémata es aceptada o rechazada por éste. Tendriamos en este caso un autémata reconocedor. En el caso de los autématas en computacién, su aplicacién se ve enfocada en el procesamiento de lenguajes. La tarea de un autémata es la de comprobar 0 reconocer si una sentencia dada pertenece a un lenguajes determinado, es decir, hablamos de automatas reconocedores. AUTOMATAS FINITOS Un autémata finito se representa mediante un conjunto de nodos y aristas cuyo fin es generar una expresion bajo un alfabeto. Un diagrama de transicién es un automata finito. Una de las diferencias fundamentals entre las clases de autématas finitos es si dicha generacién es “determinista’, lo que quiere decir que el autémata no puede encontrarse en mas de un estado al mismo tiempo 0 “no determinista’, lo que significa que si puede estar en varios estados a la vez. AUTOMATAS FINITOS DETERMINISTAS (AFD) Una maquina de estados finitos M es un quintuplo (K, Z, 5, s, F), donde: Kes conjuntos de estados. Zes el allabeto de entrada, 5: KXE—K, es la funcién de transicién, que a partir de un estado y un simbolo del alfabeto obtiene un nuevo estado. 5 € Kes ol estado nical F & Kes un conjunto de estados finales. 8: KX E—K, es la funcién de transicion, que a partir de un estado y un simbolo del alfabeto obtiene un nuevo estado. Ejemplo: Figura 1. Autémata Finito Determinista Este autémata finito determinista puede ser expresado formalmente como: M = (K, , 6, 40, F) Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 1 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 K = {q0, q1, a2} (a, b} 5 = {((a0, a), 41), (gO, b), 42), ((41, a), 41), (41, B), 41), ((42, a), 40), ((42, b), 42)} F={qt,q2} IMPORTANTE: Para que un AFD sea valido, el nimero de transiciones que salen de cada estado debe ser igual a la cantidad de caracteres del alfabeto, puesto que 5 es una funcién que esté definida para todas las, entradas posibles. ‘+ Para el AFD anterior, el alfabeto es {a, b} de cada estado deben salir exactamente dos transiciones, una con a y otra con b. ‘+ Otra condicién es que debe tener exactamente un estado inicial. En cambio, la cantidad de estados finales puede ser cualquiera, inclusive cero, hasta un maximo de |k| (la cantidad de estados). AUTOMATAS FINITOS NO DETERMINISTAS (AFND) Una extensién de los AFD'S es la de permitir que de cada estado 0 nodo del diagrama de estados salga un numero de flechas mayor o menor que |Z]. Asi se puede permitir que falte la flecha correspondiente a alguno de los simbolos del alfabeto, o bien que haya varias flechas que salgan de un solo nodo con la misma etiqueta. Inclusive se permite que las transiciones tengan como etiqueta palabras de varias letras 0 hasta la palabra vacia. Definicién. Un automata finito no determinista es un quintuplo (K, 2, A, s, F), donde K, 2, s y F tienen el mismo significado para el caso de los AFD y A, llamada la relacién de transicién, es un subconjunto finito K XEXK, Ejemplo. Verificar si la palabra baabbaba es aceptada por el autémata finito no determinista siguiente: ab ab Q (Q (7) abbab G) Figura 2. Automata Finito No Determinista Solucién. La palabra baabbaba puede ser dividida en cuatro pedazos: pt = b, p2 = a, p3 = abbab y p4 = a, cuya concatenacién produce la palabra original. Ahora bien, podemos seguir la siguiente secuencia de estados (trayectoria) en el AFND dado: Estado Cadena que se consume | Produce estado 7 Bb 1 7 a 1 1 ‘abbab 2 2 a 2 ‘Asi probamos que la cadena baabbaba es aceptada por el AFND. Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 2 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 MN, PROCEDIMIENTO, PARTE I: SIMULACION DE UN AUTOMATA FINITO EN JLAP Se desea modelar una gramatica que describa un lenguaje de programacién. Para ello simularemos un automata que reconozca Wdenttcadores validos para dicho lengueye. Los identificadores para este lenguaje pueden estar formados por tres letras minsculas (a,b,c) y el guién bajo (_). Sin embargo, un identificador no puede comenzar con un guidn bajo (_). Crearemos una autémata para validar los identificadores para este lenguaje. Para esto, usaremos JFLAP (Java Formal Languages and Automata Package), que es un software con propésito educativo. Al abrirlo, os mostrard la siguiente ventana: Figura 3. Pantalla inicial de Jap Presione sobre el botén Finite Automaton y cargara la siguiente ventana: File input Test View Convert Help [x] Eaor RI OL>[ 2) >[¢] Figura 4. Ventana de edicién de Autématas en Map Cree el diagrama que esté a continuacion en base a la siguiente ayuda: Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 3 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 Tenga en cuenta que bajo la pestafia Editor, se encuentra la caja de herramientas con las posibles ‘operaciones a realizar, por ejemplo: © Para crear estados, utlice el erculo, La flecha con la punta rellena [Nes para seleccionar y mover estados, la otra flecha que apunta a la derecha |” es para crear las transiciones. Para crear una transicién reflexiva (de un estado hacia el mismo) ubiquese en el estado y dele doble clic, & Finalmente, la calavera >~/ es para eliminar estados y transiciones, Una vez creado los estados y las transiciones, es necesario indicar cual es el estado inicial y cual es estado final. Para ello debe estar en modo seleccién y hacer clic derecho con el mouse sobre el estado, y observard el siguiente meni contextual: Change Label Clear Label Clear All Labels Set Name Definiremos el estado q0 como el estado inicial y q1 como estado de aceptacién (final). El diagrama debe verse de la siguiente forma: Para probar el autémata, seleccione de! ment "Input" la opcién “Step by State” para evaluar carécter por ‘caracter de la cadena digitada. Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 4 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 Digite la cadena: Presione Aceptar para analizar la cadena de estado a estado (car acter por caracter).. El resultado es Ia siguiente ventana, donde debera dar clic en el botén Step para ir observando paso a paso la ejecucién del autémata. @ Fle Input Test View Convert Help En el automata creado, evalué las siguientes cadenas: o abo, OD abc OD abaa D _abo DB “abed Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 5 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 PARTE Il: SIMULACION DE UN AUTOMATA FINITO EN C++ Una forma de implementar autématas finitos es mediante bucles anidados. El siguiente programa simula el automata de la Parte |, para ello usaremos una variable para almacenar el estado actual y una estructura de seleccién miltiple doblemente anidada, La estructura de mayor nivel comprueba el estado actual del automata y la de menos nivel, el siguiente cardcter de la cadena. Las transiciones se corresponden con asociar un nuevo estado a la variable y recorrer las posiciones de la ‘cadena de entrada, include #include include int simular_af(char c{])3 void main(void) { char op,cadena[20]5 do u cout<<"\nIngrese 1a cadena a analiza cin>>cadena; 1 F(simular_af(cadena)==0) coutc<"Error: Identificador no valido"<>0p; } while (op=='s*|Jop=="S'); } int simular_af(char c{]) { int pos = @; //posicion del caracter a evaluar en la cadena int estado = 0; //estado del automata int longitud = strlen(c); while((estado == @ || estado { 1) && pos < longitud) switch(estado) Jestado & switch(e[pos]) { case ‘a' estado = 1; break; case "b': estado = 1; break; estado = 1; break; default: return 3 } break; Jestado 1 switch(c[pos]) Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 6 de 7 UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERIA ESCUELA PROFESIONAL DE INGENIERIA EN INFORMATICA Y SISTEMAS. (CURSO: COMPILADORES Y TEORIA DE LENGUAJES. CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADEMICO: 2017-11 estado = break; case 'b' estado break; case 'c" estado = 1; break; default: return 05 } pos++s if(estado == 1) return 13 else return @5 El cédigo anterior es largo y dificil de mantener en el caso que se desee incluir mas caracteres en el alfabeto del aut6mata o en el caso de incluir nuevos estados. En con el programa anterior las siguientes cadenas: OD abe D abc O abaa O _abe 1D “abed IV. ANALISIS DE RESULTADOS Utlice Jflap para simular los autématas finitos deterministas y no deterministas avanzados en clase. V. INVESTIGACION COMPLEMENTARIA Disefie un autémata finito que reciba una cadena y reconozca si esta es un nimero del tipo flotante (float) Considere lo siguiente: + Elalfabeto del autémata estara formado por los digitos del 0 al 9, el signo menos (-), y la coma decimal (,). ‘+ Lacantidad ingresada puede ser positiva o negativa, ademas puede ser o no ser entera. Simule el autémata en Jflap y escriba un programa en C++ que le dé solucién. Docente: ing. Hugo Manuel Barraza Vizcarra Pagina 7 de 7

You might also like