Shortest Path algoritmo gráfico ponderada (Dijkstra, Floyd, Bellman_ford)

algoritmo de Dijkstra - de una sola fuente pesos no negativos más corta cálculo de la trayectoria

ALGORITMO

  Sobre la base de la estrategia codicioso, siempre elige el más cercano punto de origen S y aún no han confirmado el fregadero del camino más corto D, considerado como la distancia del camino más corto es el SD SD corriente final, ya que la distancia a otros puntos de S es mayor que SD, de modo S después de alcanzar los otros puntos de la ruta y entonces unido al punto D es mayor que SD más, por lo tanto, en comparación con la SD actual S D es el camino más corto. Tenga en cuenta que la SD no es necesariamente la longitud del lado SD, es probable que sea de otra manera ha confirmado la longitud del camino más corto hacia el punto. Después de determinar el camino más corto S a D, S para actualizar los valores de otros puntos, tales como la distancia indeterminada punto E, es menor que el SDE se determina después de SE, si menos de la SE se actualiza. Después de todas las actualizaciones, continuar la búsqueda de la distancia S más cercano y el fregadero D no reconocida 'lo mismo que los puntos D, esta vez SD' es la distancia más corta desde el S a D', y luego continúa actualizando el resto del fregadero hasta que todo menor reconocimiento de ruta .

  El punto es que cada algoritmo para determinar la ruta más corta de un punto, se actualizará de nuevo desde la fuente hasta el otro punto no reconocido, con el fin de garantizar el camino más corto para encontrar el siguiente punto de la ruta es el camino más corto, que es la clave de la estrategia para el éxito codicioso. Sin embargo, el algoritmo no puede tratar con pesos negativos Fig codicioso no es la solución óptima.

algoritmo Bellman-Ford - pesos negativos de fuente única ruta más corta

ALGORITMO

  Inicialmente, la fuente S a la distancia D (x) otros puntos de ajuste hasta el infinito, a continuación, uno para cada lado de la figura <U, v>, tratamiento de relajación como sigue:. D (v) = min (D (v), D (u) + UV). La operación de desplazamiento se ha descrito anteriormente hasta n - 1 veces, el camino más corto se puede obtener en todos los puntos. Después, una vez más transversal, si más D (v) aparece> D (u) + uv situación, sólo muestra que hay un diagrama de circuito de peso negativo, el camino más corto no se puede encontrar, sólo la relajación más corto.

  Cuanto a por qué la mayor parte n - 1 veces de relajación se puede determinar el recorrido S alcanza el otro n - 1 puntos de la ruta más corta, debido a la finalización de cada travesía, al menos el camino más corto será un punto, por las siguientes razones (dibujo demasiado perezoso, cerebro Considere similares):

  S se puede suponer que hay un vecino directo nodos ABC tres (puede ser más, pero el mismo principio), aparentemente SA, SB, SC es al menos uno de la ruta más corta, a continuación, después de un relajado, D (A), D (B ), D (C) al menos uno de la ruta más corta, suponiendo que D (a) es el camino más corto, que es SA, los dos casos siguientes,

  (1) S BC camino más corto para ir a través de todos los puntos del punto A, entonces el camino más corto para el nodo A es directamente adyacente a la DEF ciertamente ser a través de un punto A, y el caso ABC tres S analógica, SAD, SAE, SAF también al menos uno de la ruta más corta, por lo que después de la segunda relajación, sino también para determinar el al menos un punto, se asume como D. Es posible al punto D en la primera holgura se ha determinado, que se determina por el orden de recorrido de borde.

  (2) S camino más corto B o C no requiere A, entonces el primer pase cuando se ha determinado que un cierto punto en el A y BC.

  Relajación se puede determinar cada punto de tiempo es de al menos un camino más corto, y sólo S, A, D ..... tiene una situación similar cuando (1) tomar hasta n - 1 veces de relajación.

Floyd algoritmo - calcular el camino más corto entre dos puntos en la figura.

ALGORITMO

  Cuando la dinámica programación algoritmo, para dos puntos m, n, m para el camino más corto a través de 1,2,3,4 ... n puede ser puntos arbitrarios, así calculados primero puede ser sometido a un primer punto, MN el camino más corto es el número: dp [m] [n] = min (dp [m] [1] + dp [1] [n], dp [m] [n]), cuando, después de calcular dos puntos cualesquiera, a continuación, puede determinar el tiempo transcurrido antes de los dos puntos, el camino mn más corto: dp [m] [n] = min (dp [m] [2] + dp [2] [n], dp [m] [n]), Si después del segundo punto, dp [m] [n] de la misma, si el camino más corto para ir a través del segundo punto, dp [m] [n] = dp [m] [2] + dp [2] [N-], sin pasar a través de este punto como para el primer punto, o ir a través después hay necesidad de considerar, porque dp [m] [2] y dp [2] [n] se considera el representante de un primer punto el camino más corto en un caso en el que, cuando la primera sólo se consideran el primer punto se ha calculado antes. Después de la primera continúa para calcular los siguientes tres puntos, cuatro puntos puede ser el caso hasta ...... n puntos.

  Dinámica de programación óptima subestructura que: en la lata antes de los puntos transcurridos k-1, el camino más corto entre dos puntos cualesquiera es conocido mn, entonces el tiempo puede pasar antes de los puntos K, ruta más corta mn por:

dp [m] [n] = min (dp [m] [k] + dp [k] [n], dp [m] [n])

 

Supongo que te gusta

Origin www.cnblogs.com/zz-zhang/p/12584839.html
Recomendado
Clasificación