Algoritmos de búsqueda en grafos

Algunos de los más conocidos son DFS, BFS, A*, IDA*, Fringe Search o D*.

Además, normalmente existirá un coste vinculado al desplazamiento entre nodos.

La principal diferencia entre los algoritmos es la información que guardan acerca del grafo.

En la lista Abierta se guardan los nodos que aún no se han expandido para la búsqueda, que en otras palabras, serían las hojas de un árbol.

El bucle consiste en varios pasos: Primero se obtiene el primer nodo de la lista Abiertos.

Si esta lista está vacía, quiere decir que no quedan más candidatos para la expansión, y aun así no se encontró el destino, el algoritmo ha fallado.

De esta forma, el algoritmo acabará encontrando el destino, o recorriendo todo el mapa.

Además cada nodo almacenará quien es su predecesor, que está simbolizado con las muescas en los bordes de los cuadrados.

Una vez que la expansión alcanza el nodo destino, se genera un camino siguiendo la cadena de predecesores.

Otro factor a tener en cuenta es que a pesar de haber alcanzado el nodo destino, el algoritmo no finaliza hasta que lo procesa, o en otras palabras, hasta que pasa a ser el primer nodo de la lista Abiertos.

Estas dos taras, están relacionadas con la prioridad de búsqueda, y en algoritmos más avanzados se corrige mediante el uso de estimadores heurísticos como la distancia manhattan, o la distancia euclídea.

Usando estos estimadores el algoritmo procesará primero los nodos de la lista abierta que tengan una menor distancia al origen, evitando así expansiones innecesarias.

Otra desventaja importante del algoritmo, es que no tiene capacidad para resolver cambios inesperados en el mapa.

Esto se resuelve en algoritmos como D*, que si tienen en cuenta estas variaciones.