pgr_bdDijkstraCostMatrix
¶
pgr_bdDijkstraCostMatrix
- Calcula la matriz de costes utilizando pgr_bdDijkstra.
Disponibilidad
Versión 3.0.0
Función oficial
Versión 2.5.0
Nueva función propuesta
Descripción¶
Usando el algoritmo bidireccional de Dijkstra, calcular y regresar una matriz de costos.
El proceso se realiza sólo en aristas con costos positivos.
Valor no negativo en una columna de costo se interpreta como la arista no exite.
Los valores se devuelven cuando hay una ruta.
Cuando no hay ruta:
Cuando el vértice de salida y el vértice destino son iguales.
El costo agregado de los valores no incluídos \((v, v)\) es \(0\)
Cuando el vértice de salida y el vértice destino son diferentes y no hay ninguna ruta:
El costo agregado de los valores no incluídos \((u, v)\) es :math: infty
Para fines de optimización, se ignora cualquier valor duplicado en los vertices de salida o destino.
Tiempo de ejecución (peor de los casos): \(O((V \log V + E))\)
Para grandes gráficos donde hay un camino entre el vértice inicial y el vértice final:
Se espera que termine más rápido que pgr_dijkstra
Las características principales son:
Se puede utilizar como entrada para pgr_TSP.
Usar directamente cuando la matriz resultante es simétrica y no hay valor \(\infty\).
Es responsabilidad dels usuario hacer que la matriz sea simétrica.
Mediante el uso de la media geométrica o armónica de los valores no simétricos.
Mediante el uso de max o min, los valores no simétricos.
Estableciendo el triángulo superior para que sea la imagen reflejada del triángulo inferior.
Estableciendo el triángulo inferior para que sea la imagen reflejada del triángulo superior.
También es responsabilidad de los usuarios para fijar un valor \(\infty\).
Cada función funciona como parte de la familia a la que pertenece.
No devuelve una ruta.
Devuelve la suma de los costos de la ruta más corta para la combinación de pares de nodos en el grafo.
El proceso se realiza sólo en aristas con costos positivos.
Los valores se devuelven cuando hay una ruta.
Cuando el vértice inicial y el vértice final son iguales, no hay camino.
El costo agregado de los valores no incluídos (v, v) es 0.
Cuando el vértice inicial y el vértice final son diferentes y no hay ruta.
El costo agregado de los valores no incluídos
(u, v)
es :math: infty.
Sea el caso, los valores devueltos se almacenan en una tabla:
El índice único es el par:
(start_vid, end_vid)
.
Dependiendo de la función y sus parámetros, los resultados pueden ser simétricos.
El costo agregado de (u, v) es el mismo que para (v, u).
Se omite cualquier valor duplicado en las salidas.
Los valores regresados se ordenan:
start_vid
ascendenteend_vid
ascendente
Firmas¶
Resumen
directed
])(start_vid, end_vid, agg_cost)
- Ejemplo:
Matriz de costos simétrica para vértices \(\{5, 6, 10, 15\}\) en un grafo no dirigido
SELECT * FROM pgr_bdDijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edges',
(SELECT array_agg(id)
FROM vertices
WHERE id IN (5, 6, 10, 15)),
false);
start_vid | end_vid | agg_cost
-----------+---------+----------
5 | 6 | 1
5 | 10 | 2
5 | 15 | 3
6 | 5 | 1
6 | 10 | 1
6 | 15 | 2
10 | 5 | 2
10 | 6 | 1
10 | 15 | 1
15 | 5 | 3
15 | 6 | 2
15 | 10 | 1
(12 rows)
Parámetros¶
Columna |
Tipo |
Descripción |
---|---|---|
|
SQL de aristas como se describe a continuación |
|
salidas |
|
Arreglo de identificadores de vértices iniciales. |
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Consultas Internas¶
SQL aristas¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
ENTEROS |
Identificador de la arista. |
|
|
ENTEROS |
Identificador del primer vértice de la arista. |
|
|
ENTEROS |
Identificador del segundo vértice de la arista. |
|
|
FLOTANTES |
Peso de la arista ( |
|
|
FLOTANTES |
-1 |
Peso de la arista (
|
Donde:
- ENTEROS:
SMALLINT
,INTEGER
,BIGINT
- FLOTANTES:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Columnas de Resultados¶
Conjunto de (start_vid, end_vid, agg_cost)
Columna |
Tipo |
Descripción |
---|---|---|
|
|
Identificador del vértice de salida. |
|
|
Identificador del vértice destino. |
|
|
Costo afregado desde |
Ejemplos Adicionales¶
- Ejemplo:
Usar con pgr_TSP.
SELECT * FROM pgr_TSP(
$$
SELECT * FROM pgr_bdDijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edges',
(SELECT array_agg(id)
FROM vertices
WHERE id IN (5, 6, 10, 15)),
false)
$$);
NOTICE: pgr_TSP no longer solving with simulated annaeling
HINT: Ignoring annaeling parameters
seq | node | cost | agg_cost
-----+------+------+----------
1 | 5 | 0 | 0
2 | 6 | 1 | 1
3 | 10 | 1 | 2
4 | 15 | 1 | 3
5 | 5 | 3 | 6
(5 rows)
Ver también¶
Índices y tablas