A* algorithm
Procedure
A-STAR(G, s, t, HEURISTIC)
INITIALIZE-SINGLE-SOURCE-WITH-CONSTRAINT(G, s, HEURISTIC)
S = ∅
Q = G.Snt // ordered by the constraint
while u ≠ t and Q ≠ ∅:
u = EXTRACT-MIN(Q)
S = S ∪ {u}
for each vertex v in G.Adj[u]:
RELAX(u, v, w, HEURISTIC)
INITIALIZE-SINGLE-SOURCE-WITH-CONSTRAINT(G, s, HEURISTIC):
for each vertex v ∈ G.V:
v.d = ∞
G.Snt[v] = ∞
v.π = NIL
s.d = 0
G.Snt[s] = HEURISTIC(s,t)
RELAX(u, v, w, HEURISTIC)
if v.d > u.d + w(u, v):
v.d = u.d + w(u, v)
G.Snt[v] = v.d + HEURISTIC(v,t)
v.π = u