Based on A* algorithm, the bidirectional search finds a shortest path from
a starting vertex (start_vid) to an ending vertex (end_vid).
It runs two simultaneous searches: one forward from the start_vid, and one backward from the end_vid,
stopping when the two meet in the middle.
This implementation can be used with a directed graph and an undirected graph.
The main Characteristics are:
| 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. |