04.09.2013 Views

Algorithm Design

Algorithm Design

Algorithm Design

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

794<br />

Chapter 13 Randomized <strong>Algorithm</strong>s<br />

technique in the area of combinatorics; the book by A_lon and Spencer (2000)<br />

covers a wide range of its applications.<br />

Hashing is a topic that remains the subject of extensive study, in both<br />

theoretical and applied settings, and there are many variants of the basic<br />

method. The approach we focus on in Section 13.6 is due to Carter and Wegman<br />

(1979). The use of randomization for finding the closest pair of points in the<br />

plane was originally proposed by Rabin (1976), in an influential early paper<br />

that exposed the power of randomization in many algorithmic settings. The<br />

algorithm we describe in this chapter was developed by Golin et al. (1995).<br />

The technique used there to bound the number of dictionary operations, in<br />

which one sums the expected work over all stages of the random order, is<br />

sometimes referred to as backwards analysis; this was originally proposed<br />

by Chew (1985) for a related geometric problem, and a number of further<br />

applications of backwards analysis are described in the survey by Seidel (1993).<br />

The performance guarantee for the LRU caching algorithm is due to Sleator<br />

and Tarjan (1985), and the bound for the Randomized Marking algorithm is<br />

due to Fiat, Karp, Luby, McGeoch, Sleator, and Young (1991). More generally,<br />

the paper by Sleator and Tarian highlighted the notion of online algorithms,<br />

which must process input without knowledge of the future; caching is one<br />

of the fundamental applications that call for such algorithms. The book by<br />

Borodin and E1-Yaniv (1998) is devoted to the topic of online algorithms and<br />

includes many further results on caching in particular.<br />

There are many ways to formulate bounds of the type in Section 13.9,<br />

showing that a sum of 0-1-valued independent random variables is unlikely to<br />

deviate far from its mean. Results of this flavor are generally called Ctzeraoff<br />

bounds, or Chernoff-Hoeffding bounds, after the work of Chernoff (1952)<br />

and Hoeffding (1963). The books by A!on and Spencer (1992), Motwani and<br />

Raghavan (1995), and Mitzenmacher and Upfa! (2005) discuss these kinds of<br />

bounds in more detail and provide further applications.<br />

The results for packet routing in terms of congestion and dilation are<br />

due to Leighton, Maggs, and Rao (1994). Routing is another area in which<br />

randomization can be effective at reducing contention and hot spots; the book<br />

by Leighton (1992) covers many further applications of this principle.<br />

Notes on the Exercises Exercise 6 is based on a result of Benny Chor and<br />

Madhu Sudan; Exercise 9 is a version of the Secretary Problem, whose popu-<br />

larization is often credited to Martin Gardner.<br />

Epilogue: <strong>Algorithm</strong>s That Run<br />

Forever<br />

Every decade has its addictive puzzles; and if Rubik’s Cube stands out as the<br />

preeminent solita~e recreation of the early 1980s, then Tetris evokes a similar<br />

nostalgia for the late eighties and early nineties. Rubik’s Cube and Tetris have a<br />

number of things in common--they share a highly mathematical flavor, based<br />

on stylized geometric forms--but the differences between them are perhaps<br />

more interesting.<br />

Rubik’s Cube is a game whose complexity is based on an enormous search<br />

space; given a scrambled configuration of the Cube, you have to apply an<br />

intricate sequence of operations to reach the ultimate goal. By contrast, Tetris-in<br />

its pure form--has a much fuzzier definition of success; rather than aiming<br />

for a particular endpoint, you’re faced with a basically infinite stream of events<br />

to be dealt with, and you have to react continuously so as to keep your head<br />

above water.<br />

These novel features of Tetris parallel an analogous set of themes that has<br />

emerged in recent thinking about algorithms. Increasingly, we face settings in<br />

which the standard view of algorithms--in which one begins with an input,<br />

runs for a finite number of steps, and produces an output--does not ready<br />

apply. Rather, if we think about Internet touters that move packets while<br />

avoiding congestion, or decentralized file-sharing mechanisms that replicate<br />

and distribute content to meet user demand, or machine learning routines<br />

that form predictive models of concepts that change over time, then we are<br />

dealing with algorithms that effectively are designed to ran forever. Instead<br />

of producing an eventual output, they succeed if they can keep up with an<br />

environment that is in constant flux and continuously throws new tasks at<br />

them. For such applications, we have shifted from the world of Rubik’s Cube<br />

to the world of Tetris.

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

Saved successfully!

Ooh no, something went wrong!