INSTITUTO TECNOLÓGICOSUPERIOR DE SAN MARTÍN TEXMELUCAN EQUIPO: JUAN ANTONIO SERRANO GALICIA ALFONSO RAMOS DE ANGUEL DIANA RODRIGUEZ HERNANDEZ MIRIAN ATLIXQUEÑO GONZALEZ ELISA FLORES TELLEZ ANGY MAGDALENA CEDILLO B. ASIGNATURA: TEORIA DE LA COMPUTACIÒN PROFESOR: YESENIA GRADO: 4° SEMESTRE GRUPO: “A” PRACTICA 2 PORTAFOLIO DE EVIDENCIAS San Martín Texmelucan, Puebla 23 de marzo del 2011 TEORIA DE LA COMPUTACION PLAN ISIC-2004-296 INGENIERÍA EN SISTEMAS COMPUTACIONALES Metodos Numericos Práctica 2 OBJETIVO: Representará lenguajes a través de autómatas, expresiones regulares y su aplicación. Desarrollar ejercicios para la representación de lenguajes por medio de AFD, AFN, AFN-e y expresiones regulares. A si como también utilizar un lenguaje de programación de alto nivel para representar expresiones regulares. MARCO TEÓRICO Un Autómata Finito Determinístico (DFA) no es más que una máquina que consta de un conjunto finito de estados, de ahí el nombre de Máquina de Estados. Uno de estos estados debe ser la entrada de la máquina. En todo DFA debe existir uno o varios estados finales o de aceptación. Un DFA debe constar de un lenguaje (o símbolos de entrada) el cual es el conjunto de caracteres que aceptara dicha máquina. Todo DFA contiene un conjunto de transiciones. Cada estado debe tener una transición por cada símbolo que exista en el lenguaje. Estas transiciones deberán comunican un estado con otro (o se mantiene recursivos en el mismo estado). Una transición puede ser transitada si, y solo si, el símbolo de entrada que se está procesando es uno de los símbolos1 que permite el paso a través de la transición. Una cadena (o palabra) es una sucesión de símbolos que están contenidos dentro del lenguaje del autómata. Se dice que una cadena es aceptada cuando al haber consumido todos los símbolos contenidos en esta (por medio de las transiciones), se llega a un estado final o de aceptación. 4.- PROCEDIMIENTO 1.-Programar un autómata finito determinista 2.- utilice un lenguaje de alto nivel 3.-mostrar los resultados en pantalla Fecha de Actualización 22/03/2011 Página 2 Metodos Numericos 5.- APARATOS E INSTRUMENTOS Una PC Un Lenguaje de alto nivel Sistema Operativo Windows o Linux 6.- PRACTICA A REALIZAR AUTOMATA FINITO DETERMINISTICO 5-tuplas ∑={a,b} M={Q, ∑,S,A,S } Q={𝑞0, 𝑞1 𝑞2, 𝑞3, } A={𝑞0, 𝑞1 𝑞2, } S={𝑞0, } S a b 𝒒𝟎, 𝑞0, 𝑞1, 𝒒𝟏, 𝑞0, 𝑞2 𝒒𝟐 𝑞0, 𝑞3, 𝒒𝟑, 𝑞3, 𝑞3 Fecha de Actualización 22/03/2011 Página 3 Metodos Numericos Alguna de las cadenas de aceptación mostradas en el lenguaje regular L(r)={a,b,aa,bb,ab,aabb,aaabb,aaaabb…..} Fecha de Actualización 22/03/2011 Página 4 Metodos Numericos A continuación con ayuda del programa de “Jflap” mostraremos que cadenas son aceptadas y que cadenas son rechazadas… Observamos en la parte izquierda el diagrama elaborado con dicho autómata y en la parte derecha observamos que cadenas son aceptadas y cuáles no pertenecen al nuestro autómata. Si observamos bien en la parte derecha, nos damos cuenta de que al insertar tres “b” consecutivas en una cadena el resultado que nos arrojara será rechazado… Y si por lo menos a una cadena contiene por lo menos una “b” o dos “b” es aceptada la cadena, también se observa que al insertar varias “a” son aceptadas. El problema seria que no reconoce tres “b” consecutivas en dicho autómata. Fecha de Actualización 22/03/2011 Página 5 Metodos Numericos ÏÏÏimport javax.swing.JOptionPane; ÏÕÖ×class Automata{ ÏϧÏÞßàpublic static void main (String args []) ÏϧÏϧ{ ÏϧÏϨ¹íÏint c=0; ÏϧÏϨ¹íÏString cadena; ÏϧÏϨ¹¹ÏJOptionPane.showMessageDialog(null,"AFD(!Automata finito detreministico!)"); ÏϧÏϨ¹¹ÏJOptionPane.showMessageDialog(null,"EQUIPO:\n**DIANA RODRIGUEZ HERNANDEZ\n**ELISA FLORES TELLEZ\n**MIRIAM ATLIXQUEÑO GONZALEZ\n**ANGELICA MAGDALENA CEDILLO BOTELLO\n**JUAN ANTONIO SERRANO GALICIA\n**ALFONSO RAMOS DE ANGUEL"); ÏϧÏϨ¹¹ÏJOptionPane.showMessageDialog(null,"algunas de las cadenas de aceptacion.\nL(r)={a,b,aba,aa,bb,aaa,aabb,aaabb,aaaabb,abaabba abb...}"); ÏϧÏϨ¹¹ÏJOptionPane.showMessageDialog(null,"ESTE LENGUAJE NO ACEPTA CADENAS DONDE CONTENGAN TRES b REPETIDAS\n YA QUE NOS MARCARIA CADENA NO ACEPTADA"); Fecha de Actualización 22/03/2011 Página 6 Metodos Numericos ÏϧÏϨ¹¹Ïcadena=JOptionPane.showInputDialog("Escribe una cadena: "); ÏϧÏϧ ÏϧÏϨ¹íÏint tam=cadena.length(); ÏϧÏϨ¹íÏchar arr[]=new char [tam]; ÏϧÏϨ¹¹Ïarr=cadena.toCharArray(); ÏϧÏϨ¹¹±for (int i=1; i<tam; i++) ÏϧÏϧÏÏ7¹³´if (arr [i]=='b') ÏϧÏϧÏϰ϶¾¹¹Ïc++; ÏϧÏϨ¹³´if ((arr[0]=='a') && (c==tam-1)) ÏϧÏϧÏ6¾¹¹ÏJOptionPane.showMessageDialog(null, "Cadena aceptada"); ÏϧÏϧÏ6Ï ÏϧÏϧÏö´else ÏϧÏϧÏȾ¹¹ÏJOptionPane.showMessageDialog(null, "Cadena no aceptada"); ÏϧÏϧ ÏϧÏϧÏϧÏϧ ÏϧÏÏ©} ÏÏ©} Programa mostrado en pantalla con ayuda del programa JGRAPS Fecha de Actualización 22/03/2011 Página 7 Metodos Numericos Fecha de Actualización 22/03/2011 Página 8 Metodos Numericos Fecha de Actualización 22/03/2011 Página 9 Metodos Numericos Fecha de Actualización 22/03/2011 Página 10 Metodos Numericos Al introducir esta cadena se observa que nos arrojara un mensaje que dice cadena aceptada, porque la cadena no contiene “tres b” repetidas Ahora si insertamos una cadena que contenga tres “B” nos mostrara un mensaje de cadena no aceptada…. Cadena no aceptada Fecha de Actualización 22/03/2011 Página 11 Metodos Numericos Otra cadena insertada Cadena no aceptada Fecha de Actualización 22/03/2011 Página 12 Metodos Numericos Un lenguaje formal es un lenguaje cuyos símbolos primitivos y reglas para unir esos símbolos están formalmente especificados. Al conjunto de los símbolos primitivos se le llama el alfabeto (o vocabulario) del lenguaje, y al conjunto de las reglas se lo llama la gramática formal (o sintaxis). A una cadena de símbolos formada de acuerdo a la gramática se la llama una fórmula bien formada (o palabra) del lenguaje. Pero a la vez muy dificultoso para reconocer este lenguaje con algún lenguaje de programación de alto nivel. BIBLIOGRAFÍAS es.wikipedia.org/wiki/Lenguaje_formal – utpl.edu.ec/ecc/wiki/index.php/Teoría_de_Autómatas – www.buenastareas.com/.../expresiones-regulares-teoria-de-la-computacion Fecha de Actualización 22/03/2011 Página 13