Cómo encontrar la Kth ruta más corta de un nodo a otro en un gráfico

Si todos los pesos de los bordes son positivos, puede aplicar el algoritmo de búsqueda A *:
Primero, use el algoritmo de Dijkstra para calcular la longitud de la ruta más corta desde cualquier otro nodo en el gráfico hasta el nodo de destino.
Luego, aplique el algoritmo A *. A partir de la ruta que consta solo del nodo de origen, mantiene una cola prioritaria que contiene todas las rutas no extendidas hasta ahora. Cada vez que ingrese la ruta en la cola de prioridad con el costo más bajo , extienda la ruta para tener un nodo más (puede haber múltiples nodos posibles) y coloque todas las rutas nuevas en la cola de prioridad. Sigue haciéndolo hasta que encuentre la ruta Kth al frente de la cola de prioridad que termina en el nodo de destino.
El costo es la suma de dos partes: una es la longitud de la ruta actual; la otra es la distancia desde el nodo final de la ruta al nodo de destino que ya ha encontrado con el algoritmo de Dijkstra.

Creo que también puede funcionar cuando hay pesos de borde negativos, siempre que no haya un ciclo de peso negativo (en ese caso, el camino más corto puede no existir). Todavía puede aplicar el algoritmo A *. Pero es posible que necesite usar otro algoritmo, por ejemplo, el algoritmo de Bellman-Ford, para calcular las distancias desde cualquier otro nodo al nodo de destino.

(Este no es un enfoque óptimo y también puede ser incorrecto) si no hay ciclos de peso negativos, entonces podemos ejecutar Dijkstra para encontrar el más corto entre un nodo y otro, luego podemos eliminar esa ruta del gráfico y mantener una estructura de datos para almacenar esa ruta entonces podemos ejecutar DIJKSTRA nuevamente y encontrar el segundo camino más corto de esta manera podemos continuar hasta que se descubran todos los caminos.