Abstract
We describe computer algorithms that solve problems by systematic trial-and-error explorations of alternatives. Problem-solving is modeled as search in a problem-space graph, where nodes represents states of the problem, and edges represent operators that change the state. The problems we consider fall into three classes: single-agent path-finding problems, such as Rubik's Cube, sliding-tile puzzles, and the traveling salesman problem; two-player games such as chess and checkers; and constraint-satisfaction problems such as the Eight Queens problem, graph coloring, and boolean satisfiability. For single-agent path-finding problems, we describe brute-force search algorithms including breadth-first search, uniform-cost search, and depth-first search. We also consider heuristic search algorithms, such as A*, that rely on a heuristic function that estimates the cost of an optimal solution to a problem. If this function never overestimates the actual cost, the A* algorithm is guaranteed to return an optimal solution, if one exists. For two-player games we present the minimax search algorithm with static evaluation. For constraint-satisfaction problems, we explain a simple backtracking algorithm. The main difficulty of all these problems is that the number of different possible states that must be examined grows exponentially with problem size, a problem known as combinatorial explosion.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have