This
** preview**
has intentionally

**sections.**

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

*Sign up**This preview shows
pages
1–3. Sign up
to
view the full content.*

Introduction
For the bulk of the term, we have discussed advanced data structures and
some of the applications to which they have been suited for representing data.
Each of these data structures was designed to provide efficient access to the
data stored in the structure.
Some of these data structures were subtle variants
of a more general type of structure, with the subtle variation occurring to
enhance access to the data for certain situations arising in the data.
For
example, the prefix B
+
-tree enhanced access through the use of prefixes that
exist in the key values maintained in the structure.
Don’t lose sight of the fact
that a data structure’s sole purpose is to maintain and provide access to data
which is used to support the algorithm which uses that data.
Data structures,
no matter how complex, often represent a trade-off in terms of time and space,
as there is typically no optimal data structure which covers all possible problem
instances.
Recall that this is the very reason that so many variants of many
data structures exist.
We now change our focus from the underlying data structures supporting the
algorithm to the algorithms themselves.
In some respects, a data structure is
chosen because of how naturally it represents the data which defines a
problem.
For example, trees naturally fit with data that represent hierarchical
relationships.
Algorithms too exhibit this characteristic, for example, divide and
conquer algorithms arise from the natural problem solving strategy of dividing a
complex problem into smaller, more manageable pieces.
What we are about to
examine are algorithms which carry this natural technique much further.
Most models of computation represent the computer as a general-purpose,
deterministic, random access machine (a vonNeumann machine).
Algorithms
which can be executed by vonNeumann type machines are called
sequential
algorithms
(sometimes also called
serial algorithms
).
We are about to examine
models of computation that present a much different machine, one in which
several instructions can be executed simultaneously.
Generally, referred to as,
parallel machines
or
parallel computers
, these are computers which have more
than one processor operating in parallel.
Over the years, there have been many
different models of parallel computation that have been developed.
As with
sequential machines, parallel machines are best suited to certain classes of
problems and to take advantage of a parallel architecture, algorithms must be
developed specifically for the parallel architecture.
We will see several parallel
models and discuss their relative merits and weaknesses.
Parallel Algorithms -
1
Introduction to Parallel Algorithms (15)

This
** preview**
has intentionally

In recent years, as microprocessors have become cheaper and the technology
for interconnecting them has improved, it has become both possible and
practical to build general-purpose parallel computers containing a very large
number of processors.
Parallel algorithms are natural for many applications.
In

This is the end of the preview. Sign up
to
access the rest of the document.

Ask a homework question
- tutors are online