7.21. Análisis del algoritmo de Dijkstra

Finalmente, veamos el tiempo de ejecución del algoritmo de Dijkstra. Notamos en primer lugar que construir la cola de prioridad toma un tiempo \(O(V)\) ya que inicialmente agregamos cada vértice del grafo a la cola de prioridad. Una vez construida la cola, el ciclo while se ejecuta una vez para cada vértice, ya que los vértices son todos agregados al principio y sólo se eliminan después. Dentro de ese ciclo, cada llamada a eliminarMin toma un tiempo \(O(\log V)\). En conjunto, esa parte del ciclo y las llamadas a eliminarMin toman un tiempo \(O(V \log(V))\). El ciclo for se ejecuta una vez por cada arista en el grafo, y dentro del ciclo for la llamada a decrementarClave toma un tiempo \(O (E\log(V))\). Así que el tiempo de ejecución combinado es \(O((V+E) \log(V))\).

Next Section - 7.22. Algoritmo de Prim del árbol de expansión