# data[].attributes.body
Consiste, en dado un tablero con 9 casillas, las cuales van enumeradas del 1 al 8 más una casilla vacía. Dicha casilla vacía, es la que, con movimientos horizontales, verticales, hacia la izquierda o derecha, debe ser desplazada e intercambiada con alguno de sus vecinos, de manera que, dada una configuración inicial se llegue a una configuración final (meta)

# data[].attributes.headline
Antes de hablar sobre el algoritmo A*, debemos analizar la búsqueda heurística.

# data[].attributes.subject
Antes de hablar sobre el algoritmo A*, debemos analizar la búsqueda heurística.

# data[].attributes.body
Los algoritmos de búsqueda como la búsqueda lineal, binaria entran en la categoría de técnicas de búsqueda no informadas, es decir, estos algoritmos no saben nada sobre lo que están buscando y dónde deberían buscarlo. Es por eso que el nombre de búsqueda "desinformada". La búsqueda desinformada toma mucho tiempo para buscar, ya que no sabe a dónde dirigirse y dónde están las mejores posibilidades de encontrar el elemento.

La búsqueda informada es exactamente opuesta a la búsqueda no informada. La búsqueda heurística es una técnica de búsqueda informada. Un valor heurístico le dice al algoritmo qué ruta proporcionará la solución lo antes posible. La función heurística se utiliza para generar este valor heurístico. Se pueden diseñar diferentes funciones heurísticas dependiendo del problema de búsqueda.

# data[].attributes.body
En lugar de mover las fichas en el espacio vacío, podemos visualizar moviendo el espacio vacío en lugar de la ficha, básicamente intercambiando la ficha con el espacio vacío. El espacio vacío solo puede moverse en cuatro direcciones

# data[].attributes.headline
Cómo A* resuelve el problema de los 8 rompecabezas.

# data[].attributes.subject
Cómo A* resuelve el problema de los 8 rompecabezas.

# data[].attributes.body
Primero movemos el espacio vacío en todas las direcciones posibles en el estado inicial y calculamos la puntuación f para cada estado. Esto se llama expandir el estado actual.

Después de expandir el estado actual, se empuja a la lista cerrada y los estados recién generados se empujan a la lista abierta. Se selecciona un estado con la menor puntuación f y se expande de nuevo. Este proceso continúa hasta que el estado objetivo se presenta como el estado actual. Básicamente, aquí estamos proporcionando al algoritmo una medida para elegir sus acciones. El algoritmo elige la mejor acción posible y procede en ese camino.

Esto resuelve el problema de generar estados secundarios redundantes, ya que el algoritmo expandirá el nodo con la menor puntuación f.