pgr_contraction¶
pgr_contraction
— Realiza la contracción del grafo y devuelve los vértices y aristas contraídos..
Disponibilidad
Versión 3.0.0
Cambio de columnas de retorno:
seq
se eliminaCambio de nombre de
pgr_contractGraph
Correcciones
Función oficial
Versión 2.3.0
Nueva función experimental
Descripción¶
La contracción reduce el tamaño del grafo eliminando algunos de los vértices y aristas, también por ejemplo, podría agregar aristas que representan una secuencia de aristas originales disminuyendo el tiempo total y el espacio utilizados en los algoritmos de grafo.
- Las características principales son:
El proceso se realiza sólo en las aristas con costos positivos.
No devuelve el grafo completo contraído
Solo se devuelven los cambios en el gráfico
Actualmente hay dos tipos de métodos de contracción
Contracción Sin Salida
Contracción Lineal
Los valores devueltos incluyen
las aristas añadidas por contracción lineal.
los vértices modificados por contracción sin salida.
Los valores devueltos se ordenan de la siguiente manera:
columna id ascendente cuando el tipo = v
columna id descendente cuando el tipo = e
Firmas¶
Resumen
La función pgr_contraction tiene la siguiente firma:
pgr_contraction(Edges SQL, Contraction order [, max_cycles] [, forbidden_vertices] [, directed])
RETURNS SETOF (type, id, contracted_vertices, source, target, cost)
- Ejemplo
Hacer una contracción sin salida y una contracción lineal con el vértice 2 cuya contracción está prohibida
SELECT * FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[1, 2], forbidden_vertices:=ARRAY[2]);
type | id | contracted_vertices | source | target | cost
------+----+---------------------+--------+--------+------
v | 2 | {1} | -1 | -1 | -1
v | 5 | {7,8} | -1 | -1 | -1
v | 10 | {13} | -1 | -1 | -1
v | 15 | {14} | -1 | -1 | -1
v | 17 | {16} | -1 | -1 | -1
(5 rows)
Parámetros¶
Columna |
Tipo |
Descripción |
---|---|---|
Edges SQL |
|
Consulta SQL como se describe en Inner query |
Orden de Contracciones |
|
|
Parámetros opcionales¶
Columna |
Tipo |
Valores predeterminados |
Descripción |
---|---|---|---|
forbidden_vertices |
|
Vacío |
Identificadores de vértices prohibidos de contracción. |
max_cycles |
|
\(1\) |
Número de veces que se realizarán las operaciones de contracción en contraction_order |
dirigido |
|
|
|
Consulta interna¶
Columna |
Tipo |
Valores predeterminados |
Descripción |
---|---|---|---|
id |
|
Identificador de la arista. |
|
origen |
|
Identificador del primer punto final en el vértice de la arista. |
|
objetivo |
|
Identificador del segundo punto final en el vértice de la arista. |
|
costo |
|
Peso de la arista (source, target)
|
|
reverse_cost |
|
-1 |
Peso de la arista (target, source),
|
Donde:
- ANY-INTEGER
SMALLINT, INTEGER, BIGINT
- ANY-NUMERICAL
SMALLINT, INTEGER, BIGINT, REAL, FLOAT
Columnas de Resultados¶
DEVOLUCION DE CONJUNTOS (type, id, contracted_vertices, source, target, cost)
La función devuelve una sola fila. Las columnas de la fila son:
Columna |
Tipo |
Descripción |
---|---|---|
tipo |
|
|
id |
|
|
contracted_vertices |
|
Arreglo de identificadores de vértices contraídos. |
origen |
|
|
objetivo |
|
|
costo |
|
|
Ejemplos Adicionales¶
- Ejemplo
Sólo contracción sin salida
SELECT * FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[1]);
type | id | contracted_vertices | source | target | cost
------+----+---------------------+--------+--------+------
v | 2 | {1} | -1 | -1 | -1
v | 5 | {7,8} | -1 | -1 | -1
v | 10 | {13} | -1 | -1 | -1
v | 15 | {14} | -1 | -1 | -1
v | 17 | {16} | -1 | -1 | -1
(5 rows)
- Ejemplo
Sólo contracción lineal
SELECT * FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[2]);
type | id | contracted_vertices | source | target | cost
------+----+---------------------+--------+--------+------
e | -1 | {8} | 5 | 7 | 2
e | -2 | {8} | 7 | 5 | 2
(2 rows)
Ver también¶
Índices y tablas