  We consider the problem of developing automated techniques for solving
recurrence relations to aid the expected-runtime analysis of programs. Several
classical textbook algorithms have quite efficient expected-runtime complexity,
whereas the corresponding worst-case bounds are either inefficient (e.g.,
QUICK-SORT), or completely ineffective (e.g., COUPON-COLLECTOR). Since the main
focus of expected-runtime analysis is to obtain efficient bounds, we consider
bounds that are either logarithmic, linear, or almost-linear ($\mathcal{O}(\log
n)$, $\mathcal{O}(n)$, $\mathcal{O}(n\cdot\log n)$, respectively, where n
represents the input size). Our main contribution is an efficient (simple
linear-time algorithm) sound approach for deriving such expected-runtime bounds
for the analysis of recurrence relations induced by randomized algorithms. Our
approach can infer the asymptotically optimal expected-runtime bounds for
recurrences of classical randomized algorithms, including RANDOMIZED-SEARCH,
QUICK-SORT, QUICK-SELECT, COUPONCOLLECTOR, where the worst-case bounds are
either inefficient (such as linear as compared to logarithmic of
expected-runtime, or quadratic as compared to linear or almost-linear of
expected-runtime), or ineffective. We have implemented our approach, and the
experimental results show that we obtain the bounds efficiently for the
recurrences of various classical algorithms.

Programming Languages;Data Structures and Algorithms