Comprender el cálculo de la complejidad del tiempo para el Algoritmo Dijkstra
Según mi entendimiento, he calculado la complejidad temporal del Algoritmo Dijkstra como notación big-O usando la lista de adyacencia que se muestra a continuación. No salió como se suponía que debía y eso me llevó a entenderlo paso a paso.
- Cada vértice puede ser conectado a (V-1) vértices, por lo tanto el número de aristas adyacentes a cada vértice es V - 1. Digamos que E representa V-1 aristas conectadas a cada vértice.
- Encontrar y Actualizar el peso de cada vértice adyacente en el montón mínimo es O (log (V)) + O (1) o
O(log(V))
. - Por lo tanto, desde el paso 1 y el paso 2 anteriores, la complejidad de tiempo para actualizar todos los vértices adyacentes de un vértice es E*(logV). o
E*logV
. - Por lo tanto, la complejidad de tiempo para todos los vértices V es V * (E*logV) es decir,
O(VElogV)
.
Pero la complejidad de tiempo para el algoritmo Dijkstra es O(ElogV). ¿Por qué?
37
1 answers
El algoritmo de ruta más corta de Dijkstra es O(ElogV)
donde:
-
V
es el número de vértices -
E
es el número total de aristas
Su análisis es correcto, ¡pero sus símbolos tienen diferentes significados! Usted dice que el algoritmo es O(VElogV)
donde:
-
V
es el número de vértices -
E
es el número máximo de aristas unidas a un solo nodo.
Cambiemos el nombre de su E
a N
. Así que un análisis dice O(ElogV)
y otro dice: O(VNlogV)
. Ambos son correctos y de hecho E = O(VN)
. La diferencia es que ElogV
es una estimación más ajustada.
51
Author: Shahbaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-24 12:43:20
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-24 12:43:20