Study of computational problem difficulty. Play Complexity Theory trivia solo to sharpen your knowledge, or challenge a friend head-to-head in Trivia Tango — every question comes with an explanation so you learn as you play. Questions span every level, from easy warm-ups to expert-level stumpers, so there's a real challenge here however much you already know.
A mix of easy, medium and hard — questions run from warm-up to expert, so there's a real challenge at every level. Think you know the answers? Play to find out.
Written as a capital letter with parentheses like O(n²), this mathematical shorthand describes how an algorithm's runtime scales with input size.
Difficulty: EasyThis complexity class contains problems decidable in polynomial time by a randomized algorithm with bounded two-sided error.
Difficulty: MediumAaronson and Wigderson's algebrization barrier shows that proofs using low-degree extensions cannot separate this fundamental pair of complexity classes.
Difficulty: HardAn algorithm that runs in the same amount of time regardless of input size is said to have this type of time behavior.
Difficulty: EasyThe disjoint-set data structure achieves nearly constant time operations through path compression and this technique that keeps trees shallow.
Difficulty: MediumThis famous 1979 result by Furst, Saxe, and Sipser showed that XOR cannot be computed by constant-depth circuits with polynomial size.
Difficulty: HardWhen an algorithm's runtime doubles each time you add one more element to the input, it exhibits this explosive scaling behavior.
Difficulty: EasySavitch's theorem proves that nondeterministic space can be simulated deterministically with only this modest overhead in space usage.
Difficulty: Medium