How to Design Programs: An Introduction to Computing and Programming
[Go to
first
,
previous
,
next
page;
contents
;
index
]
Section 27
Variations on a Theme
As we have seen in the previous two sections, the design of an algorithm usually starts with an informal
description of a mechanism. The kernel of this description is about how to create a problem that is more easily
solvable than the given one and whose solution contributes to the solution of the given problem. Coming up with
such ideas requires studying many different examples. This section presents several illustrative examples of the
design recipe for generative recursion. Some are directly drawn from mathematics, which is the source of many
ideas for general problem-solving processes; others come from computational contexts. The important point is to
understand the generative ideas behind the algorithms so that they can be applied in other contexts.
The first example is a graphical illustration of our principle: the Sierpinski triangle. The second one concerns
``parsing,'' that is, the process of dissecting sequences of symbols. The third one explains the divide-and-conquer
principle with a simple mathematical example: finding the root of a function. Many mathematical processes
exploit this idea, and it is important to understand the idea for applied mathematics. In the fourth section, we
discuss yet another way of finding a root, this time based on Newton's method. The last section is an extended
exercise; it introduces Gaussian elimination, the first step in solving a system of equations.
27.1
Fractals
Fractals play an important role in computational geometry. Flake (
The Computational Beauty of Nature
, The
MIT Press, 1998) says that ``geometry can be extended to account for objects with a fractional dimension. Such
objects, known as
fractals
, come very close to capturing the richness and variety of forms found in nature.
Fractals possess structural self-similarity on multiple
...
scales, meaning that a piece of a fractal will often look
like the whole.''
Figure 71:
The Sierpinski triangle
Figure
71
displays an example of a fractal, widely known as the Sierpinski triangle. The basic shape is an
(equilateral) triangle, as shown in the left-most picture. In the right-most example we see that the triangle is
repated many times and in many sizes inside of the outermost triangle. The picture in the middle is a snapshot
from the middle of the drawing process.
file:///C|/Documents%20and%20Settings/Linda%20Graue...How%20to%20Design%20Programs/curriculum-Z-H-34.html (1 of 22) [2/5/2008 4:53:05 PM]

This
** preview**
has intentionally

**sections.**

*blurred***to view the full version.**

*Sign up*