Critique: Understanding and Automating Algorithm Design
Kant
*
This article, focusing on a difficult human activity and exploring the
different facets of it in a way that would lend itself well to machine
automation, was a refreshing change from system descriptions. The
difficultly of describing how people design algorithms is apparent in
the way Kant presents some of the designers' attempts to solve the convex
hull problem. The steps the two main subjects took are interleaved to
facilitate making correlations between them. While this is more a more
compact way to draw correlations, it makes the whole process each designer
followed difficult to see. It seems describing what each did in whole and
then referring back to make correlations would have been much more clear,
even if longer to read.
When describing control issues of the human designers working on the
convex hull problem Kant states that "control is not a special source
of intelligence. It comes out of responding to the data and out of the
problems and opportunities arising during execution." I find this a very
curious statement. Elsewhere she mentions how a person goes about
algorithm design seems correlated to their experience and knowledge of
both algorithms and the domain. Many other systems treat control knowledge
as a primary source of knowledge. Even Kant's description of responding
to data and current situations sounds like forward chaining rules.
It was interesting to see recognition addressed directly in this context.
It touched upon many of the issues we've seen in systems that rely on
case-based reasoning and forward chaining. One example of this can be
found in a sample rule given. The rule contains domain specific
knowledge even though it is in a set of rules focused on general algorithm
operator selection. There usually seems to be an effort to draw a line
between domain specific knowledge, its use (intelligence) and that used
for the general problem solving. While the approaches we've seen take both
general (weak) and specific (strong) approaches, this issue is always hot.
It seems as though there is no one answer but rather a choice based upon
what needs to be accomplished and with what resources.
I found Kant's observation that designers typically were less
successful when they tried to mix parts of different approaches together
than when they reused knowledge they had learned during an earlier
design attempt very interesting. Many systems try to and succeed at reusing
parts of various designs, even flawed designs. Was this due to the
systematic approach taken by each system to solve each problem, the
representation of the domain, the base of cases, parts to build with, etc.?
Are these things the human designers lacked? The idea that there is
valuable knowledge to be learned from failure is not new but in the context
of design systems, it seems it hasn't been taken advantage of nearly
enough.
*
Elaine Kant,
Understanding and Automating Algorithm Design.
IEEE Transactions on Software Engineering,
Vol. SE-11, No. 11, November 1985, pp. 1361-1374.
|
|