pgr_bdAstarCost¶
pgr_bdAstarCost
— Returns the aggregate cost shortest path using pgr_aStar algorithm.
Availability
Version 3.0.0
Official function
Version 2.5.0
New Proposed function
Unsupported versions: 2.5
Description¶
Default kind of graph is directed when
directed
flag is missing.directed
flag is set to true
Unless specified otherwise, ordering is:
first by
start_vid
(if exists)then by
end_vid
Values are returned when there is a path
Let \(v\) and \(u\) be nodes on the graph:
If there is no path from \(v\) to \(u\):
no corresponding row is returned
agg_cost
from \(v\) to \(u\) is \(\infty\)
There is no path when \(v = u\) therefore
no corresponding row is returned
agg_cost
from v to u is \(0\)
Edges with negative costs are not included in the graph.
When (x,y) coordinates for the same vertex identifier differ:
A random selection of the vertex’s (x,y) coordinates is used.
Running time: \(O((E + V) * \log V)\)
The results are equivalent to the union of the results of the pgr_bdAstarCost( One to One ) on the:
pgr_bdAstarCost( One to Many )
pgr_bdAstarCost( Many to One )
pgr_bdAstarCost( Many to Many )
Signatures¶
Summary
pgr_bdAstarCost(edges_sql, from_vid, to_vid [, directed] [, heuristic] [, factor] [, epsilon])
pgr_bdAstarCost(edges_sql, from_vid, to_vids [, directed] [, heuristic] [, factor] [, epsilon])
pgr_bdAstarCost(edges_sql, from_vids, to_vid [, directed] [, heuristic] [, factor] [, epsilon])
pgr_bdAstarCost(edges_sql, from_vids, to_vids [, directed] [, heuristic] [, factor] [, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
Optional parameters are named parameters and have a default value.
Using defaults
pgr_bdAstarCost(edges_sql, from_vid, to_vid)
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
 Example
From vertex \(2\) to vertex \(3\) on a directed graph
SELECT * FROM pgr_bdAstarCost(
'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
FROM edge_table',
2, 3
);
start_vid  end_vid  agg_cost
++
2  3  5
(1 row)
One to One¶
pgr_bdAstarCost(edges_sql, from_vid, to_vid [, directed] [, heuristic] [, factor] [, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
 Example
From vertex \(2\) to vertex \(3\) on an directed graph using heuristic \(2\)
SELECT * FROM pgr_bdAstarCost(
'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
FROM edge_table',
2, 3,
true, heuristic := 2
);
start_vid  end_vid  agg_cost
++
2  3  5
(1 row)
One to many¶
pgr_bdAstarCost(edges_sql, from_vid, to_vids [, directed] [, heuristic] [, factor] [, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
 Example
From vertex 2 to vertices \(\{3, 11\}\) on a directed graph using heuristic 3 and factor \(3.5\)
SELECT * FROM pgr_bdAstarCost(
'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
FROM edge_table',
2, ARRAY[3, 11],
heuristic := 3, factor := 3.5
);
start_vid  end_vid  agg_cost
++
2  3  5
2  11  3
(2 rows)
Many to One¶
pgr_bdAstarCost(edges_sql, from_vids, to_vid [, directed] [, heuristic] [, factor] [, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
 Example
From vertices \(\{7, 2\}\) to vertex \(3\) on a undirected graph using heuristic \(4\)
SELECT * FROM pgr_bdAstarCost(
'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
FROM edge_table',
ARRAY[2, 7], 3,
false, heuristic := 4
);
start_vid  end_vid  agg_cost
++
2  3  1
7  3  4
(2 rows)
Many to Many¶
pgr_bdAstarCost(edges_sql, from_vids, to_vids [, directed] [, heuristic] [, factor] [, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
 Example
From vertices \(\{7, 2\}\) to vertices \(\{3, 11\}\) on a directed using heuristic \(5\) and factor \(0.5\)
SELECT * FROM pgr_bdAstarCost(
'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
FROM edge_table',
ARRAY[2, 7], ARRAY[3, 11],
factor := 0.5
);
start_vid  end_vid  agg_cost
++
2  3  5
2  11  3
7  3  6
7  11  4
(4 rows)
Parameters¶
Parameter 
Type 
Description 

edges_sql 

edges_sql inner query. 
from_vid 

Starting vertex identifier. Parameter in: 
from_vids 

Array of starting vertices identifiers. Parameter in: 
to_vid 

Ending vertex identifier. Parameter in: 
to_vids 

Array of ending vertices identifiers. Parameter in: 
Optional Parameters¶
Parameter 
Type 
Default 
Description 

directed 



heuristic 


Heuristic number. Current valid values 0~5. Default

factor 


For units manipulation. \(factor > 0\). See Factor 
epsilon 


For less restricted results. \(epsilon >= 1\). 
Inner query¶
edges_sql¶
 edges_sql
an SQL query, which should return a set of rows with the following columns:
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),

x1 

X coordinate of source vertex. 

y1 

Y coordinate of source vertex. 

x2 

X coordinate of target vertex. 

y2 

Y coordinate of target vertex. 
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. Used when multiple starting vetrices are in the query. 
end_vid 

Identifier of the ending vertex. Used when multiple ending vertices are in the query. 
agg_cost 

Aggregate cost from 