We have now surveyed the major techniques of artificial intelligence. From our discussion of them, it should be clear that there are two important classes of AI techniques:
These two aspects interact heavily with each other. The choice of a knowledge representation framework determines the kind of problem-solving methods that can be applied. For example, if knowledge is represented as formulas in predicate logic, then resolution can be used to derive new inferences. If, on the other hand, knowledge is represented in semantic nets, then network search routines must be used. Or, if knowledge is represented as a set of weights in a neural network, then some form of network seareh (e.g., relaxation or forward propagation) must be exploited.
If there is one single message that this book has tried to convey, it is the crucial part that knowledge plays in AI programs. Although much of the book has been devoted to other topics, particularly to search techniques, it is important to keep in mind that the power of those techniques lies in their ability to use knowledge effectively to solve particular problems. Because of the importance of the role of knowledge in problem- solving programs, it is worth reviewing here what that role is.
Knowledge serves two important functions in Al programs. The first is to define what can be done to solve a problem and to specify what it means to have solved the problem. We can call knowledge that does this essential knowledge. The second is to provide advice on how best to go about solving a problem efficiently. We can call such knowledge heuristic knowledge.
The goal of this book has been to say enough about the use of knowledge in problem- solving programs to enable you to build one. Go do it. And have fun.