Preface and Notation
This document contains the text of a second course in algorithms and
data structures.
As html is not suited for mathematical formulas, some
additional notation is used (as used in the typographical package
Latex). a_i denotes a with subscript i. a^i denotes a to the power i.
<= and >= are used as in most computer languages. Curly brackets,
"{" and "}", are use to group things. sum_{i = 0}^j denotes the sum for
i running from 0 to j. The same may also be written sum_{0 <= i <= j}.
~= stands for "approximately equal" and ~ for "proportional to". Greek
letters are written out. For logical expressions we either use the
notation from C or the operators are written out in text. So, "a && !b"
is the same as "a and not b". sqrt stands for the square root function
and log without specifying the base number for the logarithm to basis
2. There are a few more notations, but they should be understood
easily. New notions are printed bold there where they are defined.
Inside the chapters particularly important ideas and short key notes
are highlighted without introductory text. There are many pictures.
These are intended to be self-explanatory. Typically they are placed
just after the text fragment to which they belong, generally there is
no direct reference to them in the text.
There are very few references to the literature. Clearly most of the
presented material is not new. A large part is even common knowledge.
More directly this text is based on material found in the following
books:
-
Data Structures and Algorithm Analysis,
Weiss, Addison Wesley, 1999.
-
Fundamentals of Algorithmics,
Brassard and Bratley, Prentice Hall, 1996.
-
Grundlegende Algorithmen,
Heun, Vieweg, 2003.
-
Combinatorial Optimization,
Papadimitriou and Steiglitz, Prentice Hall, 1982.
Several students have contributed by pointing out
errors and spots which required better explanation.
Notice: the following text may be overcomplete. At the
examination it is expected that the students only know all that has
been presented during the lectures.
Table of Contents
-
Chapter 1: Introduction
-
Covered Material
-
Asymptotical Notation
-
Computer and Cost Model
-
Limitations of the Cost Model
-
Solving Recurrence Relations
-
Exercises
-
Chapter 2: Numerical Algorithms
-
Euclidian Algorithm
-
Integer Operations
-
Matrix Operations
-
Fast Fourrier Transform
-
Exercises
-
Chapter 3: Union-Find
-
Definition
-
Array-Based Implementation
-
Tree-Based Implementation
-
Analysis
-
Exercises
-
Chapter 4: Dictionaries
-
a-b Trees
-
Splay Trees
-
Skip Lists
-
Chapter 5: Hashing
-
Basic Approaches
-
Cuckoo Hashing
-
Best of Two Chaining
-
Exercises
-
Chapter 6: Priority Queues
-
Heaps
-
Binomial Heaps
-
Skew Heaps
-
Leftist Heaps
-
Fibonacci Heaps
-
Pairing Heaps
-
Exercises
-
Chapter 7: Text
-
Alphabets and Strings
-
Finding Substrings
-
Tries
-
Finding Substrings Repeatedly
-
Data Compression
-
Exercises
-
Chapter 8: Divide and Conquer
-
Old Problems
-
General Pattern
-
Sorting
-
Selection
-
Exercises
-
Chapter 9: Greedy Algorithms
-
Minimum Spanning Forests
-
Matching
-
General Pattern
-
Directed Semi-Matching
-
Minimum Spanning Paths Problem
-
Matroids
-
Alternative Solutions
-
Customer Scheduling
-
Making Change
-
Exercises
-
Chapter 10:
Approximation and Linear Programming
-
Chapter 11: Dynamic Programming
-
Binomial Coefficients
-
Top-Down vs. Bottom-Up
-
Making Change
-
Principal of Optimality
-
Knapsack
-
Chained Matrix Multiplication
-
Drawing Trees Compactly
-
Minimum Hamiltonian Cycle
-
Exercises
-
Chapter 12: Backtracking
-
Queens Problem
-
General Pattern
-
Knapsack
-
Optimizing Backtracking
-
Exercises
-
Chapter 13: Branch-and-Bound
-
General Pattern
-
Knapsack
-
Improving Branch-and-Bound
-
Steiner Minimum Tree Problem
-
Traveling Salesman Problem
-
Assignment Problem
-
Making Change Revisited
-
Exercises
-
Chapter 14: Graph Algorithms
-
Minimum Spanning Trees
-
Shortest Paths
-
Euler Tours
-
Node Coloring Bipartite Graphs
-
Unweighted Bipartite Matching
-
Maximum Flow
-
Weighted Bipartite Matching
-
Exercises
-
Chapter 15: Lower Bounds
-
Information-Theoretic Arguments
-
Adversary Arguments
-
Exercises
-
Chapter 16: NP-Completeness
-
P and NP
-
Polynomial-Time Reductions
-
Clique is NP-Complete
-
Exercises
This page was created by Jop Sibeyn.
Last update Sunday, 05 December 04 - 12:45.
For any comments:
send an email.