Page 181 - DCAP310_INTRODUCTION_TO_ARTIFICIAL_INTELLIGENCE_AND_EXPERT_SYSTEMS
P. 181

Unit 9: Search and Control Strategies




          9.4.2 Best-first Search                                                               Notes

          Best-first search is a search algorithm which explores a graph by expanding the most promising
          node chosen according to a specified rule. It is described as estimating the promise of node n by
          a “heuristic evaluation function  which, in general, may depend on the description of n, the
          description of the goal, the information gathered by the search up to that point, and most
          important, on any extra knowledge about the problem domain.”
          Some authors have used “best-first search” to refer specifically to a search with a heuristic that
          attempts to predict how close the end of a path is to a solution, so that paths which are judged to
          be closer to a solution are extended first. This specific type of search is called greedy best-first
          search. Efficient selection of the current best candidate for extension is typically implemented
          using a priority queue. The A* search algorithm is an example of best-first search, as is B*.
          Best-first algorithms are often used for path finding in combinatorial search.


          Algorithms
             OPEN = [initial state]
             CLOSED = []
             while OPEN is not empty
             do
             1.  Remove the best node from OPEN, call it n, add it to CLOSED.
             2.  If n is the goal state, backtrace path to n (through recorded
                 parents) and return path.
             3.  Create n’s successors.
             4.  For each successor do:
                 (a)  If it is not in CLOSED: evaluate it, add it to OPEN, and
                      record its  parent.
                 (b)  Otherwise: change recorded parent if this new path is better
                      than previous  one.
             done

          9.4.3 A* Algorithm

          The A* algorithm combines features of uniform-cost search and pure heuristic search to efficiently
          compute optimal solutions. A* algorithm is a best-first search algorithm in which the cost
          associated with a node is f(n) = g(n) + h(n), where g(n) is the cost of the path from the initial state
          to node n and h(n) is the heuristic estimate or the cost or a path from node n to a goal. Thus, f(n)
          estimates the lowest total cost of any solution path going through node n. At each point, a node
          with lowest f value is chosen for expansion. Ties among nodes of equal f value should be broken
          in favor of nodes with lower h values. The algorithm terminates when a goal is chosen for
          expansion.

          A* algorithm guides an optimal path to a goal if the heuristic function h(n) is admissible,
          meaning it never overestimates actual cost.


                 Example: Since airline distance never overestimates actual highway distance, and
          Manhattan distance never overestimates actual moves in the gliding tile.
          For Puzzle, A* algorithm, using these evaluation functions, can find optimal solutions to these
          problems. In addition, A* makes the most efficient use of the given heuristic function in the
          following sense: among all shortest-path algorithms using the given heuristic function h(n).
          A* algorithm expands the fewest number of nodes. The main drawback of A* algorithm and
          indeed of any best-first search is its memory requirement. Since at least the entire open list must






                                           LOVELY PROFESSIONAL UNIVERSITY                                   175
   176   177   178   179   180   181   182   183   184   185   186