Algoritmo johnson

Algoritmo de Johnson java

Tres partes principales del Algoritmo de JohnsonEl funcionamiento del Algoritmo de Johnson se puede entender fácilmente dividiendo el algoritmo en tres partes principales que son las siguientesAhora aprenderemos sobre cada una de las tres partes principales del Algoritmo de Johnson con gran detalle. Consideremos un grafo dirigido ponderado por aristas GGG que tiene cuatro vértices que son aaa,bbb,ccc y ddd como se muestra en la imagen de abajo. Nuestro objetivo es calcular el camino más corto entre cada par de vértices del grafo GGG.

Añadir un vértice basePara calcular el camino más corto entre cada par de vértices la idea es añadir un vértice base (vértice SSS en la figura de abajo) que esté directamente conectado a cada vértice. En otras palabras, el coste para llegar a cada vértice desde el nuevo vértice base SSS es cero. Dado que en esta etapa nuestro grafo contiene aristas de peso negativo, aplicamos el algoritmo de Bellman-Ford y dejamos que el grafo modificado con el nuevo vértice base sea GGG’, que se muestra en la siguiente imagen. Ahora, después de aplicar el Algoritmo de Bellman-Ford para el gráfico GGG’ modificado anteriormente, obtenemos la distancia más corta desde el vértice base a todos los demás vértices que es como sigue.D(S,a)=D(S,d)+D(d,a)

Algoritmo del camino más corto

Tres partes principales del Algoritmo de JohnsonEl funcionamiento del Algoritmo de Johnson se puede entender fácilmente dividiendo el algoritmo en tres partes principales que son las siguientesAhora aprenderemos sobre cada una de las tres partes principales del Algoritmo de Johnson con gran detalle. Consideremos un grafo dirigido ponderado por aristas GGG que tiene cuatro vértices que son aaa,bbb,ccc y ddd como se muestra en la imagen de abajo. Nuestro objetivo es calcular el camino más corto entre cada par de vértices del grafo GGG.

Añadir un vértice basePara calcular el camino más corto entre cada par de vértices la idea es añadir un vértice base (vértice SSS en la figura de abajo) que esté directamente conectado a cada vértice. En otras palabras, el coste para llegar a cada vértice desde el nuevo vértice base SSS es cero. Dado que en esta etapa nuestro grafo contiene aristas de peso negativo, aplicamos el algoritmo de Bellman-Ford y dejamos que el grafo modificado con el nuevo vértice base sea GGG’, que se muestra en la siguiente imagen. Ahora, después de aplicar el Algoritmo de Bellman-Ford para el gráfico GGG’ modificado anteriormente, obtenemos la distancia más corta desde el vértice base a todos los demás vértices que es como sigue.D(S,a)=D(S,d)+D(d,a)

Ejemplo de algoritmo de Johnson

El algoritmo de Johnson es una forma de encontrar los caminos más cortos entre todos los pares de vértices de un grafo dirigido ponderado por aristas. Permite que algunos de los pesos de las aristas sean números negativos, pero no pueden existir ciclos de pesos negativos. Funciona utilizando el algoritmo de Bellman-Ford para calcular una transformación del grafo de entrada que elimina todos los pesos negativos, lo que permite utilizar el algoritmo de Dijkstra en el grafo transformado[1][2] Se llama así por Donald B. Johnson, que publicó la técnica por primera vez en 1977[3].

El algoritmo de Suurballe utiliza una técnica de reponderación similar para encontrar dos caminos disjuntos de longitud total mínima entre los mismos dos vértices en un grafo con pesos de arista no negativos[4].

El gráfico de la izquierda de la ilustración tiene dos aristas negativas, pero ningún ciclo negativo. El gráfico del centro muestra el nuevo vértice q, un árbol del camino más corto calculado por el algoritmo de Bellman-Ford con q como vértice inicial, y los valores h(v) calculados en cada uno de los otros nodos como la longitud del camino más corto desde q hasta ese nodo. Nótese que estos valores son todos no positivos, porque q tiene una arista de longitud cero hacia cada vértice y el camino más corto no puede ser más largo que esa arista. A la derecha se muestra el gráfico reponderado, formado por la sustitución del peso de cada arista

Algoritmo Johnson en línea

El algoritmo del camino más corto de todos los pares, también conocido como algoritmo de Floyd-Warshall, se utiliza para encontrar el problema del camino más corto de todos los pares a partir de un gráfico ponderado dado. Como resultado de este algoritmo, se generará una matriz que representará la distancia mínima de cualquier nodo a todos los demás nodos del grafo. Después de que la matriz de salida se actualizará con todos los vértices k como el vértice intermedio.La complejidad del tiempo de este algoritmo es O(V3), aquí V es el número de vértices en el gráfico.Entrada – La matriz de costos del gráfico.0 3 6 ∞ ∞ ∞ ∞