Searching And-Or graphs

·         The DFS and BFS strategies for OR trees and graphs can be adapted for And-Or trees

·         The main difference lies in the way termination conditions are determined, since all goals following an And node must be realized, whereas a single goal node following an Or node will do

·         A more general optimal strategy is AO* (O for ordered) algorithm

·         As in the case of the A* algorithm, we use the open list to hold nodes that have been generated but not expanded and the closed list to hold nodes that have been expanded

·         The algorithm is a variation of the original given by Nilsson

·         It requires that nodes traversed in the tree be labeled as solved or unsolved in the solution process to account for And node solutions which require solutions to all

successors nodes.

·         A solution is found when the start node is labeled as solved

·         The AO* algorithm

 

Ø  Step 1: Place the start node s on open

Ø  Step 2: Using the search tree constructed thus far, compute the most promising solution tree T0

Ø  Step 3:Select a node n that is both on open and a part of T0. Remove n from open and place it on closed

Ø  Step 4: If n ia terminal goal node, label n as solved. If the solution of n results in any of n’s ancestors being solved, label all the ancestors as solved. If the start node s is solved, exit with success where T0 is the solution tree. Remove from open all nodes with a solved ancestor

Ø  Step 5: If n is not a solvable node, label n as unsolvable. If the start node is labeled as unsolvable, exit with failure. If any of n’s ancestors become unsolvable because n is, label them unsolvable as well. Remove from open all nodes with unsolvable ancestors

 

Ø  Step 6:Otherwise, expand node n generating all of its successors. For each such successor node that contains more than one subproblem, generate their successors to give individual subproblems. Attach to each newly generated node a back pointer to its predecessor. Compute the cost estimate h* for each newly generated node and place all such nodes thst do not yet have descendents on open. Next recomputed the values oh h* at n and each ancestors of n

Ø  Step 7: Return to step 2

 

 It can be shown that AO* will always find a minimum-cost solution tree if one exists, provided only that h*(n) ≤ h(n), and all arc costs are positive. Like A*, the efficiency

depends on how closely h* approximates h