Exhaustive Search, Combinatorial Optimization and Enumeration: Exploring the Potential of Raw Computing Power

For half a century since computers came into existence, the goal of finding elegant and efficient algorithms to solve “simple” (welldefined and well-structured) problems has dominated algorithm design. Over the same time period, both processing and storage capacity of computers have increased by roughly a factor of a million. The next few decades may well give us a similar rate of growth in raw computing power, due to various factors such as continuing miniaturization, parallel and distributed computing. If a quantitative change of orders of magnitude leads to qualitative advances, where will the latter take place? Only empirical research can answer this question. Asymptotic complexity theory has emerged as a surprisingly effective tool for predicting run times of polynomial-time algorithms. For NPhard problems, on the other hand, it yields overly pessimistic bounds. It asserts the non-existence of algorithms that are efficient across an entire problem class, but ignores the fact that many instances, perhaps including those of interest, can be solved efficiently. For such cases we need a complexity measure that applies to problem instances, rather than to over-sized problem classes. Combinatorial optimization and enumeration problems are modeled by state spaces that usually lack any regular structure. Exhaustive search is often the only way to handle such “combinatorial chaos”. Several general purpose search algorithms are used under different circumstances. We describe reverse search and illustrate this technique on a case study of enumerative optimization: enumerating the k shortest Euclidean spanning trees. 1 Catching Up with Technology Computer science is technology-driven: it has been so for the past 50 years, and will remain this way for the foreseeable future, for at least a decade. That is about as far as specialists can extrapolate current semiconductor technology and foresee that advances based on refined processes, without any need for fundamental innovations, will keep improving the performance of computing devices. Moreover, performance can be expected to advance at the rate of “Moore’s law”, V. Hlaváč, K. G. Jeffery, and J. Wiedermann (Eds.): SOFSEM 2000, LNCS 1963,  2000.  An up-to-date summary of possibilities and limitations of technology can be found in . What does it mean for a discipline to be technology-driven? What are the implications? Consider the converse: disciplines that are demand-driven rather than technology-driven. In the 60s the US stated a public goal “to put a man on the moon by the end of the decade”. This well-defined goal called for a technology that did not as yet exist. With a great national effort and some luck, the technology was developed just in time to meet the announced goal—a memorable technical achievement. More often than not, when an ambitious goal calls for the invention of new technology, the goal remains wishful thinking. In such situations, it is prudent to announce fuzzy goals, where one can claim progress without being able to measure it. The computing field has on occasion been tempted to use this tactic, for example in predicting “machine intelligence”. Such an elastic concept can be re-defined periodically to mirror the current state-of-the-art. Apart from some exceptions, the dominant influence on computing has been a technology push, rather than a demand pull. In other words, computer architects, systems and application designers have always known that clock rates, flop/s, data rates and memory sizes will go up at a predictable, breath-taking speed. The question was less “what do we need to meet the demands of a new application?” as “what shall we do with the newly emerging resources?”. Faced with an embarassment of riches, it is understandable that the lion’s share of development effort, both in industry and in academia, has gone into developing bigger, more powerful, hopefully a little better versions of the same applications that have been around for decades. What we experience as revolutionary in the break-neck speed with which computing is affecting society is not technical novelty, but rather, an unprecedented penetration of computing technology in all aspects of the technical infrastructure on which our civilization has come to rely. In recent years, computing technology’s outstanding achievement has been the breadth of its impact rather than the originality and depth of its scientific/technical innovations. The explosive spread of the Internet in recent years, based on technology developed a quarter-century ago, is a prominent example. This observation, that computing technology in recent years has been “spreading inside known territory” rather than “growing into new areas”, does not imply that computing has run out of important open problems or new ideas. On the contrary, tantalizing open questions and new ideas call for investigation, as the following two examples illustrate: 1. A challenging, fundamental open problem in our “information age”, is a scientific definition of information. Shannon’s pioneering information theory is of unquestioned importance, but it does not capture the notion of “information” relevant in daily life (“what is your telephone number?”) or in business transactions (“what is today’s exchange rate”). The fact that we process information at all times without having a scientific definition of what we are processing is akin to the state of physics before Newton: humanity