¿Qué es el algoritmo de Dijkstra?

El algoritmo de Dijkstra se utiliza para resolver el camino más corto desde el vértice v0 hasta otros vértices. Este algoritmo genera todos los caminos más cortos en orden creciente de longitud del camino más corto.

Para el gráfico G = (V, E), divide los vértices del gráfico en dos grupos: el primer grupo S: el conjunto de puntos finales del camino más corto que se ha encontrado (comenzando por { v0}). El segundo grupo V-S: el conjunto de puntos finales de la ruta más corta que aún no se ha encontrado (todos los nodos a partir de V-{v0}).

Optimización del montón

Pensamiento

La complejidad de este algoritmo es n^2. Podemos encontrar que si el número de aristas es mucho menor que n^2. , esto se puede considerar utilizando una estructura de datos como un montón para la optimización, la complejidad de extraer la ruta más corta se reduce a O (1) y la complejidad de cada ajuste se reduce a O (elogn e es el número de aristas); en ese punto, por lo que la complejidad se reduce a O ((m+n)logn).

Implementación

1. Agregue el punto de origen al montón y ajuste el montón.

2. Seleccione el elemento u en la parte superior del montón (es decir, el elemento con el costo más pequeño), elimínelo del montón y ajuste el montón.

3. Procesa los vértices adyacentes a u que no han sido visitados y satisface la desigualdad del triángulo.

1): Si el punto está en el montón, actualiza la distancia y ajusta el Posición del elemento en el montón.

2): Si el punto no está en el montón, agréguelo al montón y actualícelo.

4. Si la u obtenida es el punto final, finalice el algoritmo; en caso contrario, repita los pasos 2 y 3.