¿Qué debemos hacer cuando necesitamos conocer la información de la ruta más corta desde todos los vertices (V) del grafo?
Ejecutar V llamados del algoritmo de Dijkstra
Costo: O( v^3 log V )
Ejecutar V llamados del algoritmo de Bellman Ford
Costo: O( v^4 )
Ejecutar 1 llamado al Algoritmo de Floyd Warshall
Costo: O( v^3 )
static void FloydWarshall(){
int i, j, k;
for( k = 0; k < V; k++ ){
for( i = 0; i < V; i++ ){
for( j = 0; j < V; j++ ){
adj[i][j] = Math.min( adj[i][j], adj[i][k] + adj[k][j] );
}
}
}
}
static void init(){
int i, j;
for( i = 0; i < V; i++ ){
adj[i] = new int[V];
for( j = 0; j < V; j++ ){
adj[i][j] = 1000000000;
}
adj[i][i] = 0;
}
}
Un Punto de Articulación en un grafo, es un vertice tal que al eliminarlo, produce un incremento en el número de componentes conexas.
Un Puente en un grafo, es una arista tal que al eliminarla, produce un incremento en el número de componentes conexas.
Vamos a introducir dos nuevos atributos al algoritmo DFS
Puntos a tener en cuenta: