Está en la página 1de 2

package U1;

import java.util.Scanner;
public class AFD {
String simboloSiguiente = "";
int contadorSimbolo = 0;
char[] cadenaAnalizar;
public AFD (String cadenaW) {
cadenaAnalizar = cadenaW.toCharArray();
}
private char siguienteSimbolo() {
char regresa = cadenaAnalizar[contadorSimbolo];
contadorSimbolo++;
return regresa;
}
public char funcionTransicion(char q, char simbolo) {
char estado = 'a';
if (q == 'A') {
if (simbolo == '1')
estado = 'B';
if (simbolo == '0')
estado = 'C';
}
if (q == 'B') {
if (simbolo == '1')
estado = 'C';
if (simbolo == '0')
estado = 'C';
}
if (q == 'C') {
if (simbolo == '1')
estado = 'A';
if (simbolo == '0')
estado = 'B';
}
return estado;
}
public static void main(String[] args) {
Scanner Leer=new Scanner(System.in);
System.out.println("Automata Finito Determinista (AFN)");
System.out.println("Q = {A,B,C}");
System.out.println("S = {1,0}");

System.out.print("\nIngresa el estado inicial q: ");


char q = Leer.next().charAt(0);
System.out.print("\nIngresa el estado final F: ");
char F = Leer.next().charAt(0);
System.out.print("\nIngresa la cadena a evaluar w: ");
String cadenaW = Leer.next();
AFD afd = new AFD(cadenaW);
for (int u=0; u < afd.cadenaAnalizar.length; u++)
q = afd.funcionTransicion(q, afd.siguienteSimbolo());
if (q == F)
System.out.println("\nLa Cadena SI Es Aceptada!!!!");
else{
System.out.println("\nLa Cadena NO Es Aceptada!!!!");
System.out.println(" SYSTEM FAILURE...");
System.out.println(" REBOOT NOW...");
}
System.out.println("................................................\n" +
". El automata finito determinista es:
.\n" +
".
.\n" +
". Q = {A,B,C}
.\n" +
". S = {1,0}
.\n" +
".
.\n" +
".
___________________
.\n" +
".
| D
| 1
| 0
|
.\n" +
".
|______|_____|______|
.\n" +
".
| A
| B
| C
|
.\n" +
".
|______|_____|______|
.\n" +
".
| B
| C
| C
|
.\n" +
".
|______|_____|______|
.\n" +
".
| C
| A
| B
|
.\n" +
".
|______|_____|______|
.\n" +
".
.\n" +
"................................................\n");
}
}

También podría gustarte