viernes, 19 de abril de 2013

Tarea - Algoritmo básico de búsqueda en Java



lProblema de la aspiradora: 

»Se dispone de una aspiradora con acceso a dos habitaciones y con la capacidad de aspirar basura

  • »8 posibles estados
  • 2 estados objetivo
  • »3 posibles acciones
  • »Mundo: 2 posibles posiciones
  • Sucio - limpio 


lEstado inicial: multiestado

lCada operador obtiene un multiestado a partir de otro multiestado.



 
Solución:
package com.carlos.algoritmo;

/**
 *
 * @author principal
 */
//Se define el nodo de un arbol, este tiene un valor y puede tener 1 nodo derecho y/o 1 nodo izquierdo
 public class Estado {
    private boolean suciedadHabitacionIzq; //se define true si esta sucio en la habitacion
    private boolean suciedadHabitacionDer;
    private int posAspiradora; // si es 0 habitacion izq. si es 1 esta en habitaciòn der.
    //public Estado() { //constructor
    //}
   
    public Estado() { //Se define un estado segun los valores
        this.suciedadHabitacionIzq = true;
        this.suciedadHabitacionDer = true;
        this.posAspiradora = 0;
    }
   
    public Estado(boolean suciedadHabitacionIzq, boolean suciedadHabitacionDer, int posAspiradora) { //Se define un estado segun los valores
        this.suciedadHabitacionIzq = suciedadHabitacionIzq;
        this.suciedadHabitacionDer = suciedadHabitacionDer;
        this.posAspiradora = posAspiradora;
    }

    public void setSuciedadHI(boolean sucio){ //Def. suciedad habitaciòn inquierda
        this.suciedadHabitacionIzq=sucio;
    }
   
    public void setSuciedadHD(boolean sucio){
        this.suciedadHabitacionDer=sucio;
    }
   
    public boolean getSuciedadHI() {
        return suciedadHabitacionIzq;
    }
   
    public boolean getSuciedadHD() {
        return suciedadHabitacionDer;
    }
   
    public void setPosAspiradora(int valor) {
        this.posAspiradora = valor;
    }

    public void succiona(){ //succiona la posicion actual
       if (this.posAspiradora==0)
         {  this.suciedadHabitacionIzq=false; //limpia habitacion izquierda
        
             System.out.println("Limpia habitaciòn izquierda");        
         }
       else
         {  this.suciedadHabitacionDer=false; //limpia hab. derecha
             System.out.println("Limpia habitaciòn derecha");
         }
    }
   
    public void insertar() //q es esl estado inicial
        {
            System.out.println("Comienza metodo insertar");
         while((this.suciedadHabitacionIzq==true)||(this.suciedadHabitacionDer==true)){ //Mientras no sea estado final
             if  (this.posAspiradora==0) {  //si esta en la habitacion 0-izquierda
                 if (this.suciedadHabitacionIzq==true) { //si esta sucia la habitacion izquierda..
                     this.succiona(); //limpia habitacion
                     //mover hacia la derecha
                     this.setPosAspiradora(1);
                     System.out.println("Aspiradora se mueva a la habitaciòn de la derecha");
                     //this.insertar();
                 }  
             } 
             else {
               
                 if (this.suciedadHabitacionDer==true) { //si esta sucia la habitacion derecha..
                     this.succiona(); //limpia habitacion
                     //mover hacia la izquierda
                     //mover hacia la derecha
                     this.setPosAspiradora(0);
                     System.out.println("Aspiradora se mueva a la habitaciòn de la izquierda");
                     //this.insertar();
                 }  
             }
         } //fin while
       
            System.out.println("Se ha llegado al estado final, las habitaciones estan limpias");
        }
}
/////FIN CLASE
////
package com.carlos.algoritmo;

/**
 *
 * @author Carlos
 */ 
public class Algoritmo {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Estado estadoinicial= new Estado(); //crea un nuevo estado con las habitaciones sucias
        System.out.println("Creado el estado incial");
        estadoinicial.insertar();
    }
}

SALIDA POR PANTALLA:

1 comentario: