Every algorithmic choice a quant makes — resort the whole book every tick or maintain a heap, scan a list or hash it, recompute a covariance matrix from scratch or update it incrementally — is a bet about how a running-time function grows as the input grows. This topic builds the language for making that bet precisely instead of by folklore: asymptotic notation (, , ) to classify growth rates, the divide-and-conquer pattern and the recurrences it generates, the master theorem as the standard tool for solving those recurrences without reinventing a proof each time, and probabilistic analysis for algorithms whose running time depends on the input's order, not just its size. Every later topic in this unit — sorting, hashing, trees, graphs, dynamic programming — states its cost in this language and, in several cases (mergesort, the union-find bound, randomized quicksort), reuses the exact recurrence-solving and probabilistic-analysis machinery built here.
By the end of this topic you should be able to:
- state and apply the formal definitions of , , and to compare two candidate algorithms without running either;
- set up the recurrence for a divide-and-conquer algorithm and solve it with the master theorem, including recognising when the theorem does not apply;
- explain, at the level of a reproducible sketch, why the master theorem's three cases pick out the dominant term of the recursion;
- carry out an indicator-random-variable argument to compute the expected running time of a randomized algorithm.
In this lesson
- Contents
- The big picture
The full lesson is for members.
Read the full lessonNew to SelfMadeQuant.com? See membership options or explore the curriculum.