I put this on my website a long time ago, maybe around 1997 as an HTML page. This is it moved to my blog.
The concept of State Space Search is widely used in Artificial Intelligence. The idea is that a problem can be solved by examining the steps which might be taken towards its solution. Each action takes the solver to a new state.
The classic example is of the Farmer who needs to transport a Chicken, a Fox and some Grain across a river one at a time. The Fox will eat the Chicken if left unsupervised. Likewise the Chicken will eat the Grain.
In this case, the State is described by the positions of the Farmer, Chicken, Fox and Grain. The solver can move between States by making a legal move (which does not result in something being eaten). Non-legal moves are not worth examining.
The solution to such a problem is a list of linked States leading from the Initial State to the Goal State. This may be found either by starting at the Initial State and working towards the Goal state or vice-versa.
The required State can be worked towards by either:
- Depth-First Search: Exploring each strand of a State Space in turn.
- Breadth-First Search: Exploring every link encountered, examining the state space a level at a time.
These techniques generally use lists of:
- Closed States: States whose links have all been been explored.
- Open States: States which have been encountered, but have not been fully explored.
Ideally, these lists will also be used to prevent endless loops.