static void Main(string[] args) { Automata objAutomata = new Automata(); String cadena = "010110111"; caracteres = cadena.ToCharArray(); objAutomata.inicio(); }
public static Automata MinimizeDFSM(Automata fsm) { var reversedNDFSM = Reverse(fsm); var reversedDFSM = PowersetConstruction(reversedNDFSM); //var NDFSM = Reverse(reversedDFSM); //return PowersetConstruction(NDFSM); return(reversedDFSM); }
private static NDFSM Reverse(Automata d) { var delta = new List <Transicion>(); foreach (var transition in d.Transicion) { delta.Add(new Transicion(transition.EstadoFinal, transition.Simbolo, transition.EstadoInicial)); } return(new NDFSM(d.Estados, d.Lenguaje, delta, d.EstadoFinal, d.EstadoInicial)); }
static void Main(string[] args) { Automata aut = new Automata(); Console.WriteLine("Escribe la palabra a evaluar separando cada caracter por espacios"); aut.PaEvaluar = Console.ReadLine(); aut.Car = aut.PaEvaluar.ToCharArray(0, aut.PaEvaluar.Length); aut.Inicio(); }
static void Main(string[] args) { Automata aut = new Automata(); Console.WriteLine("Matias Olarte Servado \n"); Console.WriteLine("Escribe la palabra a evaluar"); aut.PaEvaluar = Console.ReadLine(); aut.Car = aut.PaEvaluar.ToCharArray(0, aut.PaEvaluar.Length); aut.Inicio(); Console.WriteLine("\n presione cuaquilquier tecla para salir del programa..."); Console.ReadKey(); }
/// <summary> /// Método que simula el recorrido del autómata. /// </summary> /// <param name="textoArchivo">Texto a simular</param> /// <param name="minimiza">Bandera para saber si se va a minimizar.</param> /// <returns>Resultado de la simulación</returns> private bool PreparaParametros(string textoArchivo, bool minimiza) { try { bool resultado = false; textoArchivo = textoArchivo.Replace("\r\n", "\r"); string[] cadena = textoArchivo.Split('\r'); foreach (string linea in cadena) { linea.Replace("\r", ""); } string entrada = cadena[0].Replace(";", ""); string alfabeto = cadena[1]; string edoInicial = cadena[2]; string edoFinal = cadena[3]; var estadoInicial = "q" + edoInicial; var estados = new List <string>(); int contador = 0; for (int i = 4; i < cadena.Length; i++) { estados.Add("q" + contador); contador++; } var lenguaje = new List <char>(); string[] alfabetoA = alfabeto.Split(';'); foreach (string caracter in alfabetoA) { if (caracter != string.Empty) { lenguaje.Add(Convert.ToChar(caracter)); } } var estadoFinal = new List <string>(); string[] edosFinales = edoFinal.Split(';'); foreach (string caracter in edosFinales) { if (caracter != string.Empty) { estadoFinal.Add('q' + caracter); } } var estadosTransicion = new List <string>(); for (int i = 4; i < cadena.Length; i++) { estadosTransicion.Add(cadena[i]); } var matrizTransicion = GeneraMatrizTransicion(estadosTransicion, lenguaje, estados); var x = new List <string>(); x.Add(estadoInicial); var automata = new Automata(estados, lenguaje, matrizTransicion, x, estadoFinal); if (minimiza) { var banderita = true; automata = Minimize.MinimizeDFSM(automata); string delta = ObtieneMatriz(automata.Transicion); string res = ComparaEstados(estados, automata.Estados); if (banderita) { lblResultado.Text = "EJECUCIÓN\r\nCOMPLETADA"; txtResultado.Text = "Se encontraron estados equivalentes: " + res + "" + "\r\n\r\nLenguaje: " + alfabeto + "\r\nEstado Inicial: " + string.Join(";", automata.EstadoInicial.ToArray()) + "\r\nEstados Finales: " + string.Join(";", automata.EstadoFinal.ToArray()) + "\r\nMatriz Transición:\r\n" + delta; string path = @"C:\ResultadoMinimización.txt"; if (!File.Exists(path)) { File.Create(path); TextWriter tw = new StreamWriter(path); tw.WriteLine(txtResultado.Text); tw.Close(); } else if (File.Exists(path)) { System.IO.File.WriteAllText(path, string.Empty); using (var tw = new StreamWriter(path, true)) { tw.WriteLine(txtResultado.Text); tw.Close(); } } } else { lblResultado.Text = "EJECUCIÓN\r\nCOMPLETADA"; txtResultado.Text = "No se encontraron estados equivalentes"; } VisualizarComponentes(); } else { automata.Simular(entrada); txtResultado.Text = Automata.resultadoTexto; if (Automata.resultado) { lblResultado.Text = "ACEPTADA"; } else { lblResultado.Text = "RECHAZADA"; txtResultado.Text = "La simulación no fue completada.\r\nYa que no es posible completar con éxito el recorrido de la entrada."; } VisualizarComponentes(); } return(resultado); } catch (Exception ex) { MessageBox.Show(this, ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }