Content deleted Content added
No edit summary |
No edit summary Tags: Mobile edit Mobile app edit Android app edit |
||
(8 intermediate revisions by 7 users not shown) | |||
Line 1:
{{Short description|Method for analyzing online algorithms}}
'''Competitive analysis''' is a method invented for analyzing [[online algorithm]]s, in which the performance of an online algorithm (which must satisfy an unpredictable sequence of requests, completing each request without being able to see the future) is compared to the performance of an optimal ''offline algorithm'' that can view the sequence of requests in advance. An algorithm is ''competitive'' if its ''competitive ratio''—the ratio between its performance and the offline algorithm's performance—is bounded. Unlike traditional [[Best, worst and average case|worst-case analysis]], where the performance of an algorithm is measured only for "hard" inputs, competitive analysis requires that an algorithm perform well both on hard and easy inputs, where "hard" and "easy" are defined by the performance of the optimal offline algorithm.
For many algorithms, performance is dependent not only on the size of the inputs, but also on their values.
In competitive analysis, one imagines an "adversary"
For example, the [[quicksort]] algorithm chooses one element, called the "pivot", that is, on average, not too far from the center value of the data being sorted. Quicksort then separates the data into two piles, one of which contains all elements with value less than the value of the pivot, and the other containing the rest of the elements. If quicksort chooses the pivot in some deterministic fashion (for instance, always choosing the first element in the list), then it is easy for an adversary to arrange the data beforehand so that quicksort will perform in worst-case time. If, however, quicksort chooses some random element to be the pivot, then an adversary without knowledge of what random numbers are coming up cannot arrange the data to guarantee worst-case execution time for quicksort.
The classic on-line problem first analysed with competitive analysis
In the case of online requests from a server, competitive algorithms are used to overcome uncertainties about the future. That is, the algorithm does not "know" the future, while the imaginary adversary (the "competitor") "knows". Similarly, competitive algorithms were developed for distributed systems, where the algorithm has to react to a request arriving at one ___location, without "knowing" what has just happened in a remote ___location.
==See also==
Line 18 ⟶ 19:
* [[Online algorithm]]
==
*{{citation|title=Amortized efficiency of list update and paging rules|first1=D.|last1=Sleator|author1-link=Daniel Sleator|first2=R.|last2=Tarjan|author2-link=Robert Tarjan|journal=Communications of the ACM|year=1985|doi=10.1145/2786.2793|volume=28|issue=2|pages=202–208|doi-access=free}}.
*{{citation|contribution=Competitive analysis of distributed algorithms|first=James|last=Aspnes|year=1998|doi=10.1007/BFb0029567|title=Online Algorithms: The State of the Art|series=Lecture Notes in Computer Science|volume=1442|pages=118–146|isbn=978-3-540-64917-5 |editor1-first=A.|editor1-last=Fiat|editor1-link=Amos Fiat|editor2-first=G. J.|editor2-last=Woeginger|editor2-link= Gerhard J. Woeginger}}.
*{{citation|last1=Borodin|first1=A.|author1-link=Allan Borodin|last2=El-Yaniv|first2=R.|year=1998|title=Online Computation and Competitive Analysis|publisher=Cambridge University Press|isbn=0-521-56392-5}}.
*{{citation|last1=Awerbuch|first1=B.|last2=Kutten|first2=S.|last3=Peleg|first3=
[[Category:Analysis of algorithms]]
|