MOA* |

(1) Initialize *Open* with the start node. Initialize an empty set of nodes *Solutions*. |

(2) Find a subset of *Open*, denoted , of nodes with -values not dominated by an -value of any node in *Open* or |

*Solutions*. |

(3) If , then exit returning solutions found by following efficient back pointers from nodes in *Solutions*. |

(4) Otherwise, select node from , remove from *Open*, and add to *Closed*. |

(5) If is a solution node, then add to *Solutions* and Goto 2. |

(6) Otherwise, Expand , adding successors to *Open* (removing previously expanded successors from *Closed*) and computing |

successor -values. Goto 2. |