Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 16
Graph Contraction and Connectivity
In earlier chapters, we have mostly covered techniques for solving problems on graphs that
were developed in the context of sequential algorithms. Some of them are easy to parallelize
while others are not. For
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 18
Dynamic Programming
An interesting question is, Where did the name, dynamic programming, come
from? The 1950s were not good years for mathematical research. We had a very
interesting gentleman in Washington named Wilson. He was Secretary of Def
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 9
Maximum Contiguous Subsequences
In this chapter, we apply the algorithmdesign techniques considered thus far to a wellknown
problem. In order to exercise our vocabulary for algorithm design, we carefully identify the
techniques being used, som
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 14
Graph Search
The term graph search or graph traversal refers to a class of algorithms that systematically
explore the vertices and edges of a graph. Graphsearch algorithms can be used to solve many
interesting problems on graphs, or compute ma
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 1
Introduction
parallel
The topic of this book might best be described as problem solving with computers. Parallel
computers have been used since early 1960s. In their early days, parallel computers were
used extensively for scientific computation
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 7
AlgorithmDesign Technique: Contraction
Contraction, an inductive technique for designing parallel algorithms, is probably one of the
most important algorithmdesign techniques. Like divideandconquer algorithms, contraction
algorithms involve
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 5
Algorithm Analysis
The term algorithm analysis refers to mathematical analysis of algorithms for the purposes of
determining their consumption of resources such as the amount of total work they perform, the
energy they consume, the time to execu
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 8
Divide and Conquer
Divide and conquer is one of the most important algorithmdesign techniques that can be used
to solve a variety of computational problems. The structure of a divideandconquer algorithm
for a problem P has the following form.
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 12
Sets and Tables
A set is a gathering together into a whole of definite, distinct objects of our perception or of our thoughtwhich are called elements of the set.
Georg Cantor,
from Contributions to the founding of the theory of transfinite numb
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 13
Graphs and their Representation
13.1
Graphs and Relations
Graphs (sometimes referred to as networks) are one of the most important abstractions in computer science. What makes graphs important is that they represent relationships. As you will (
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 17
Minimum Spanning Trees
In this chapter we cover a important graph problem, Minimum Spanning Trees (MST). The
MST of an undirected, weighted graph is a tree that spans the graph while minimizing the
total weight of the edges in the tree. We firs
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 2
Mathematical Preliminaries
We present an overview of basic mathematical definitions used throughout the book. We assume
familiarity with collegelevel mathematics. This chapter is thus far from comprehensive. We
refer the interested reader to st
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 20
Priority Queues
We have already discussed and used priority queues in a few places in this class. We used them
as an example of an abstract data type. We also used them in the priorityfirst graph search to
implement Dijkstras algorithm, and Pr
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 4
Example: Genome Sequencing
Sequencing of a complete human Genome (genetic material encoded in the DNA) represents
one of the greatest scientific achievements of the century. The efforts started a few decades ago
and lead to the several major lan
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 19
Hashing
hash: transitive verb1
1. (a) to chop (as meat and potatoes) into small pieces
(b) confuse, muddle
2. .
This is the definition of hash from which the computer term was derived. The idea of
hashing as originally conceived was to take val
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 11
Binary Search Trees
Searching is one of the most important operations in computer science. Of the many search data
structures that have been designed and are used in practice, search trees, more specifically balanced binary search trees, occupy
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 15
Shortest Paths
Given a graph where edges are labeled with weights (or distances) and a source vertex, what is
the shortest path between the source and some other vertex? Problems requiring us to answer
such queries are broadly known as shortest
Parallel and Sequential Data Structures and Algorithms
SCS 15210

Spring 2013
Chapter 10
Randomized Algorithms
randomized
The theme of this chapter is madendrizo algorithms. These are algorithms that make use of
randomness in their computation. You might know of quicksort, which is efficient on average
when it uses a random pivot,