18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Combinatorial Problems<br />

Next: Sorting Up: A Catalog of <strong>Algorithm</strong>ic Previous: Discrete Fourier Transform<br />

Combinatorial Problems<br />

In this section, we consider several classic algorithmic problems of a purely combinatorial nature. <strong>The</strong>se<br />

include sorting and permutation generation, both of which were among the first nonnumerical problems<br />

arising on electronic computers. Sorting, searching, and selection can all be classified in terms of<br />

operations on a partial order of keys. Sorting can be viewed as identifying or imposing the total order on<br />

the keys, while searching and selection involve identifying specific keys based on their position in the<br />

total order.<br />

<strong>The</strong> rest of this section deals with other combinatorial objects, such as permutations, partitions, subsets,<br />

calendars, and schedules. We are particularly interested in algorithms that rank and unrank<br />

combinatorial objects, i.e. that map each distinct object to and from a unique integer. Once we have rank<br />

and unrank operations, many other tasks become simple, such as generating random objects (pick a<br />

random number and unrank) or listing all objects in order (iterate from 1 to n and unrank).<br />

We conclude with the problem of generating graphs. Graph algorithms are more fully presented in<br />

subsequent sections.<br />

Books on general combinatorial algorithms, in this restricted sense, include:<br />

● Nijenhuis and Wilf [NW78] - This book specializes in algorithms for constructing basic<br />

combinatorial objects such as permutations, subsets, and partitions. Such algorithms are often<br />

very short but hard to locate and usually are surprisingly subtle. Fortran programs for all of the<br />

algorithms are provided, as well as a discussion of the theory behind each of them. See Section<br />

for details.<br />

● Ruskey [Rus97] - On its completion, this manuscript in preparation will become the standard<br />

reference on generating combinatorial objects. A preview is available via the WWW at<br />

http://www-csc.uvic.ca/home/fruskey/cgi-bin/html/main.html .<br />

● Knuth [Knu73a, Knu73b] - <strong>The</strong> standard reference on searching and sorting, with significant<br />

material on combinatorial objects such as permutations.<br />

● Reingold, Nievergelt, Deo [RND77] - A comprehensive algorithms text with a particularly<br />

thorough treatment of combinatorial generation and search.<br />

● Stanton and White [SW86] - An undergraduate combinatorics text with algorithms for generating<br />

permutations, subsets, and set partitions. It contains relevant programs in Pascal.<br />

file:///E|/BOOK/BOOK4/NODE147.HTM (1 of 2) [19/1/2003 1:30:35]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!