Modifying the Search Algorithm

Suppose Open and Closed are hash tables of states.

Search(s)
   d[s] = 0
   pred[s] = null
   PQ = {s}
   Open = {s}
   Closed = {}
   while PQ ≠ {} do
      u = Remove[PQ]
      Remove(Open,u)
      Add(Closed,u)
      if success
         then return u
      else
         for each v ∈ Expand(u) do
            Add(PQ, v)
            Add(Open, v)
   return null