sklearn.utils.graph_shortest_path
.graph_shortest_path¶
- sklearn.utils.graph_shortest_path.graph_shortest_path()¶
Realiza una búsqueda del camino más corto en un grafo positivo dirigido o no dirigido.
- Parámetros
- dist_matrixarray-like o matriz dispersa, forma = (N,N)
Arreglo de distancias positivas. Si el vértice i está conectado al vértice j, entonces dist_matrix[i,j] da la distancia entre los vértices. Si el vértice i no está conectado al vértice j, entonces dist_matrix[i,j] = 0
- directedboolean
si es True, entonces encuentra el camino más corto en un grafo dirigido: sólo progresa de un punto a sus vecinos, no al revés. si es False, entonces encuentra el camino más corto en un grafo no dirigido: el algoritmo puede progresar de un punto a sus vecinos y viceversa.
- methodstring [“auto”|”FW”|”D”]
método a utilizar. Las opciones son “auto” : intenta elegir el mejor método para el problema actual “FW” : algoritmo de Floyd-Warshall. O[N^3] “D” : algoritmo de Dijkstra con pilas de Fibonacci. O[(k+log(N))N^2]
- Devuelve
- Gnp.ndarray, float, shape = [N,N]
G[i,j] da la distancia más corta del punto i al punto j a lo largo del grafo.
Notas
Tal y como está implementado actualmente, el algoritmo de Dijkstra no funciona para grafos con distancias dependientes de la dirección cuando directed == False. Es decir, si dist_matrix[i,j] y dist_matrix[j,i] no son iguales y ambas son distintas de cero, method=”D” no necesariamente dará el resultado correcto.
Además, estas rutinas no han sido probadas para grafos con distancias negativas. Las distancias negativas pueden llevar a ciclos infinitos que deben ser manejados por algoritmos especializados.