public List <Class_alfabeto> tablaEpsido() { List <Class_alfabeto> lista = new List <Class_alfabeto>(); Class_nodos aux = this.inicio; Class_nodos auxnext2 = new Class_nodos(); while (aux != null) { Class_alfabeto n = new Class_alfabeto(); n.setAlfabeto(this.alfabeto); n.setnumeroNodo(aux.getContadorNodo().ToString()); for (int j = 0; j < aux.getListTransiciones().Count(); j++) { n.setnumeroNodo(aux.getContadorNodo().ToString()); // agrego el numero del nodo en el cual recorro n.addIntervalo(aux.getListTransiciones()[j]); //añado la transicion en la cual estoy recorriendo n.setEstado_aceptacion(aux.getEstado_aceptacion()); //////////////////////////////////////////// se añadio para pasar estado de aceptacion } lista.Add(n); if (aux.getNext2() != null) { auxnext2 = aux.getNext2(); Class_alfabeto n2 = new Class_alfabeto(); n2.setAlfabeto(this.alfabeto); n2.setnumeroNodo(auxnext2.getContadorNodo().ToString()); while (auxnext2 != null) { for (int j = 0; j < auxnext2.getListTransiciones().Count(); j++) { n2.setnumeroNodo(auxnext2.getContadorNodo().ToString()); // agrego el numero del nodo en el cual recorro n2.addIntervalo(auxnext2.getListTransiciones()[j]); //añado la transicion en la cual estoy recorriendo } lista.Add(n2); n2 = new Class_alfabeto(); auxnext2 = auxnext2.getNext1(); } } n = new Class_alfabeto(); aux = aux.getNext1(); } return(lista); }
public void primerAfn(string a) { //AFN result = new Proyecto_1.AFN(); Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo i.addTransicion(new Class_transiciones(a, f.getContadorNodo().ToString())); // agrego una transicion hacia el nodo final de este afn i.setNext1(f); this.inicio = i; this.final = f; }
// public void positiva_Cadena(string a) // { // AFN klee = new Proyecto_1.AFN(); // klee.kleene_Cadena(a); //aca hago un afn con aux* que es la cerradura de kleen // concatenar_afCadena(a,klee); //} ///////////////////////////////////////////////////////////////////cerradura ? //funciona pero en el proyecto nos piden que convirtamos el ? de la siguiente manera |a£ una alter con el afn y £ //public void ceroUno_af(AFN a) //{ // Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno");// le da numeracion al nodo // Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno"); // le da numeracion al nodo // i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));//punteros de i // i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));//punteros de a.final // i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); // hago una trans del inicial al final //this.inicio = i; this.final = f; //} //public void ceroUno_C(string aa) //{ // AFN a = new Proyecto_1.AFN(); //a.primerAfn(aa); // Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno");// le da numeracion al nodo // Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno"); // le da numeracion al nodo // i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));//punteros de i // i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));//punteros de a.final // i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); // hago una trans del inicial al final // this.inicio = i; this.final = f; // } public void ceroUno_af(AFN a) { Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno"); // le da numeracion al nodo i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); //punteros de i i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de i hacia el final porque es ? i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final this.inicio = i; this.final = f; }
public AFN primer(string a) { AFN result = new Proyecto_1.AFN(); Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo i.addTransicion(new Class_transiciones(a, f.getContadorNodo().ToString())); // agrego una transicion hacia el nodo final de este afn i.setNext1(f); result.setInicio(i); result.setFinal(f); return(result); }
/// Cerradura de Kleene * public void kleene_af(AFN a) { Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroVarios"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroVarios"); // le da numeracion al nodo i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); //punteros de i i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de i i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final a.getFinal().addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); // hago una trans del a.final al a.inicio this.inicio = i; this.final = f; }
public void alter_afaf(AFN a, AFN b) { Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("alter"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("alter"); // le da numeracion al nodo i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); //punteros de i i.addTransicion(new Class_transiciones("£", b.getInicio().getContadorNodo().ToString())); //punteros de i i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final i.setNext2(b.getInicio()); b.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final //b.getFinal().setNext1(f); //tal vez de error al recorrer this.inicio = i; this.final = f; }
public string generarTxt() { string linea1 = "digraph finite_state_machine { \n"; string linea2 = "rankdir = LR; size = \"20\" \n"; string linea3 = "node[shape = doublecircle margin = 0 fontcolor = white fontsize = 15 width = 0.5 style = filled, fillcolor = black]; N" + this.final.getContadorNodo() + "\n"; string linea4 = "node[margin = 0 fontcolor = white fontsize = 15 width = 0.5 shape = circle]; \n"; string lineafinal = "} \n"; string nodos = ""; string direcciones = ""; Class_nodos aux = this.inicio; Class_nodos auxnext2 = new Class_nodos(); Class_nodos auxnext3 = new Class_nodos(); Class_nodos auxnext4 = new Class_nodos(); Class_nodos auxnext5 = new Class_nodos(); while (aux != null) { nodos = nodos + "N" + aux.getContadorNodo() + "; \n"; for (int j = 0; j < aux.getListTransiciones().Count(); j++) { direcciones = direcciones + "N" + aux.getContadorNodo() + "-> N" + aux.getListTransiciones()[j].getDireccion() + "[label = \"" + aux.getListTransiciones()[j].getNombre() + "\"]; \n"; } if (aux.getNext2() != null) { auxnext2 = aux.getNext2(); while (auxnext2 != null) { nodos = nodos + "N" + auxnext2.getContadorNodo() + "; \n"; for (int j = 0; j < auxnext2.getListTransiciones().Count(); j++) { direcciones = direcciones + "N" + auxnext2.getContadorNodo() + "-> N" + auxnext2.getListTransiciones()[j].getDireccion() + "[label = \"" + auxnext2.getListTransiciones()[j].getNombre() + "\"]; \n"; } if (auxnext2.getNext2() != null) { auxnext3 = auxnext2.getNext2(); while (auxnext3 != null) { nodos = nodos + "N" + auxnext3.getContadorNodo() + "; \n"; for (int j = 0; j < auxnext3.getListTransiciones().Count(); j++) { direcciones = direcciones + "N" + auxnext3.getContadorNodo() + "-> N" + auxnext3.getListTransiciones()[j].getDireccion() + "[label = \"" + auxnext3.getListTransiciones()[j].getNombre() + "\"]; \n"; } if (auxnext3.getNext2() != null) { auxnext4 = auxnext3.getNext2(); while (auxnext4 != null) { nodos = nodos + "N" + auxnext4.getContadorNodo() + "; \n"; for (int j = 0; j < auxnext4.getListTransiciones().Count(); j++) { direcciones = direcciones + "N" + auxnext4.getContadorNodo() + "-> N" + auxnext4.getListTransiciones()[j].getDireccion() + "[label = \"" + auxnext4.getListTransiciones()[j].getNombre() + "\"]; \n"; } if (auxnext4.getNext2() != null) { auxnext5 = auxnext4.getNext2(); while (auxnext5 != null) { nodos = nodos + "N" + auxnext5.getContadorNodo() + "; \n"; for (int j = 0; j < auxnext5.getListTransiciones().Count(); j++) { direcciones = direcciones + "N" + auxnext5.getContadorNodo() + "-> N" + auxnext5.getListTransiciones()[j].getDireccion() + "[label = \"" + auxnext5.getListTransiciones()[j].getNombre() + "\"]; \n"; } auxnext5 = auxnext5.getNext1(); } } auxnext4 = auxnext4.getNext1(); } } auxnext3 = auxnext3.getNext1(); } } auxnext2 = auxnext2.getNext1(); } } aux = aux.getNext1(); } string total = linea1 + linea2 + linea3 + linea4 + nodos + direcciones + lineafinal; return(total); }
public void positiva_Cadena(string aa) { AFN a = new Proyecto_1.AFN(); a.primerAfn(aa); Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("unoVarios"); // le da numeracion al nodo Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("unoVarios"); // le da numeracion al nodo i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); //punteros de i i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final a.getFinal().addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString())); // hago una trans del a.final al a.inicio this.inicio = i; this.final = f; }