pgr_bdDijkstraCostMatrix¶
pgr_bdDijkstraCostMatrix
 Calculates the a cost matrix using pgr_bdDijkstra.
Availability:
Version 3.0.0
Official function
Version 2.5.0
New proposed function
Description¶
The main characteristics are:
Process is done only on edges with positive costs.
Values are returned when there is a path.
When the starting vertex and ending vertex are the same, there is no path.
The agg_cost the non included values (v, v) is 0
When the starting vertex and ending vertex are the different and there is no path:
The agg_cost the non included values (u, v) is \(\infty\)
Running time (worse case scenario): \(O((V \log V + E))\)
For large graphs where there is a path bewtween the starting vertex and ending vertex:
It is expected to terminate faster than pgr_dijkstra
Returns a cost matrix.
Signatures¶
Summary
pgr_bdDijkstraCostMatrix(edges_sql, start_vids [, directed])
RETURNS SET OF (start_vid, end_vid, agg_cost)
Using default
pgr_bdDijkstraCostMatrix(edges_sql, start_vid)
RETURNS SET OF (start_vid, end_vid, agg_cost)
 Example
Cost matrix for vertices \(\{1, 2, 3, 4\}\) on a directed graph
SELECT * FROM pgr_bdDijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
(SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
);
start_vid  end_vid  agg_cost
++
1  2  1
1  3  6
1  4  5
2  1  1
2  3  5
2  4  4
3  1  2
3  2  1
3  4  3
4  1  3
4  2  2
4  3  1
(12 rows)
Complete Signature¶
pgr_bdDijkstraCostMatrix(edges_sql, start_vids [, directed])
RETURNS SET OF (start_vid, end_vid, agg_cost)
 Example
Symmetric cost matrix for vertices \(\{1, 2, 3, 4\}\) on an undirected graph
SELECT * FROM pgr_bdDijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
(SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
false
);
start_vid  end_vid  agg_cost
++
1  2  1
1  3  2
1  4  3
2  1  1
2  3  1
2  4  2
3  1  2
3  2  1
3  4  1
4  1  3
4  2  2
4  3  1
(12 rows)
Parameters¶
Parameter 
Type 
Description 

edges_sql 

Edges SQL query as described above. 
start_vids 

Array of identifiers of the vertices. 
directed 

(optional). When 
Inner query¶
Column 
Type 
Default 
Description 

id 

Identifier of the edge. 

source 

Identifier of the first end point vertex of the edge. 

target 

Identifier of the second end point vertex of the edge. 

cost 

Weight of the edge (source, target)


reverse_cost 

1 
Weight of the edge (target, source),

Where:
 ANYINTEGER
SMALLINT, INTEGER, BIGINT
 ANYNUMERICAL
SMALLINT, INTEGER, BIGINT, REAL, FLOAT
Result Columns¶
Returns SET OF (start_vid, end_vid, agg_cost)
Column 
Type 
Description 

start_vid 

Identifier of the starting vertex. 
end_vid 

Identifier of the ending vertex. 
agg_cost 

Aggregate cost from 
Additional Examples¶
 Example
Use with tsp
SELECT * FROM pgr_TSP(
$$
SELECT * FROM pgr_bdDijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
(SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
false
)
$$,
randomize := false
);
seq  node  cost  agg_cost
+++
1  1  1  0
2  2  1  1
3  3  1  2
4  4  3  3
5  1  0  6
(5 rows)