pgr_bdAstarCost
— Returns the shortest path using A* algorithm.
Availability: 2.5.0
Warning
Experimental functions
pgr_bdAstarCost(edges_sql, start_vid, end_vid)
pgr_bdAstarCost(edges_sql, start_vid, end_vid [, directed , heuristic, factor, epsilon])
pgr_bdAstarCost(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
pgr_bdAstarCost(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
pgr_bdAstarCost(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
OR EMPTY SET
Using these signatures, will load once the graph and perform several one to one pgr_bdAstarCost
start_vid
and/or end_vid
in the result is used to distinguish to which path it belongs.pgr_bdAstarCost(edges_sql, start_vid, end_vid)
RETURNS SET OF (start_vid, end_vid, agg_cost)
start_vid
to the end_vid
Example: | Using the defaults |
---|
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 | 10
(1 row)
pgr_bdAstarCost(edges_sql, start_vid, end_vid [, directed, heuristic, factor, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
start_vid
to each end_vid
in end_vids
allowing the user to chooseNote
In the One to One signature, because of the deprecated signature existence, it is compulsory to indicate if the graph is directed or undirected.
Example: | Directed 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 | 6
(1 row)
pgr_bdAstarCost(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
start_vid
to each end_vid
in end_vids
allowing the user to chooseExample: | Directed using Heuristic 3 and a factor of 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 | 66.25
2 | 11 | 27.5
(2 rows)
pgr_bdAstarCost(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
start_vid
in start_vids
to the end_vid
allowing the user to chooseExample: | Undirected graph with 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 | 7.65028153987288
(2 rows)
pgr_bdAstarCost(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
RETURNS SET OF (start_vid, end_vid, agg_cost)
start_vid
in start_vids
to each end_vid
in end_vids
allowing the user to chooseExample: | Directed graph with a factor of 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 | 7.5
2 | 11 | 4
7 | 3 | 11.5
7 | 11 | 6.5
(4 rows)
edges_sql: | an SQL query, which should return a set of rows with the following columns: |
---|
Column | Type | Default | Description |
---|---|---|---|
id | ANY-INTEGER |
Identifier of the edge. | |
source | ANY-INTEGER |
Identifier of the first end point vertex of the edge. | |
target | ANY-INTEGER |
Identifier of the second end point vertex of the edge. | |
cost | ANY-NUMERICAL |
Weight of the edge (source, target)
|
|
reverse_cost | ANY-NUMERICAL |
-1 | Weight of the edge (target, source),
|
x1 | ANY-NUMERICAL |
X coordinate of source vertex. | |
y1 | ANY-NUMERICAL |
Y coordinate of source vertex. | |
x2 | ANY-NUMERICAL |
X coordinate of target vertex. | |
y2 | ANY-NUMERICAL |
Y coordinate of target vertex. |
Where:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERICAL: | SMALLINT, INTEGER, BIGINT, REAL, FLOAT |
Parameter | Type | Description |
---|---|---|
edges_sql | TEXT |
Edges SQL query as described above. |
start_vid | ANY-INTEGER |
Starting vertex identifier. |
start_vids | ARRAY[ANY-INTEGER] |
Starting vertices identifierers. |
end_vid | ANY-INTEGER |
Ending vertex identifier. |
end_vids | ARRAY[ANY-INTEGER] |
Ending vertices identifiers. |
directed | BOOLEAN |
|
heuristic | INTEGER |
(optional). Heuristic number. Current valid values 0~5. Default
|
factor | FLOAT |
(optional). For units manipulation. \(factor > 0\). Default 1 . see Factor |
epsilon | FLOAT |
(optional). For less restricted results. \(epsilon >= 1\). Default 1 . |
Returns set of (start_vid, end_vid, agg_cost)
Column | Type | Description |
---|---|---|
start_vid | BIGINT |
Identifier of the starting vertex. Used when multiple starting vetrices are in the query. |
end_vid | BIGINT |
Identifier of the ending vertex. Used when multiple ending vertices are in the query. |
agg_cost | FLOAT |
Aggregate cost from start_vid to end_vid . |