pgr_astar - Shortest Path A*¶
Name¶
pgr_astar
— Returns the shortest path using A* algorithm.
Synopsis¶
The A* (pronounced “A Star”) algorithm is based on Dijkstra’s algorithm with a heuristic that allow it to solve most shortest path problems by evaluation only a sub-set of the overall graph. Returns a set of pgr_costResult (seq, id1, id2, cost) rows, that make up a path.
pgr_costResult[] pgr_astar(sql text, source integer, target integer,
directed boolean, has_rcost boolean);
Description¶
sql: | a SQL query, which should return a set of rows with the following columns: SELECT id, source, target, cost, x1, y1, x2, y2 [,reverse_cost] FROM edge_table
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
source: |
|
||||||||||||||||||
target: |
|
||||||||||||||||||
directed: |
|
||||||||||||||||||
has_rcost: | if |
Returns set of pgr_costResult[]:
seq: | row sequence |
---|---|
id1: | node ID |
id2: | edge ID (-1 for the last row) |
cost: | cost to traverse from id1 using id2 |
History
- Renamed in version 2.0.0
Examples¶
- Without
reverse_cost
SELECT seq, id1 AS node, id2 AS edge, cost
FROM pgr_astar(
'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table',
4, 1, false, false
);
seq | node | edge | cost
-----+------+------+------
0 | 4 | 16 | 1
1 | 9 | 9 | 1
2 | 6 | 8 | 1
3 | 5 | 4 | 1
4 | 2 | 1 | 1
5 | 1 | -1 | 0
(6 rows)
- With
reverse_cost
SELECT seq, id1 AS node, id2 AS edge, cost
FROM pgr_astar(
'SELECT id, source, target, cost, x1, y1, x2, y2, reverse_cost FROM edge_table',
4, 1, true, true
);
seq | node | edge | cost
-----+------+------+------
0 | 4 | 3 | 1
1 | 3 | 2 | 1
2 | 2 | 1 | 1
3 | 1 | -1 | 0
(4 rows)
The queries use the Sample Data network.