INSTITUTO TECNOLÓGICOSUPERIOR DE SAN MARTÍN TEXMELUCAN EQUIPO: LILIANA MENDEZ PEREZ LUIS RUEBN SANCHEZ BARBOSA 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={𝒒𝟎, 𝒒𝟏 𝒒𝟐, 𝒒𝟑, } A={𝒒𝟎, 𝒒𝟏 𝒒𝟐, } S={𝒒𝟎, } Tablas de estados S 𝒒𝟎, 𝒒𝟏, 𝒒𝟐 𝒒𝟑, a 𝑞0, 𝑞0, 𝑞0, 𝑞3, b 𝑞1, 𝑞2 𝑞3, 𝑞3 Fecha de Actualización 22/03/2011 Página 3 Metodos Numericos Automata creado Alguna de las cadenas de aceptación mostradas en el lenguaje regular L(r)={a,b,aa,bb,ab,aabb,aaabb,aaaabb…..} Codigo del programa automata import javax.swing.JOptionPane; class practicas{ public static void main (String args []) { int c=0; String cadena; JOptionPane.showMessageDialog(null,"AFD(!Automata finito detreministico!)"); JOptionPane.showMessageDialog(null,"EQUIPO:\n**luis\n**ruben\n**sanchez\n**ba rbosa\n**liliana\n**mendez"); JOptionPane.showMessageDialog(null,"algunas de las cadenas de aceptacion.\nL(r)={a,b,aba,aa,bb,aaa,aabb,aaabb,aaaabb,abaabbaabb...}"); JOptionPane.showMessageDialog(null,"ESTE LENGUAJE NO ACEPTA CADENAS DONDE CONTENGAN TRES b REPETIDAS\n YA QUE NOS MARCARIA CADENA NO ACEPTADA"); 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++) if (arr [i]=='b') c++; if ((arr[0]=='a') && (c==tam-1)) JOptionPane.showMessageDialog(null, "Cadena aceptada"); else Fecha de Actualización 22/03/2011 Página 4 JOptionPane.showMessageDialog(null, "Cadena no aceptada"); Metodos Numericos } } Fecha de Actualización 22/03/2011 Página 5