El algoritmo ford de bellman calcula la ruta más corta desde un vértice de origen único a todos los otros vértices ponderados en el gráfico.
Así es como funciona…
- ¿Qué es el algoritmo em, cómo se hace paso a paso?
- ¿Las personas en la industria realmente usan el algoritmo K-Nearest Neighbour en la práctica?
- ¿Se utiliza una estructura de datos de pila para algoritmos multirecursionales?
- Cómo mejorar las habilidades de algoritmo en Java
- ¿Cuál es una buena fuente para aprender estructuras de datos y algoritmos?
y aquí está el código que podrías aplicar para esto …
define (‘INFINITO’, 10000000);
$ matriz = matriz (
0 => matriz (0, 3, 4),
1 => matriz (0, 0, 2),
2 => matriz (0, -2, 0),
);
$ len = cuenta ($ matriz);
$ dist = array ();
función BellmanFord (& $ matrix, & $ dist, $ start)
{
global $ len;
foreach (array_keys ($ matrix) como $ vertex) {
$ dist [$ vertex] = INFINITO;
if ($ vertex == $ start) {
$ dist [$ vértice] = 0;
}
}
para ($ k = 0; $ k <$ len – 1; $ k ++) {
para ($ i = 0; $ i <$ len; $ i ++) {
para ($ j = 0; $ j <$ len; $ j ++) {
if ($ dist [$ i]> $ dist [$ j] + $ matrix [$ j] [$ i]) {
$ dist [$ i] = $ dist [$ j] + $ matriz [$ j] [$ i];
}
}
}
}
}
BellmanFord ($ matriz, $ dist, 0);
// [0, 2, 4]
print_r ($ dist);