pgr_pushRelabel
— Calcula el flujo en los bordes del grafo que maximiza el flujo de los orígenes a los destinos mediante el Algoritmo Push Relabel.
Disponibilidad
pgr_maxFlowPushRelabel
Soporte
Las características principales son:
Resumen
pgr_pushRelabel(Edges SQL, source, target)
pgr_pushRelabel(Edges SQL, sources, target)
pgr_pushRelabel(Edges SQL, source, targets)
pgr_pushRelabel(Edges SQL, sources, targets)
RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
OR EMPTY SET
pgr_pushRelabel(Edges SQL, source, target)
RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
OR EMPTY SET
Ejemplo: | Del vértice \(6\) al vértice \(11\) |
---|
SELECT * FROM pgr_pushRelabel(
'SELECT id,
source,
target,
capacity,
reverse_capacity
FROM edge_table'
, 6, 11
);
seq | edge | start_vid | end_vid | flow | residual_capacity
-----+------+-----------+---------+------+-------------------
1 | 10 | 5 | 10 | 100 | 30
2 | 8 | 6 | 5 | 100 | 30
3 | 11 | 6 | 11 | 130 | 0
4 | 12 | 10 | 11 | 100 | 0
(4 rows)
Calcula el flujo en los bordes del gráfico que maximiza el flujo desde el origen a todos los objetivos.
pgr_pushRelabel(Edges SQL, source, targets)
RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
OR EMPTY SET
Ejemplo: | Del vértice \(6\) a los vértices \(\{11, 1, 13\}\) |
---|
SELECT * FROM pgr_pushRelabel(
'SELECT id,
source,
target,
capacity,
reverse_capacity
FROM edge_table'
, 6, ARRAY[11, 1, 13]
);
seq | edge | start_vid | end_vid | flow | residual_capacity
-----+------+-----------+---------+------+-------------------
1 | 1 | 2 | 1 | 130 | 0
2 | 2 | 3 | 2 | 80 | 20
3 | 3 | 4 | 3 | 80 | 50
4 | 4 | 5 | 2 | 50 | 0
5 | 7 | 5 | 8 | 50 | 80
6 | 10 | 5 | 10 | 80 | 50
7 | 8 | 6 | 5 | 130 | 0
8 | 9 | 6 | 9 | 80 | 50
9 | 11 | 6 | 11 | 130 | 0
10 | 6 | 7 | 8 | 50 | 0
11 | 6 | 8 | 7 | 50 | 50
12 | 7 | 8 | 5 | 50 | 0
13 | 16 | 9 | 4 | 80 | 0
14 | 12 | 10 | 11 | 80 | 20
(14 rows)
pgr_pushRelabel(Edges SQL, sources, target)
RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
OR EMPTY SET
Ejemplo: | De los vértices vertices \(\{6, 8, 12\}\) al vértice \(11\) |
---|
SELECT * FROM pgr_pushRelabel(
'SELECT id,
source,
target,
capacity,
reverse_capacity
FROM edge_table'
, ARRAY[6, 8, 12], 11
);
seq | edge | start_vid | end_vid | flow | residual_capacity
-----+------+-----------+---------+------+-------------------
1 | 10 | 5 | 10 | 100 | 30
2 | 8 | 6 | 5 | 100 | 30
3 | 11 | 6 | 11 | 130 | 0
4 | 12 | 10 | 11 | 100 | 0
(4 rows)
pgr_pushRelabel(Edges SQL, sources, targets)
RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
OR EMPTY SET
Ejemplo: | De los vértices \(\{6, 8, 12\}\) a los vértices \(\{1, 3, 11\}\) |
---|
SELECT * FROM pgr_pushRelabel(
'SELECT id,
source,
target,
capacity,
reverse_capacity
FROM edge_table'
, ARRAY[6, 8, 12], ARRAY[1, 3, 11]
);
seq | edge | start_vid | end_vid | flow | residual_capacity
-----+------+-----------+---------+------+-------------------
1 | 1 | 2 | 1 | 50 | 80
2 | 3 | 4 | 3 | 80 | 50
3 | 4 | 5 | 2 | 50 | 0
4 | 10 | 5 | 10 | 100 | 30
5 | 8 | 6 | 5 | 130 | 0
6 | 9 | 6 | 9 | 30 | 100
7 | 11 | 6 | 11 | 130 | 0
8 | 7 | 8 | 5 | 20 | 30
9 | 16 | 9 | 4 | 80 | 0
10 | 12 | 10 | 11 | 100 | 0
11 | 15 | 12 | 9 | 50 | 0
(11 rows)
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
Edges SQL | TEXT |
La consulta SQL de aristas como se describe en Inner Query. | |
origen | BIGINT |
Identificador del vértice inicial del flujo. | |
orígenes | ARRAY[BIGINT] |
Conjunto de identificadores de los vértices iniciales del flujo. | |
objetivo | BIGINT |
Identificador del vértice final del flujo. | |
destinos | ARRAY[BIGINT] |
Conjunto de identificadores de los vértices finales del flujo. |
Edges SQL: | Consulta SQL de un grafo dirigido de capacidades, que debe devolver un conjunto de filas con las siguientes columnas: |
---|
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. | |
capacidad | ANY-INTEGER |
Peso de la arista (source, target)
|
|
reverse_capacity (capacidad inversa) | ANY-INTEGER |
-1 | Peso de la arista (target, source),
|
Donde:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|
Columna | Tipo | Descripción |
---|---|---|
seq | INT |
Valor secuencial a partir de 1. |
arista | BIGINT |
Identificador de la arista en la consulta original(edges_sql). |
start_vid | BIGINT |
Identificador del primer punto final en el vértice de la arista. |
end_vid | BIGINT |
Identificador del segundo punto final en el vértice de la arista. |
flujo | BIGINT |
Flujo a través del arista en la dirección (start_vid , end_vid ). |
residual_capacity (capacidad residual) | BIGINT |
Capacidad residual del arista en la dirección (start_vid , end_vid ). |