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 add one to the count
Some, (or all) of the other steps could be refined in much the same manner. The degree of such refinement depends on
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 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.