next up previous
Next: Means-Ends Analysis Up: Knowledge Representation and Search Previous: And-Or Graphs

AO* Algorithm

  1. Initialise the graph to start node
  2. Traverse the graph following the current path accumulating nodes that have not yet been expanded or solved
  3. Pick any of these nodes and expand it and if it has no successors call this value FUTILITY otherwise calculate only f' for each of the successors.
  4. If f' is 0 then mark the node as SOLVED
  5. Change the value of f' for the newly created node to reflect its successors by back propagation.
  6. Wherever possible use the most promising routes and if a node is marked as SOLVED then mark the parent node as SOLVED.
  7. If starting node is SOLVED or value greater than FUTILITY, stop, else repeat from 2.