Sei sulla pagina 1di 4

Universidad Mariano Gálvez de Guatemala

Centro Regional de Oriente, Cuilapa, Santa Rosa


Facultad de Ingeniería en Sistemas de Información

Curso: Autómatas y lenguajes formales


Ing. Julio Escobar
Ciclo VI Sección “A”

Ejercicio No. 4

Nombre: Randolfo Antonio de la Vega


Carnet: 1590-16-14135

Cuilapa, Santa Rosa, 22 de septiembre 2018


Ejercicio: Programar autómata finito para el L = {w|w que contenga un numero par de a´s}
∑ = {a, b}
 EXPRESIÓN REGULAR:  ARBOL:
b* (a b* a b*)* [b* (a b* a b*)*] $
Universidad Mariano Gálvez de Guatemala
Centro Regional de Oriente, Cuilapa, Santa Rosa
Facultad de Ingeniería en Sistemas de Información

Función siguiente:
Símbolo Hoja Siguiente
b 1 1,2,6
a 2 3,4
b 3 3,4
a 4 5,6
b 5 5,6
$ 6 -

Estado A B
Q0={1,2} Q1={3,4} Q0={1,2}
Q1={3,4} Q2={5,6} Q1={3,4}
Q2={5,6} - Q2={5,6}

 Autómata finito:
Universidad Mariano Gálvez de Guatemala
Centro Regional de Oriente, Cuilapa, Santa Rosa
Facultad de Ingeniería en Sistemas de Información

 AUTOMATA EN JAVA:
package src;

import java.util.Scanner;

public class Automata {

int contador;
boolean estadoaceptacion=false;
char[]caracter;

public static void main(String[] args) {


// TODO Auto-generated method stub

Automata automata1 = new Automata();


String cadena;
@SuppressWarnings("resource")
Scanner teclado = new Scanner(System.in);
System.out.println("Introduzca una cadena");
cadena = teclado.nextLine();
automata1.caracter = cadena.toCharArray();
automata1.inicio();

if(automata1.estadoaceptacion==true)
System.out.println("Cadena aceptada");
else
System.out.println("Cadena no aceptada");

private void inicio()


{
contador = 0;
estado1();
}
Universidad Mariano Gálvez de Guatemala
Centro Regional de Oriente, Cuilapa, Santa Rosa
Facultad de Ingeniería en Sistemas de Información

private void estado1()


{
System.out.println("Estado actual: 1");
estadoaceptacion = true;
if (contador<caracter.length)
{
if(caracter[contador]=='a')
{
contador++;
estado2();
}
else if(caracter[contador]=='b')
{
contador++;
estado1();
}
}
}

private void estado2()


{
System.out.println("Estado actual: 2");
estadoaceptacion = false;
if (contador<caracter.length)
{
if (caracter[contador]=='a')
{
contador++;
estado1();
}

else if(caracter[contador]=='b')
{
contador++;
estado2();
}
}
}

Potrebbero piacerti anche