¿Explicar diferentes algoritmos de ruta más corta, sus restricciones, complejidades?

Estos son algunos puntos con restricciones y complejidades que he observado que podrían serle útiles para el problema del camino más corto.

1. Usando el algoritmo de dijkstra
– Si está implementando dijkstra usando una matriz 2d, entonces la complejidad será
O (v ^ 2) y prim también se implementan para el árbol de expansión mínimo.
-Y si lo está implementando mediante una lista de adyacencia utilizando un montón binario o una cola de prioridad, entonces la complejidad será O (Elogv) y prim también se implementará para el árbol de expansión mínima.
– Si utilizó el montón de Fibonacci, la complejidad puede reducirse aún más a O (E + VlogV)

2. Floyd Warshall

Complejidad – O (v ^ 3).

Floyd Warshall encuentra caminos más cortos entre cada par de vértices, pero dijkstra solo se puede usar desde una fuente determinada a todos los destinos.

3. Dijkstra para cada par de vértices

Si aplica dijkstra en todos los nodos, la complejidad se convertirá
O (V * VlogV). De este modo, puedes encontrar los caminos más cortos entre cada par de vértices.

4. Algoritmo de Bellman-Ford y Johnson

Dijikstra no es válido para los bordes negativos, pero puede usar el algoritmo de Bellman-Ford cuya complejidad es O (VE) para la ruta desde la fuente dada a todos los destinos posibles, por lo que funciona para todos los tipos de gráficos.
Puede optimizarlo más utilizando el algoritmo de johnson. Su complejidad:
O (V ^ logV + VE)

5. Clasificación topológica

Para los bordes negativos si el gráfico está dirigido específicamente a un gráfico acíclico, puede usar el método que se usa para encontrar el problema de ruta más larga que es
use simplemente la clasificación topológica y luego actualice las distancias de su adyacente usando la distancia del vértice actual.
Su complejidad es O (V + E).

More Interesting

¿Cuál es la mejor manera de detectar conjuntos similares de flotadores de 0 a 1?

Cómo resolver UVa 1449 usando hashing

¿Por qué no es posible encontrar la ruta más corta desde el vértice de origen a cualquier otro vértice si el gráfico contiene un ciclo?

¿Cuál es la mejor manera de ordenar una matriz de objetos en javascript?

¿Cómo se implementan las tablas hash en el kernel de Linux? ¿Cómo funcionan para diferentes tipos de datos y estructuras?

¿Cómo podemos lograr O (nlogn) / O (n) para ThePalindrome (Topcoder SRM 427)?

¿Cuál es el mejor título de proyecto para la estructura de datos del sujeto y el algoritmo?

¿Cuáles son algunos ejemplos de uso no trivial de la búsqueda binaria?

¿Quién sabe qué hay detrás de la API de Google Nearby Search? ¿Qué algoritmo usan? ¿Cómo encuentra Google una estación de servicio cercana?

¿Cuál es más rápido: clasificación rápida o burbuja, y por qué?

¿De qué se tratan las estructuras de datos como curso de informática? . ¿Y depende de algún idioma?

¿Cómo predicen las señales de tráfico en las autopistas cuánto tiempo llevará llegar desde su posición actual a un destino más adelante?

¿Es correcto mi nuevo estado de ánimo? Ingresé a la programación desde un punto de vista de programación algorítmica y, como tal, tengo una inclinación a querer saber cómo funcionan las cosas debajo. Pero ahora, después de un tiempo en el mundo de los desarrolladores, finalmente tengo que darme cuenta de que se trata menos de eso. ¿Lo que usted dice?

¿Qué algoritmo está detrás de la convolución en MATLAB?

Si tiene un trabajo diario bastante intenso, ¿cómo encuentra tiempo para mejorar la estructura de datos y la habilidad de los algoritmos?