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 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:
[ max_cycles, forbidden_vertices, directed]
(type, id, contracted_vertices, source, target, cost)
- Ejemplo:
Hacer una contracción de callejón sin salida y una contracción lineal en ese orden en un grafo no dirigido.
SELECT * FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edges',
ARRAY[1, 2], directed => false);
type | id | contracted_vertices | source | target | cost
------+----+---------------------+--------+--------+------
v | 4 | {2} | -1 | -1 | -1
v | 7 | {1,3} | -1 | -1 | -1
v | 14 | {13} | -1 | -1 | -1
e | -1 | {5,6} | 7 | 10 | 2
e | -2 | {8,9} | 7 | 12 | 2
e | -3 | {17} | 12 | 16 | 2
e | -4 | {15} | 10 | 16 | 2
(7 rows)
Parámetros¶
Parámetro |
Tipo |
Descripción |
---|---|---|
|
SQL de aristas descritas más adelante. |
|
Orden de contracciones |
|
Operaciones de contracción ordenadas.
|
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Parámetros opcionales de Contracción¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
vacío |
Identificadores de vértices prohibidos para contracción. |
|
|
\(1\) |
Número de veces que se realizarán las operaciones de contracción en el orden |
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¶
Returns set of (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 del
|
|
|
Todos los números de esta columna son “”DISTINTOS””
|
|
|
Arreglo de identificadores de vértices contraídos. |
|
|
|
|
|
|
|
|
|
Ejemplos Adicionales¶
- Ejemplo:
Sólo contracción sin salida
SELECT type, id, contracted_vertices FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edges',
ARRAY[1]);
type | id | contracted_vertices
------+----+---------------------
v | 4 | {2}
v | 6 | {5}
v | 7 | {1,3}
v | 8 | {9}
v | 14 | {13}
(5 rows)
- Ejemplo:
Sólo contracción lineal
SELECT * FROM pgr_contraction(
'SELECT id, source, target, cost, reverse_cost FROM edges',
ARRAY[2]);
type | id | contracted_vertices | source | target | cost
------+----+---------------------+--------+--------+------
e | -1 | {3} | 1 | 7 | 2
e | -2 | {3} | 7 | 1 | 2
(2 rows)
Ver también¶
Índices y tablas