Java - Algoritmo A* 8 puzzle IA

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Algoritmo A* 8 puzzle IA

Publicado por luis (3 intervenciones) el 09/04/2020 08:28:55
Hola comunidad, queria preguntarles como aplicar correctamente el algoritmo de A* en el 8 puzzle ya que como lo aplico solo resulve puzzles faciles pero si lo revuelvo mas tarda mas de una hora en resolverlo ya que uso tambien una guia para que no vuelva a verificar matrices ya verificadas anteriormente y lo que pasa es que se queda sin hijos el arbol y no llega al resultado, algo que tambien no se que hacer es cuando 2 hijos tienen el mismo valor de peso y son los mas pequeños en valor

en esta es donde verifica la posicion del 0 para cambiarlo de lugar
captura1

aqui crea el hijo dependiendo si ya existe o no en las matrices revisadas por el metodo ia()
captura2

aqui es el algoritmo A* y selecciona al que tenga menor
captura3

Muchas gracias :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Algoritmo A* 8 puzzle IA

Publicado por Rodrigo (623 intervenciones) el 09/04/2020 14:20:34
Que trata de hacer el ultimo for() ?

Me parece sospechoso que compare parejas de elementos, se quede con el menor entre los 2 y luego pierda esta eleccion en la siguiente vuelta del ciclo. Si se trata de obtener el menor del conjunto, esto no lo logra, pues deberia recordar la eleccion en la siguiente iteracion, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Algoritmo A* 8 puzzle IA

Publicado por luis (3 intervenciones) el 09/04/2020 18:19:36
Ese último for intenta encontrar el hijo con menor heurística, ya lo he cambiado por un Collections.sort() para que me deje el más pequeño al principio y así no tener que buscarlo, pero aún así el árbol se queda sin hijos y no llega a la solución ya que hay un array que guarda los nodos que ya han sido revisados y cuando ya no quedan hijos quiere decir que el programa regreso a uno de los nodos anteriores y daría un ciclo infinito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar