procedure ParallelAstar(s, t, k) {Find the shortest path from s to t with k queues} Let {Qi} where i=1 to k be the priority queues of the open list Let H be the closed list PUSH(Q1, s) m <- nil {m stores the best target state} while Q is not empty do Let S be an empty list for i 1 to k in parallel do if Qi is empty then continue end if qi <- EXTRACT(Qi) if qi.node = t then if m = nil or f(qi) < f(m) then m <- qi end if continue end if S <- S + EXPAND(qi) end for if m =/= nil and f(m) ≤ minq BELONGS TO Q f(q) then return the path generated from m end if T <- S for s' BELONGS TO S in parallel do if s'.node BELONGS TO H and H[s'.node].g < s'.g then remove s' from T end if end for for t' BELONGS TO T in parallel do t'.f <- f(t') Push t' to one of priority queues H[t'.node] <- t' end for end while end procedure