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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bandwidth Minimization<br />

immediately eliminate half of our search space. <strong>The</strong> reverse copies are easily removed by placing the<br />

leftmost and rightmost elements of the permutation as the first two elements of the vector and then<br />

pruning if . Because we are dealing with an exponential search, removing a single factor of two<br />

can only be of limited usefulness. Such symmetry elimination might add one to the size of the problem<br />

we can do within one CPU minute.<br />

For more serious speedups, we need to prune partial solutions. Say we have found a permutation p that<br />

yields a longest edge of . By definition, . Suppose that among the elements in a partial layout<br />

, where k < n, there is an edge that is at least in length. Can this partial solution expand to<br />

provide a better bandwidth solution? Of course not! By pruning the search the instant we have created a<br />

long edge, typical instances of 15 to 20 vertices can be solved in one CPU minute, thus providing a<br />

substantial improvement.<br />

Efforts to further improve the search algorithm must strive for even greater pruning. By using a heuristic<br />

method to find the best solution we can before starting to search, we save time by realizing early length<br />

cutoffs. In fact, most of the effort in a combinatorial search is typically spent after the optimal solution is<br />

found, in the course of proving that no better answer exists. By observing that the optimal bandwidth<br />

solution must always be at least half the degree of any vertex (think about the incident edges), we have a<br />

lower bound on the size of the optimal solution. We can terminate search soon as we find a solution<br />

matching the lower bound.<br />

One limitation of this pruning strategy is that only partial solutions of length >b can be pruned, where b<br />

is the bandwidth of the best solution to date, since we must place b+1 vertices before we can generate<br />

any edges of length at least b. To achieve earlier cutoffs, we can alternately fill in the leftmost and<br />

rightmost slots of the configuration, instead of always proceeding from the left. This way, whenever<br />

there is an edge between a vertex on the left side and a vertex on the right side, this edge is likely long<br />

enough to achieve a cutoff. Pruning can easily occur while positioning the second vertex in the solution<br />

vector.<br />

Using these enhancements, top-notch programs are capable of solving typical problems on up to 30<br />

vertices consistently within one CPU minute, operating literally millions of times faster than unpruned,<br />

untuned efforts. <strong>The</strong> speed difference between the final and initial versions of the program dwarf the<br />

difference between a supercomputer and a microcomputer. Clever search algorithms can easily have a<br />

bigger impact on performance than expensive hardware.<br />

Next: War Story: Covering Chessboards Up: Combinatorial Search and Heuristic Previous: Search<br />

Pruning<br />

file:///E|/BOOK/BOOK2/NODE89.HTM (2 of 3) [19/1/2003 1:29:29]

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

Saved successfully!

Ooh no, something went wrong!