Beispiel #1
0
        // 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;
                }
            }
        }
Beispiel #2
0
        // 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;
                }
            }
        }