Documente Academic
Documente Profesional
Documente Cultură
LinkedList;
import es.uniovi.busqueda.*;
import es.uniovi.busqueda.algoritmos.*;
puzzle = matriz;
obje = obj;
nombre = new String("N-Puzzle");
prof=0;
if((fi+1)<puzzle.length){
int[][] copia = new int[puzzle.length][puzzle[0].length];
copia[fi][co] = copia[fi+1][co];
copia[fi+1][co] = 0;
NPuzzle t = new NPuzzle(copia,prof+1,fi+1,co);
succ.add(new InfNodo(t,1,new String("Mover "+ copia[fi][co] +"
hacia arriba")));
}
if((co+1)<puzzle[0].length){
int[][] copia = new int[puzzle.length][puzzle[0].length];
copia[fi][co] = copia[fi][co+1];
copia[fi][co+1] = 0;
NPuzzle t = new NPuzzle(copia,prof+1,fi,co+1);
succ.add(new InfNodo(t,1,new String("Mover " + copia[fi][co] + "
hacia izquierda")));
}
if((fi-1)>=0){
int[][] copia = new int[puzzle.length][puzzle[0].length];
copia[fi][co] = copia[fi-1][co];
copia[fi-1][co] = 0;
NPuzzle t = new NPuzzle(copia,prof+1,fi-1,co);
succ.add(new InfNodo(t,1,new String("Mover " + copia[fi][co] + "
hacia abajo")));
}
if((co-1)>=0){
int[][] copia = new int[puzzle.length][puzzle[0].length];
copia[fi][co] = copia[fi][co-1];
copia[fi][co-1] = 0;
NPuzzle t = new NPuzzle(copia,prof+1,fi,co-1);
succ.add(new InfNodo(t,1,new String("Mover " + copia[fi][co] + "
hacia derecha")));
}
return succ;
}
return suma;
}
return suma;
}
return retorno;
}
public static void main(String[] args) {
long inicio, fin;
LinkedList<InfNodo> sol;
int[][] inicial = new int[3][3];
int[][] objetiv = new int[3][3];
inicial[0][0] = 1;
inicial[0][1] = 2;
inicial[0][2] = 3;
inicial[1][0] = 4;
inicial[1][1] = 5;
inicial[1][2] = 6;
inicial[2][0] = 0;
inicial[2][1] = 7;
inicial[2][2] = 8;
/*
inicial[0][0] = 1;
inicial[0][1] = 3;
inicial[0][2] = 6;
inicial[1][0] = 5;
inicial[1][1] = 2;
inicial[1][2] = 8;
inicial[2][0] = 4;
inicial[2][1] = 7;
inicial[2][2] = 0;
*/
// Objetivo
objetiv[0][0] = 1;
objetiv[0][1] = 2;
objetiv[0][2] = 3;
objetiv[1][0] = 4;
objetiv[1][1] = 5;
objetiv[1][2] = 6;
objetiv[2][0] = 7;
objetiv[2][1] = 8;
objetiv[2][2] = 0;
/* System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = PrimeroEnAnchura.Resuelve(a,"npuzzle_anchura.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Primero en Anchura: "+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = PrimeroEnProfundidad.Resuelve(a,8,"npuzzle_profundidad_2.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Primero en Profundidad con plim=8:
"+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = PrimeroEnProfundidad.Resuelve(a,"npuzzle_profundidad.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Primero en Profundidad: "+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = ProfundidadIterativa.Resuelve(a);
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Primero en Profundidad Iterativa:
"+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
*/
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = CosteUniforme.Resuelve(a,"npuzzle_coste_uniforme.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Coste Uniforme: "+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = PrimeroElMejor.Resuelve(a,"npuzzle_primero_el_mejor.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por Primero el Mejor: "+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("--------------------------------------------");
inicio = System.currentTimeMillis();
sol = AEstrella.Resuelve(a,"npuzzle_aestrella.xml");
fin = System.currentTimeMillis();
System.out.println("Una soluci�n por A*: "+sol);
System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +"
segundos");
System.out.println("Numero de pasos para la solucion: "+sol.size());
}
}