© 1986 by British Computer Society
| ||||||||||||||||||||||||||||||||||||||||||||||||||
A Data Structure and Algorithm for a Self-Augmenting Heuristic Program
Department of Computation, U.M.I.S.T., P.O. Box 88, Manchester, M60 1QD, UK
This describes a design for a program which can invent concepts, heuristics for manipulating them, and data structures for storing them. The key to the approach outlined here is that concepts, heuristics and structures are all regarded as legitimate data, all stored in the same format. This approach is analogous to the design of functional languages in which functions are first class objects. A concept may be defined by enumerating its examples, or by the functions which create its examples, or by a predicate. The design includes a language for writing heuristics, simpler than Lisp, which should lend itself to automatic program modification. In this language all data are typed, and the term type is synonymous with concept.
The algorithm keeps lists of active tasks, and attempts one task in each cycle. Tasks are stimulated by demons, which are rather like heuristics. The outcome of each task is stored in a task summary. This allows the program to analyse its own performance. Tasks are attempted in order of priority, rather than to fulfil goals. This lets the algorithm shift attention in pursuit of a wandering bottleneck. The design allows for unrestricted relations among the program's data. These may suffice for a new technique of learning from a single example. The actual performance of such a program depends on its particular concepts, demons and heuristics, which are not considered here.
Received September 1984.
* Address for correspondence: Department of Computing, King's college London, Strand, London WC2R 2LS.
Department of Computation, U.M.I.S.T., P.O. Box 88, Manchester, M60 1QD