pgr_contraction
— Realiza la contracción del grafo y devuelve los vértices y aristas contraídos..
Disponibilidad
seq
se eliminapgr_contractGraph
Soporte
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.
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)
Columna | Tipo | Descripción |
---|---|---|
Edges SQL | TEXT |
Consulta SQL como se describe en Inner query |
Orden de Contracciones | ARRAY[ANY-INTEGER] |
|
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
forbidden_vertices | ARRAY[ANY-INTEGER] |
Vacío | Identificadores de vértices prohibidos de contracción. |
max_cycles | INTEGER |
\(1\) | Número de veces que se realizarán las operaciones de contracción en contraction_order |
dirigido | BOOLEAN |
true |
|
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
id | ANY-INTEGER |
Identificador de la arista. | |
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. | |
costo | 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 |
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 | TEXT |
|
id | BIGINT |
|
contracted_vertices | ARRAY[BIGINT] |
Arreglo de identificadores de vértices contraídos. |
origen | BIGINT |
|
objetivo | BIGINT |
|
costo | FLOAT |
|
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)