// inicari la busqueda private void button1_Click(object sender, EventArgs e) { Estado EstadoInicial = this.EstadoInicial(); Estado EstadoFinal = this.EstadoFinal(); // crear Arbol de busqueda Arbol ArbolBusqueda = new Arbol(); ArbolBusqueda.InsertarRaiz(EstadoInicial); ArbolBusqueda.Dims += 1; // iterar hasta que se encuentre el estado final while (true) { // si la pila no esta vacia if( ArbolBusqueda.PilaSuc.Count > 0) { // sacar un elemento de la pila Estado EstadoExtraido = (Estado)ArbolBusqueda.PilaSuc.Pop(); if (EstadoExtraido != null) { // si el extraido es igual al estado final if (ArbolBusqueda.Comparar(EstadoExtraido, EstadoFinal)) { MessageBox.Show("solucion encontrada " + new String(EstadoExtraido.CosasLadoIzq) + " " + " " + new String(EstadoExtraido.CosasLadoDer)); this.GrafObliga(EstadoExtraido, 0, 200); this.GTree.Refresh(); this.GetPapi(EstadoExtraido); return; } else { // GENERAR SUCESPRES SOLO SI ES UN ESTADO VALIDO if (ArbolBusqueda.Reglas(EstadoExtraido) && !ArbolBusqueda.BuscarEstadoUsado(EstadoExtraido)) ArbolBusqueda.GenerarSucesores(EstadoExtraido); // meterlo a cola de usados ArbolBusqueda.ColaUsados.Enqueue(EstadoExtraido); // graficar sucesores this.GraficarEstado(ArbolBusqueda.Raiz, 0, 0); Thread.Sleep(200); GTree.Refresh(); } } } else { MessageBox.Show("la Pila esta Vacia!!!!"); break; } } }
// inicari la busqueda private void button1_Click(object sender, EventArgs e) { Estado EstadoInicial = this.EstadoInicial(); Estado EstadoFinal = this.EstadoFinal(); // crear Arbol de busqueda Arbol ArbolBusqueda = new Arbol(); ArbolBusqueda.InsertarRaiz(EstadoInicial); ArbolBusqueda.Dims += 1; // iterar hasta que se encuentre el estado final while (true) { // si la pila no esta vacia if (ArbolBusqueda.PilaSuc.Count > 0) { // sacar un elemento de la pila Estado EstadoExtraido = (Estado)ArbolBusqueda.PilaSuc.Pop(); if (EstadoExtraido != null) { // si el extraido es igual al estado final if (ArbolBusqueda.Comparar(EstadoExtraido, EstadoFinal)) { MessageBox.Show("solucion encontrada " + new String(EstadoExtraido.CosasLadoIzq) + " " + " " + new String(EstadoExtraido.CosasLadoDer)); this.GrafObliga(EstadoExtraido, 0, 200); this.GTree.Refresh(); this.GetPapi(EstadoExtraido); return; } else { // GENERAR SUCESPRES SOLO SI ES UN ESTADO VALIDO if (ArbolBusqueda.Reglas(EstadoExtraido) && !ArbolBusqueda.BuscarEstadoUsado(EstadoExtraido)) { ArbolBusqueda.GenerarSucesores(EstadoExtraido); } // meterlo a cola de usados ArbolBusqueda.ColaUsados.Enqueue(EstadoExtraido); // graficar sucesores this.GraficarEstado(ArbolBusqueda.Raiz, 0, 0); Thread.Sleep(200); GTree.Refresh(); } } } else { MessageBox.Show("la Pila esta Vacia!!!!"); break; } } }