About

Exam Practice

Master algorithm efficiency analysis, recurrences, combinatorial generation, divide-and-conquer, and midterm exam problems based on Levitin (3rd ed).

Reference text: Introduction to the Design and Analysis of Algorithms, 3rd Edition (Anany Levitin)

Master Theorem Reference: T(n)=aT(n/b)+Θ(nd)T(n) = a T(n/b) + \Theta(n^d)

ConditionResulting Complexity T(n)T(n)Dominant PhaseExample Algorithm
a<bda < b^dΘ(nd)\Theta(n^d)Root-dominated (combining)D&C: T(n)=2T(n/2)+n2  ⟹  Θ(n2)\text{D\&C: } T(n) = 2T(n/2) + n^2 \implies \Theta(n^2)
a=bda = b^dΘ(ndlog⁡n)\Theta(n^d \log n)Balanced across all tree levelsMerge Sort: 2T(n/2)+n  ⟹  Θ(nlog⁡n)\text{Merge Sort: } 2T(n/2) + n \implies \Theta(n \log n)
a>bda > b^dΘ(nlog⁡ba)\Theta(n^{\log_b a})Leaf-dominated (subproblems)Karatsuba: 3T(n/2)+n  ⟹  Θ(n1.585)\text{Karatsuba: } 3T(n/2) + n \implies \Theta(n^{1.585})

Algorithm Complexities Summary (Chapters 1–5)

AlgorithmDesign StrategyBest CaseAverage CaseWorst CaseSpace
Sieve of EratosthenesBrute Force / EliminationΘ(nlog⁡log⁡n)\Theta(n \log \log n)Θ(nlog⁡log⁡n)\Theta(n \log \log n)Θ(nlog⁡log⁡n)\Theta(n \log \log n)Θ(n)\Theta(n)
Selection SortBrute ForceΘ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(1)\Theta(1)
Bubble SortBrute ForceΘ(n)\Theta(n)Θ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(1)\Theta(1)
Insertion SortDecrease-by-1Θ(n)\Theta(n)Θ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(1)\Theta(1)
Sequential String MatchBrute ForceΘ(n)\Theta(n)Θ(n)\Theta(n)Θ(n⋅m)\Theta(n \cdot m)Θ(1)\Theta(1)
2D Board MatchBrute ForceΘ(R⋅C)\Theta(R \cdot C)Θ(R⋅C)\Theta(R \cdot C)Θ(R⋅C⋅m)\Theta(R \cdot C \cdot m)Θ(1)\Theta(1)
Closest Pair (Brute Force)Brute ForceΘ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(n2)\Theta(n^2)Θ(1)\Theta(1)
Convex Hull (Brute Force)Brute ForceΘ(n3)\Theta(n^3)Θ(n3)\Theta(n^3)Θ(n3)\Theta(n^3)Θ(1)\Theta(1)
TSP (Exhaustive Search)Exhaustive SearchΘ(n!)\Theta(n!)Θ(n!)\Theta(n!)Θ(n!)\Theta(n!)Θ(n)\Theta(n)
Knapsack (Exhaustive)Exhaustive SearchΘ(2n)\Theta(2^n)Θ(2n)\Theta(2^n)Θ(2n)\Theta(2^n)Θ(n)\Theta(n)
Assignment ProblemExhaustive SearchΘ(n!)\Theta(n!)Θ(n!)\Theta(n!)Θ(n!)\Theta(n!)Θ(n)\Theta(n)
Tower of HanoiDecrease-by-1 / D&CΘ(2n)\Theta(2^n)Θ(2n)\Theta(2^n)Θ(2n)\Theta(2^n)Θ(n)\Theta(n)
Binary SearchDecrease-by-factor-2Θ(1)\Theta(1)Θ(log⁡n)\Theta(\log n)Θ(log⁡n)\Theta(\log n)Θ(1)\Theta(1)
Euclid GCDVariable-Size DecreaseΘ(1)\Theta(1)Θ(log⁡n)\Theta(\log n)Θ(log⁡n)\Theta(\log n)Θ(1)\Theta(1)
Merge SortDivide-and-ConquerΘ(nlog⁡n)\Theta(n \log n)Θ(nlog⁡n)\Theta(n \log n)Θ(nlog⁡n)\Theta(n \log n)Θ(n)\Theta(n)
Quick SortDivide-and-ConquerΘ(nlog⁡n)\Theta(n \log n)Θ(nlog⁡n)\Theta(n \log n)Θ(n2)\Theta(n^2)Θ(log⁡n)\Theta(\log n)
Closest Pair (D&C)Divide-and-ConquerΘ(nlog⁡n)\Theta(n \log n)Θ(nlog⁡n)\Theta(n \log n)Θ(nlog⁡n)\Theta(n \log n)Θ(n)\Theta(n)
Karatsuba MultiplicationDivide-and-ConquerΘ(n1.585)\Theta(n^{1.585})Θ(n1.585)\Theta(n^{1.585})Θ(n1.585)\Theta(n^{1.585})Θ(log⁡n)\Theta(\log n)
Strassen Matrix MultDivide-and-ConquerΘ(n2.807)\Theta(n^{2.807})Θ(n2.807)\Theta(n^{2.807})Θ(n2.807)\Theta(n^{2.807})Θ(n2)\Theta(n^2)

Essential Summation Formulas & Recurrence Identities

Sum of First nn Integers∑i=1ni=n(n+1)2≈n22∈Θ(n2)\sum_{i=1}^n i = \frac{n(n+1)}{2} \approx \frac{n^2}{2} \in \Theta(n^2)
Sum of Squares∑i=1ni2=n(n+1)(2n+1)6≈n33∈Θ(n3)\sum_{i=1}^n i^2 = \frac{n(n+1)(2n+1)}{6} \approx \frac{n^3}{3} \in \Theta(n^3)
Finite Geometric Series∑i=0nai=an+1−1a−1(a≠1)\sum_{i=0}^n a^i = \frac{a^{n+1} - 1}{a - 1} \quad (a \ne 1)
Halving RecurrenceT(n)=T(n/2)+1  ⟹  T(n)=⌊log⁡2n⌋+1∈Θ(log⁡n)T(n) = T(n/2) + 1 \implies T(n) = \lfloor \log_2 n \rfloor + 1 \in \Theta(\log n)
Doubling RecurrenceT(n)=2T(n−1)+1  ⟹  T(n)=2n−1∈Θ(2n)T(n) = 2T(n-1) + 1 \implies T(n) = 2^n - 1 \in \Theta(2^n)
Merge Sort RecurrenceT(n)=2T(n/2)+Θ(n)  ⟹  T(n)∈Θ(nlog⁡n)T(n) = 2T(n/2) + \Theta(n) \implies T(n) \in \Theta(n \log n)