1.4 Tools for Problem Solving

Problem solving techniques are best illustrated with an example. In order not to confuse the general problem solving process with the specific methods of computer programming, this first illustration comes from the back yard.

Problem : Cut 10 cubic metres of fire wood.

```Solution : (first pass)
Preliminaries
1.  Compute the number and select the trees to fell.
2.  Obtain tools and safety gear.
Initialization
3.  Put on safety gear.
4.  Prepare tools for use.
Execution
5.  Cut down the selected trees.
6.  Remove branches.
7.  Buck the logs into short pieces.
8.  Split the wood.
9.  Pile the wood for drying.
Termination
10. Clean up the site.
11. Put away tools and safety gear.```

This first cut at writing out the steps required to solve the problem is produced with the help of past experience, assistance from others, how-to manuals, and a little common sense. In this form, the solution is little more than an ordered list of steps toward the achievement of the goal. The would-be logger may find that the execution of some of these steps is now obvious and that they can be undertaken without any further thought. In such cases, one could say that parts of the solution are part of a personal library of previously used and familiar techniques. Others of the steps in the solution may be less obvious (to some people) and require further elaboration as follows:

```2.1  From garage obtain tools:
gas, oil, chain saw, hex wrench, file, chain oil, maul
2.2  From cupboard obtain safety equipment:
boots, gloves, safety glasses

4.1  Sharpen chain saw:
select a tooth to sharpen
repeat
file the selected tooth
select next tooth
until all teeth are sharp
4.2  Tighten chain saw bar with hex wrench
4.3  If engine is two-cycle
then mix oil and gas in correct proportions
Fill fuel tank
Fill oil chamber with chain oil
4.4  Inspect spark plug
If spark plug is dirty
then clean or replace spark plug
4.5  Inspect maul
If maul is dull
then file a new edge in maul
5.   Start a count at zero trees cut
While count is less than number of trees selected
determine direction of fall
cut main notch facing fall direction
overcut higher back notch on opposite side
yell "timber"
duck

Some, (or all) of the other steps could be refined in much the same manner. The degree of such refinement depends on

• the complexity of the problem
• the availability of tools
• the number of techniques that need no further elaboration but can be taken as "givens." Here, some of the givens are described by the words: compute, select, obtain, put on, file, tighten mix, fill, inspect, clean, replace, file (second type), determine, cut, overcut, yell, duck, remove, buck, split, pile, clean up, put away, start, add. Some of the latter are built-in to the logger (anyone can yell; most can add one to a number.) Others depend on experience--the words describe sub-tasks that are part of a person's (possible) library of skills.

As given here, each of these words is taken as an "atom" or indivisible action not requiring further elaboration. Each represents or abstracts a complex series of more elementary and detailed steps. If the instruction "fill" were not obvious enough for the person to know what to do next, it would have to be detailed in a further refinement. On the other hand, many people could not be bothered doing all this for themselves. They would lack both the tools and the expertise, so would simply call a professional to perform the whole job, obscuring all the detail written out above, and replacing it by the single abstraction: "pay logger to cut enough fire wood." This latter view of the task is very far removed from the details of the task and its sub-tasks and could be termed a "high level abstraction." The one who arranges for a task to be done in this way has no interest in or knowledge of the details. Even the hired logger (an experienced professional) will pay little conscious attention to detailed planning, but will view the task as an organic whole (a single abstraction) and perform it as a comfortable routine that requires little thought.

At the other extreme of this abstraction vs. detail spectrum, one could try to program a robot to do the task. Some of the sub-tasks that seemed easy for a human being (inspect, yell, select) suddenly become very difficult. Not only would audio-visual sensors have to be built and programmed, but the robot would also have to be provided with a means to determine such things as:

• the natural and best falling directions
• when and which way to duck
• what to do when something goes horribly, terribly wrong

The task at hand requires judgement and the ability to abstract and perform instinctively (qualities of human intelligence.) For these reasons, the amount of detail involved in specifying the steps of the process for a robotic logging machine would increase by several orders of magnitude.

A good problem solution must balance off the elaboration of steps, the development of new techniques, and the employment of old familiar methods whose details are given no thought because they are part of a personal or hired experience library.

Contents