Skip to content
Data Structures and Algorithms / Analysis Foundations and the Design Loop

Overview

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 (OO, Ω\Omega, Θ\Theta) 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 OO, Ω\Omega, and Θ\Theta 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

  1. Contents
  2. The big picture

The full lesson is for members.

Read the full lesson

New to SelfMadeQuant.com? See membership options or explore the curriculum.