Different people define algorithms differently. Aho et al say "...an algorithm, which is a finite sequence of instructions, each of which has a clear meaning and can be performed with a finite amount of effort in a finite length of time." (Data Structures and Algorithms, Addison-Wesley, 1983, page 2) Markov talks about an algorithm L written in an alphabet A (A consisting of a finite number of letters). L is composed of a finite number of rules of the form P->Q where P and Q are words, i.e., finite strings of letters from A. (Theory of Algorithms, Academy of Sciences USSR, 1954)
Various people have argued that expert systems and neural networks are non-algorithmic. (Rule-Based Expert Systems, Buchanan and Shortliffe, Addison-Wesley, 1985, page 3) I have argued that A.s.a. H. is non-algorithmic. (Trans. Kansas Acad. Sci., vol. 108, No. 3/4, 2005, page 169) Yet Asa and expert systems and neural networks are all written in conventional programming languages and run on standard computers so in what sense can they be non-algorithmic? They are certainly built out of algorithms themselves.
An algorithm accepts a set of inputs and maps them to a set of outputs, "answers" or "solutions." If this map (or set of maps) is built-in upfront at run time then your program is called "algorithmic." If your program observes the world and acquires the map(s) from the world then your program is called "non-algorithmic." Of course a "non-algorithmic" program must, itself, be able to map observations of the world into the algorithms/functions it learns/acquires. It maps ("metamaps") observations into maps. Furthermore, such non-algorithmic programs might completely change themselves, perhaps even change the hardware their built on top of. (For example, when Asa H is copied from one computer to another, changes the set of robots it is operating, or uses new tools that it has been provided with.)
No comments:
Post a Comment