Specifying Search Problems
In our agent terms, a problem to be solved is a particular task where the agent starts with the environment in a given state and acts upon the environment until the transformed state has some pre-set quality. The set of states which are achievable via some sequence of actions the agent job is called the search space. The series of actions that the agent really performs is its search path, and the final state is a solution if it has the required property. There may be many solutions to a specific problem. If you can think of the job you want your agent to perform in these terms, then you ought to write a problem solving agent which uses search.
It is essential to identify the scope of your task in the terms of the problems which will need to be solved. For instance, there are some tasks that are single problems solved by searching, for example, search a route on a map. Otherwise, there are job such as winning at chess, which have to be broken down into sub-problems (finding for the best move at every stage). Other job can be achieved without searching whatsoever for example, multiplying 2 large numbers together - you wouldn't dream of finding through the number line until you came across the answer!
There are 3 initial considerations in problem solving (as described in and Norvig and Russell):
Initially, the agent ought to be told exactly what the initial state is before it began its search, so that it may keep track of the state as it searches.
An operator is a function taking one state to another using an action undertaken by the agent. In chess, for example, an operator takes one arrangement of pieces on the board to another arrangement via the action of the agent moving a piece.
It is important when designing a problem solving agent to know when the problem has been solved, for example, to have a well defined goal test. Imagine the problem we had set our agent was to find a name for a newborn, with some properties. There are lists of "accepted" names for babies, in this case and any solution might appear in that list, so goal-checking amounts to minimally testing whether the name appears in the list. On the other hand, In chess, the goal is to reach a checkmate. Wherever there are only a fixed number of ways in which the pieces on a board may represent a checkmate, the number of these is large, so checking a position against them is a terrible idea. Instead, a more abstract notion of checkmate is used, whereby our agent checks that the opponent's king cannot move without being captured.