pgr_dijkstraCostMatrix
¶
pgr_dijkstraCostMatrix
- Calcula la matriz de costes utilizando pgr_dijkstra.
Disponibilidad
Versión 3.0.0
Función oficial
Versión 2.3.0
Nueva función propuesta
Descripción¶
Utilizando el algoritmo Dijkstra, calcula y devuelve una matriz de costes.
Algoritmo de Dijkstra, concebido por el informático holandés Edsger Dijkstra en 1956. Es un algoritmo de búsqueda en grafos que resuelve el problema de ruta más corta para un grafo con costos de aristas no negativos, produciendo la ruta más corta desde un vértice inicial a un vértice final . Esta implementación se puede utilizar con un grafos dirigidos y no dirigidos.
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
pgr_dijkstraCostMatrix(SQL de aristas, salidas, [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_dijkstraCostMatrix(
'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_dijkstraCostMatrix(
'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