How do you model the future? Stochastic approach: The future can be modeled as a distribution over possible events. Very successful in many contexts. Alternative: Think of the future as an adversary, do well against all possible future outcomes.
Toy Example: Ski Optimization I decide to take up skiing. Should I rent or buy skis? Uncertainty: Will I like skiing? Will there be snow? Will I break my leg? Will the government outlaw skiing? I want to have a good strategy against all possible outcomes In this case an outcome is the number of times I wind up going skiing.
Ski Rental A pair of skis (and boots) costs $300. A ski rental costs $50. What should you do? How do you evaluate if you did the right thing? You give a strategy (algorithm) You compare against how well someone who knows that future could do. You take the worst case and call that the competitive ratio
Ski Rental Let A be my algorithm. Let OPT be the behavior of someone who knows the future Consider any realization of the future I (number of times I actually ski) Competetive ratio We want a strategy with a small competitive ratio
Optimal Strategy Times skiing lots StrategyRRRRRBBBB Cost
Algorithm 1: Buy Times skiing lots Cost of A Opt Cost Ratio Competitive ratio = 6
Algorithm 2: Rent Times skiing lots Cost of A lots Opt Cost Ratio lots Competitive ratio = lots
Algorithm 3: Rent 6 times and then buy Times skiing lots Cost of A Opt Cost Ratio Competitive ratio = 2
Lessons Without knowing the future, you can guarantee that no matter what happens, you will never spend more than twice what anyone could have spent. A good algorithm balances different bad outcomes If you allow randomization, you can decrease the competetive ratio to e/(e-1), around 1.58.