CS510: ANALYSIS of
ALGORITHMS
Kalamazoo
College
Spring 1998
Modeling the Problem
To find out what is known about your current problem you need to have
the vocabulary to formulate your problem. The following list of computing
properties of abstract structures begins to enhance your algorithmic
vocabularly. To become fluent in this vocabulary, browse throught the
catalog (in Chapter 8) and study the input and output
pictures for each problem. This should enable you to know where to look
later when a problem arises in your application.
-
Permutations -
arrangements or orderings of items.
Example:
- Traveling Sales Problem - least-cost order to visit n cities.
- Bandwith Problems - order the vertices of a graph on a line so as to
minimize the length of the longest edge.
- Graph Isomorphism - order the vertices of one graph so that it is
identical to another.
-
Subsets -
selections from a set of items
Example:
- Vertex Cover of a Graph - minimum number of vertices needed to touch
all edges of a graph.
- Knapsack Problem - determine maximum number of items that can be taken
on a trip given some constraints.
- Set Packing - smallest number of subsets that together cover each item
exactly once, useful for finding independant sets and scheduling airline
flight crews to airplanes.
- Set Partitions - divide the elements 1..n into nonempty subsets,
useful for vertex coloring and connected components.
- Boolean Logic Minimization - given a boolean function mapping the
2k input vectors to the values 0 or 1, find a simplest circuit
that exactly implements this function.
-
Trees -
hierarchical relationships between items
Example:
- Searching - binary trees, red-black trees, B-trees, ...
- Minimum Spanning tree problems - cheapest subset of edges that keeps
the graph in one connected component. Useful for telephone site wiring,
and network design.
-
Graphs -
relationships between arbitrary pairs of objects
Example:
- Connected Components - finding pieces of graphs (or classes of items).
- Shortest Path - finding the shortest paths in a graph. Useful for
routing problems, image segmentation, speech recognition, finding the
center of a graph (facility location).
- Matching - find the largest-size of edges so that the edges don't
intersect. Useful in task assignment. Stable matchings have applications
in medical resident assigments to hospitals.
- Eulerian Cycle - find the shortest tour of a graph visiting each edge
at least once. Useful for routing garbage trucks, snow plows, postal
workers.
- Edge and Vertex Connectivity - smallest subset of vertices (or edges)
whose deletion will disconnect a graph. Useful in determining network
reliability (i.e.: telephone networks), and network flow.
- Drawing graphs "Nicely" - useful criteria for nicely are minimum
number of crossing edges (circuit board design), smallest area (electric
wiring), edge length (network connections), aspect ratio (display).
-
Points -
locations in some geometric space
Example:
- Convex Hull - determining the outer covering of a set of points. Useful
for object recognition and image processing.
- Voronoi Diagrams - separate space into regions around each point so
that all the points in the region around pi are closer to
pi than they are to any other point in S. Useful for
facility locationing, finding largest empty circle,
path planning and quality triangulations.
- Nearest Neighbor Search - which point is closest to a give point.
Useful in emergency vehicle dispatching, object classification, image
compression.
- Range Search - which points from a set lie within a given space.
Useful in database and geographic information system applications.
- Intersection Detection - determining if a pair of lines intersect.
Useful in Virtual Reality and in VLSI layout designs.
-
Polygons -
regions in some geometric space
Example:
- Polygon Partitioning - determining if a shape can be partitioned into
a small number of simple (convex) pieces. Useful in image recognition and
triangulation.
- Simplifying Polygons - find a shape that is close to a given polygon.
Useful in eliminating noise and fuzziness of images andd in data
compression.
- Motion Planning - determining the shortest path in the room without
running into obstacles. Useful for robotics, rearragements, molecular
docking, computer animations.
-
Strings -
sequences of charaters or patterns
Example:
- String Matching - find all instances of a given pattern in the text.
Useful for text processing, spell checkers and database queries.
- Cryptography - encode or decode text. Useful for security on computer
networks and spies.
- Longest Common Substring - find the longest substring so that each
string in a list of strings contains the substring. Useful for DNA
sequencing, protein evaluation, edit distance.
- Shortest Common Superstring - find the shortest string that contains
each element of a list as a substring. Useful for sparse matrix
compression, DNA sequencing, can be reduced to a traveling sales problem.
Kelly Schultz, Kalamazoo College