pgr_maxFlowMinCost
— Calcula el flujo en las aristas del grafo, lo que maximiza el flujo y minimiza el costo del recorrido desde los orígenes a los destinos.
Advertencia
Posible bloqueo del servidor
Advertencia
Funciones experimentales
Disponibilidad
Soporte
Las características principales son:
Resumen
pgr_maxFlowMinCost(Edges SQL, source, target)
pgr_maxFlowMinCost(Edges SQL, sources, target)
pgr_maxFlowMinCost(Edges SQL, source, targets)
pgr_maxFlowMinCost(Edges SQL, sources, targets)
RETURNS SET OF (seq, edge, source, target, flow, residual_capacity, cost, agg_cost)
OR EMPTY SET
pgr_maxFlowMinCost(Edges SQL, source, target)
RETURNS SET OF (seq, edge, source, target, flow, residual_capacity, cost, agg_cost)
OR EMPTY SET
Ejemplo: | Desde el vértice \(2\) al vértice \(3\) |
---|
SELECT * FROM pgr_MaxFlowMinCost(
'SELECT id,
source, target,
capacity, reverse_capacity,
cost, reverse_cost FROM edge_table',
2, 3
);
seq | edge | source | target | flow | residual_capacity | cost | agg_cost
-----+------+--------+--------+------+-------------------+------+----------
1 | 4 | 2 | 5 | 80 | 20 | 80 | 80
2 | 3 | 4 | 3 | 80 | 50 | 80 | 160
3 | 8 | 5 | 6 | 80 | 20 | 80 | 240
4 | 9 | 6 | 9 | 80 | 50 | 80 | 320
5 | 16 | 9 | 4 | 80 | 0 | 80 | 400
(5 rows)
pgr_maxFlowMinCost(Edges SQL, source, targets)
RETURNS SET OF (seq, edge, source, target, flow, residual_capacity, cost, agg_cost)
OR EMPTY SET
Ejemplo: | Desde el vértice \(13\) a los vértices \(\{7, 1, 4\}\) |
---|
SELECT * FROM pgr_MaxFlowMinCost(
'SELECT id,
source, target,
capacity, reverse_capacity,
cost, reverse_cost FROM edge_table',
13, ARRAY[7, 1, 4]
);
seq | edge | source | target | flow | residual_capacity | cost | agg_cost
-----+------+--------+--------+------+-------------------+------+----------
1 | 1 | 2 | 1 | 50 | 80 | 50 | 50
2 | 4 | 5 | 2 | 50 | 0 | 50 | 100
3 | 16 | 9 | 4 | 50 | 30 | 50 | 150
4 | 10 | 10 | 5 | 50 | 0 | 50 | 200
5 | 12 | 10 | 11 | 50 | 50 | 50 | 250
6 | 13 | 11 | 12 | 50 | 50 | 50 | 300
7 | 15 | 12 | 9 | 50 | 0 | 50 | 350
8 | 14 | 13 | 10 | 100 | 30 | 100 | 450
(8 rows)
pgr_maxFlowMinCost(Edges SQL, sources, target)
RETURNS SET OF (seq, edge, source, target, flow, residual_capacity, cost, agg_cost)
OR EMPTY SET
Ejemplo: | Desde los vértices \(\{1, 7, 14\}\) al vértice \(12\) |
---|
SELECT * FROM pgr_MaxFlowMinCost(
'SELECT id,
source, target,
capacity, reverse_capacity,
cost, reverse_cost FROM edge_table',
ARRAY[1, 7, 14], 12
);
seq | edge | source | target | flow | residual_capacity | cost | agg_cost
-----+------+--------+--------+------+-------------------+------+----------
1 | 1 | 1 | 2 | 80 | 0 | 80 | 80
2 | 4 | 2 | 5 | 80 | 20 | 80 | 160
3 | 8 | 5 | 6 | 100 | 0 | 100 | 260
4 | 10 | 5 | 10 | 30 | 100 | 30 | 290
5 | 9 | 6 | 9 | 50 | 80 | 50 | 340
6 | 11 | 6 | 11 | 50 | 80 | 50 | 390
7 | 6 | 7 | 8 | 50 | 0 | 50 | 440
8 | 7 | 8 | 5 | 50 | 0 | 50 | 490
9 | 15 | 9 | 12 | 50 | 30 | 50 | 540
10 | 12 | 10 | 11 | 30 | 70 | 30 | 570
11 | 13 | 11 | 12 | 80 | 20 | 80 | 650
(11 rows)
pgr_maxFlowMinCost(Edges SQL, sources, targets)
RETURNS SET OF (seq, edge, source, target, flow, residual_capacity, cost, agg_cost)
OR EMPTY SET
Ejemplo: | Desde los vértices \(\{7, 13\}\) a los vértices \(\{3, 9\}\) |
---|
SELECT * FROM pgr_MaxFlowMinCost(
'SELECT id,
source, target,
capacity, reverse_capacity,
cost, reverse_cost FROM edge_table',
ARRAY[7, 13], ARRAY[3, 9]
);
seq | edge | source | target | flow | residual_capacity | cost | agg_cost
-----+------+--------+--------+------+-------------------+------+----------
1 | 8 | 5 | 6 | 100 | 0 | 100 | 100
2 | 9 | 6 | 9 | 100 | 30 | 100 | 200
3 | 6 | 7 | 8 | 50 | 0 | 50 | 250
4 | 7 | 8 | 5 | 50 | 0 | 50 | 300
5 | 10 | 10 | 5 | 50 | 0 | 50 | 350
6 | 12 | 10 | 11 | 50 | 50 | 50 | 400
7 | 13 | 11 | 12 | 50 | 50 | 50 | 450
8 | 15 | 12 | 9 | 50 | 0 | 50 | 500
9 | 14 | 13 | 10 | 100 | 30 | 100 | 600
(9 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 |
Capacidad de la arista (origen, destino)
|
|
reverse_capacity | ANY-INTEGER |
-1 | Capacidad de la arista (destino, origen),
|
cost | ANY-NUMERICAL |
Peso de la arista (origen, destino) si existe. | |
reverse_cost | ANY-NUMERICAL |
0 | Peso de la arista (destino, origen) si existe. |
Donde:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERICAL: | smallint, int, bigint, real, float |
Columna | Tipo | Descripción |
---|---|---|
seq | INT |
Valor secuencial a partir de 1. |
edge | BIGINT |
Identificador de la arista en la consulta original(edges_sql). |
origen | BIGINT |
Identificador del primer punto final en el vértice de la arista. |
objetivo | BIGINT |
Identificador del segundo punto final en el vértice de la arista. |
flujo | BIGINT |
Flujo a través de la arista en la dirección (origen, destino). |
residual_capacity (capacidad residual) | BIGINT |
Capacidad residual de la arista en la dirección (origen, destino). |
cost | FLOAT |
El costo de enviar este flujo a través de la arista en la dirección (origen, destino). |
agg_cost | FLOAT |
El costo agregado. |