Bi-Directional Search
Note: Speedup techniques covered here do not change worst-case behavior, but reduce the number of visited vertices in practice.
Bi-D Search
Alternate forward search from s, backward search from t (follow edges backward)
df (u) distances for forward search; db(u) distances for backward search;
Priority Queue: Qf: forward; Qb: backward
The algorithm terminates when some vertex w has been processed, i.e., deleted from the queue of both searches, Qf and Qb
Subtlety: After search terminates, find node x with minimum value of df (x) + db(x). Find shortest path from s to x using Πf and shortest path backward from t to x using Πb. Note: x will have been deleted from either Qf or Qb or both.
Goal-Directed Search or A*
Modify edge weights with potential function over vertices.
Correctness
So shortest paths are maintained in the modified graph with weights.
To apply Dijkstra, we need ≥ 0 for all (u, v).
Choose potential function appropriately, to be feasible
Landmarks
Small set of landmarks LCV. For all u ∈ V, l ∈ L, pre-compute δ(u, l).
Potential for each l.
CLAIM: is feasible.