pgr_floydWarshall
- Devuelve la suma de los costos de la ruta más corta para cada par de nodos en el grafo mediante el algoritmo Floyd-Warshall.
Disponibilidad
Soporte
El algoritmo Floyd-Warshall, también conocido como algoritmo de Floyd, es una buena opción para calcular la suma de los costos de la ruta más corta para cada par de nodos en el grafo, para grafos densos. Usamos la implementación de Boost que se ejecuta en \(\Theta(V^3)\) tiempo,
Resumen
pgr floydWarshall(edges_sql [, directed])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
Uso de valores predeterminados
pgr_floydWarshall(edges_sql)
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
Ejemplo 1: | Para vértices \(\{1, 2, 3, 4\}\) en un grafo dirigido |
---|
SELECT * FROM pgr_floydWarshall(
'SELECT id, source, target, cost FROM edge_table where id < 5'
);
start_vid | end_vid | agg_cost
-----------+---------+----------
1 | 2 | 1
1 | 5 | 2
2 | 5 | 1
(3 rows)
pgr_floydWarshall(edges_sql [, directed])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
Ejemplo 2: | Para vértices \(\{1, 2, 3, 4\}\) en un grafo no dirigido |
---|
SELECT * FROM pgr_floydWarshall(
'SELECT id, source, target, cost FROM edge_table where id < 5',
false
);
start_vid | end_vid | agg_cost
-----------+---------+----------
1 | 2 | 1
1 | 5 | 2
2 | 1 | 1
2 | 5 | 1
5 | 1 | 2
5 | 2 | 1
(6 rows)
Parámetro | Tipo | Descripción |
---|---|---|
edges_sql | TEXT |
Consulta SQL como se describió anteriormente. |
dirigido | BOOLEAN |
(opcional) El valor predeterminado es verdadero (es Dirigido). Cuando se establece en falso, el grafo se considera como No Dirigido |
Descripción de la consulta edges_sql (no es necesarioun id)
edges_sql: | Una consulta SQL, que debe regresar un conjunto de filas con las siguientes columnas: |
---|
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
origen | ANY-INTEGER |
Identificador del primer punto final en el vértice de la arista. | |
objetivo | ANY-INTEGER |
Identificador del segundo punto final en el vértice de la arista. | |
cost | ANY-NUMERICAL |
Peso de la arista (source, target)
|
|
reverse_cost | ANY-NUMERICAL |
-1 | Peso de la arista (target, source),
|
Donde:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERICAL: | SMALLINT, INTEGER, BIGINT, REAL, FLOAT |
Devuelve un conjunto de (start_vid, end_vid, agg_cost)
Columna | Tipo | Descripción |
---|---|---|
start_vid | BIGINT |
Identificador del vértice inicial. |
end_vid | BIGINT |
Identificador del vértice final. |
agg_cost | FLOAT |
Costo total de start_vid a end_vid . |
Índices y tablas