Foundations of Quantum Complexity Theory

Suppose you want to know whether quantum computers can solve hard problems faster than classical ones. Before answering that, you need a rigorous way to measure "how much computation" a quantum device performs on a given input size. Complexity theory asks the same question for classical machines. But the resource is now a sequence of unitary operations acting on qubits, rather than bits flipped by logic gates. Getting the model exactly right matters greatly. This means fixing what counts as an elementary step. It means fixing what counts as "efficient." It also means fixing what counts as an acceptable error rate. These choices form the entire foundation for every later claim about quantum speedups. This matters for real systems because quantum hardware (superconducting qubits, trapped ions, photonic devices) is finite, noisy, and built from a small native gate set. Complexity theory tells engineers which gate sets are "good enough" — universal for computation. It also tells theorists how to compare a quantum algorithm's cost against the best known classical algorithm on equal footing. Without a precise circuit model, a claimed "exponential speedup" is not falsifiable. You cannot compare apples (a classical Turing machine step count) to oranges (an idealized continuous unitary). This comparison only works if both are pinned to a common notion of discrete, bounded, efficiently describable computation. The big picture is a chain of definitions. First, the quantum circuit model turns continuous unitary evolution into a discrete sequence of gates. These gates are drawn from a fixed finite set. Second, a universality theorem shows that a small gate set can approximate any unitary to arbitrary precision. So the choice of native gates does not change what is computable, only constants. Third, bounded-error computation formalizes what it means for a probabilistic quantum device to "solve" a problem. This holds despite inherent randomness in measurement outcomes. Together these three pieces let us define efficient quantum computation. We do this the same way we defined efficient classical computation with Uniform Circuit Families — as a resource-bounded class of problems. This article builds that chain from scratch. It gives precise definitions of the quantum circuit model. It offers a worked proof sketch of gate-set universality. It explains the formal meaning of bounded-error acceptance. It also covers the complexity bookkeeping (depth, size, ancilla count) needed to state later results cleanly. It sets up, but does not itself define in full, the complexity class built from this model. That is the natural next destination once the machine model is nailed down.

Key takeaways
  • A quantum circuit is a finite sequence of unitary gates from a fixed gate set, acting on a register of qubits, ending in measurement.
  • Circuit size (gate count) and depth (parallel layers) are the quantum analogues of classical time complexity.
  • A finite gate set is universal if circuits built from it can approximate any unitary to arbitrary accuracy — e.g. {H, T, CNOT}.
  • The Solovay–Kitaev theorem shows any universal gate set approximates a target unitary with only polylogarithmic overhead in circuit length.
  • Bounded-error computation means the circuit's measurement outcome is correct with probability at least 2/3 on every input, amplifiable by repetition.
  • These three ingredients — circuit model, universality, bounded error — are exactly the machinery needed to define the complexity class BQP.
The core insight

Quantum complexity theory is the classical theory of efficient computation transplanted onto unitary circuits, made rigorous by gate universality and bounded-error acceptance.

The idea

A quantum circuit on nn qubits is a sequence of instructions G1,G2,…,GTG_1, G_2, \dots, G_T, where each GiG_i is either a unitary gate drawn from a fixed finite gate set G\mathcal{G}, applied to one or two qubits (or a bounded number of qubits — the notion generalizes), or a measurement in the computational basis. The circuit takes an input state, usually ∣x⟩⊗∣0\ranges⊗m|x\rangle \otimes |0\ranges^{\otimes m} where xx is the classical input and the extra mm qubits are ancillas, applies the gates in sequence, and measures some designated output qubits at the end. The circuit's size is the total gate count TT; its depth is the number of layers needed if gates acting on disjoint qubits are run in parallel. These two numbers are the quantum analogues of the number of steps and the parallel time of a classical Boolean circuit — the resource quantities complexity theory bounds as a function of input length nn. The circuit model only makes sense as a complexity-theoretic object once we fix G\mathcal{G} to be a small, hardware-plausible set — otherwise "one gate" could secretly encode an arbitrarily powerful operation, trivializing every complexity bound. A gate set is called universal if, for every target unitary UU on any number of qubits and every ε>0\varepsilon > 0, there is a circuit built from G\mathcal{G} (with possible ancillas) whose action approximates UU to within operator-norm distance ε\varepsilon. Universality is the quantum analogue of the classical fact that {AND, OR, NOT} (or even just NAND) suffices to build any Boolean function: the specific native gates barely matter, because any finite universal set can simulate any other with only a controlled overhead in circuit length. This is what makes "quantum circuit complexity" a well-posed, hardware-independent notion rather than a statement tied to one vendor's instruction set. Finally, because quantum measurement outcomes are inherently probabilistic, "solving a problem" cannot mean "always outputs the right answer with certainty" for problems whose answer is a single bit — instead we adopt bounded-error acceptance: the circuit family must output the correct answer with probability at least 2/32/3 (or any constant >1/2> 1/2) for every valid input, and this success probability can be amplified exponentially close to 11 by independent repetition and majority vote. This convention mirrors bounded-error randomized classical computation (the class BPP) and is the direct quantum generalization needed to state complexity classes like BQP built on top of this same circuit model, using Uniform Circuit Families indexed by input length exactly as in the classical treatment of P and NP.

How it works

Step 1 — Fix the register and the gate set. A computation on inputs of length nn uses a register of nn input qubits plus poly(n)\text{poly}(n) ancilla qubits initialized to ∣0⟩|0\rangle. The gate set G\mathcal{G} is finite and fixed in advance — a canonical choice is

G={H,T,CNOT},\mathcal{G} = \{H, T, \text{CNOT}\},

where HH is the Hadamard gate, TT is the π/8\pi/8 phase gate, and CNOT is the two-qubit controlled-NOT. This is one of several standard universal sets (others include Toffoli+H, or the continuous set of all one- and two-qubit gates, which is universal for trivial reasons and used when exact rather than approximate universality is wanted).

Step 2 — Build the circuit as a uniform family. For each input length nn, a classical, polynomial-time algorithm outputs a description of the circuit CnC_n (its gate list, wiring, and measurement locations). This uniformity condition is exactly the one used for classical Uniform Circuit Families: it rules out circuit families that "cheat" by hard-coding answers into an astronomically complex, non-constructible circuit for each nn.

Step 3 — Apply gates, then measure. The circuit evolves the initial state ∣x⟩∣0⋯0⟩|x\rangle|0\cdots0\rangle through the unitary

Un=GTGT−1⋯G2G1,U_n = G_T G_{T-1} \cdots G_2 G_1,

and then measures a designated output qubit in the computational basis. The measurement outcome is a random bit whose distribution depends on xx; the circuit accepts if this bit is 11.

Step 4 — Approximate any needed unitary using universality. If an algorithm designer wants to apply some unitary VV not directly in G\mathcal{G} (e.g., a controlled rotation by an irrational angle appearing in Shor's algorithm), universality guarantees a circuit of gates from G\mathcal{G} approximating VV to error ε\varepsilon using

O ⁣(log⁡c(1/ε))O\!\left(\log^{c}(1/\varepsilon)\right)

gates (Solovay–Kitaev), for a small constant cc (known bounds give c≈3.97c \approx 3.97, improved variants push it lower). This lets algorithm designers reason at the level of "apply unitary VV" and only pay a polylogarithmic overhead when compiling down to the fixed native gate set.

Step 5 — Amplify bounded error. If a single run of CnC_n gives the correct answer with probability ≥2/3\ge 2/3, run CnC_n independently kk times and take the majority vote. By a Chernoff bound the error probability drops to 2−Ω(k)2^{-\Omega(k)}, so k=O(log⁡(1/δ))k = O(\log(1/\delta)) repetitions suffice for any target failure probability δ\delta, at only a polynomial blow-up in total circuit size. ``` // Pseudocode: constructing and running a quantum circuit // for a decision problem, with universality-based compilation // and error amplification. function BUILD_CIRCUIT(n): // classical poly-time "compiler": outputs a gate list register R = n input qubits + poly(n) ancilla qubits, all |0> gate_list = [] for each abstract step V_i in the algorithm's high-level description: if V_i in native_gate_set G: gate_list.append(V_i) else: // Solovay-Kitaev style compilation approx_circuit = APPROXIMATE(V_i, epsilon, G) gate_list.append(approx_circuit) // O(log^c(1/eps)) gates designate output_qubit return (register, gate_list, output_qubit) function RUN_ONCE(x, register, gate_list, output_qubit): state = encode(x) tensor |0...0>_ancilla for G in gate_list: state = apply(G, state) // unitary evolution bit = measure(output_qubit, state) // probabilistic return bit function DECIDE(x, k): // amplification: k independent repetitions, majority vote votes = [] for i in 1..k: (register, gate_list, output_qubit) = BUILD_CIRCUIT(len(x)) votes.append(RUN_ONCE(x, register, gate_list, output_qubit)) return MAJORITY(votes) // error <= 2^{-Omega(k)} ``` The single :::svg figure below lays out the whole pipeline: classical description of xx, register initialization, layered gate application (showing depth vs. size), a Solovay–Kitaev compilation zoom-in, and final measurement feeding a majority-vote amplifier.

Figure
From classical input to bounded-error decision: the quantum circuit pipeline
Input x = 1011 Register |x⟩⊗|0…0⟩ q0 q1 q2 a0(anc) H H CNOT Solovay–Kitaev compile: V → G-gates target V, ε precision H T T† H gate count = O(log^c(1/ε)) error ‖V − approx‖ ≤ ε Rz T Toff Measurement M Repeat k times → run 1: bit b1 run 2: bit b2 ⋮ run k: bit bk MAJORITY(b1..bk) Legend native gate (H, T, CNOT) ancilla-assisted step measurement Circuit size T = total gate count; depth = number of parallel layers (columns above).

Complexity & correctness

Size and depth as complexity measures. For an algorithm on inputs of length nn, we track two functions: size(n)\text{size}(n), the total gate count of CnC_n, and depth(n)\text{depth}(n), the number of layers when gates on disjoint qubits run in parallel. A problem is solved efficiently in the circuit model if there is a uniform family {Cn}\{C_n\} with size(n)=poly(n)\text{size}(n) = \text{poly}(n) — this is the direct quantum analogue of polynomial-time classical computation, and it is exactly the resource bound used to define BQP. Depth matters separately for questions about parallel quantum speedups but does not, by itself, define the basic efficient class.

Why universality doesn't blow up complexity: Solovay–Kitaev. The correctness of "any universal gate set gives the same complexity class up to polynomial factors" rests on the Solovay–Kitaev theorem: given a universal, closed-under-inverse gate set G\mathcal{G}, any single-qubit unitary UU can be approximated to accuracy ε\varepsilon by a word of length

O(log⁡c(1/ε))O\big(\log^{c}(1/\varepsilon)\big)

gates from G\mathcal{G}, for a constant cc (originally c≈4c \approx 4; refinements reduce this). The proof sketch proceeds by induction on a sequence of nets G0⊂G1⊂⋯\mathcal{G}_0 \subset \mathcal{G}_1 \subset \cdots that get ε\varepsilon-dense in SU(2)SU(2) exponentially fast: 1. Base case: net G0\mathcal{G}_0 approximates every unitary to some fixed constant accuracy ε0<1\varepsilon_0 < 1 (this follows because G\mathcal G densely generates SU(2)SU(2) — a consequence of universality — and SU(2)SU(2) is compact). 2. Inductive step: given a net Gj\mathcal{G}_j accurate to εj\varepsilon_j, express the residual error Δ=U(approxj)−1\Delta = U (\text{approx}_j)^{-1} as a group commutator Δ=VWV−1W−1\Delta = V W V^{-1} W^{-1} where V,WV, W are close to identity (this is always possible for U(2)U(2)/SU(2)SU(2) elements near identity, via the Balanced Commutator Lemma). Approximate VV and WW using the previous net Gj\mathcal{G}_j; because the commutator map is a contraction near the identity, the resulting approximation to Δ\Delta — and hence to UU — has error

εj+1=O(εj3/2).\varepsilon_{j+1} = O(\varepsilon_j^{3/2}).

3. Iterating, error shrinks doubly exponentially in the recursion depth jj, while circuit length grows only exponentially in jj. Solving εj∼ε\varepsilon_j \sim \varepsilon for the required jj and comparing to gate-count growth gives the polylogarithmic bound above. This theorem is the precise justification for "the choice of universal gate set doesn't matter (up to polylog overhead)" — it converts an existence statement (universal sets can approximate anything) into an efficiency statement (they can do so cheaply), which is exactly what a complexity theorist needs before declaring the circuit model well-defined independent of hardware.

Why bounded-error amplification is correct. Suppose a single circuit run outputs the correct bit with probability p≥2/3p \ge 2/3 on every fixed input xx (this asymmetry, "correct with probability ≥2/3\ge 2/3" rather than "=1= 1", is unavoidable because measurement is genuinely stochastic). Run kk independent copies and output the majority bit. Let XiX_i be the indicator that run ii is correct, so XiX_i are i.i.d. Bernoulli(pp) with p≥2/3p \geq 2/3. The majority is wrong only if fewer than k/2k/2 of the XiX_i are 11. By a Chernoff–Hoeffding bound,

Pr⁡[∑iXi<k/2]≤e−2k(p−1/2)2≤e−k/18.\Pr\Big[\textstyle\sum_i X_i < k/2\Big] \le e^{-2k(p - 1/2)^2} \le e^{-k/18}.

So k=O(log⁡(1/δ))k = O(\log(1/\delta)) repetitions push the error below any target δ\delta, and the total circuit size only grows by the same O(log⁡(1/δ))O(\log(1/\delta)) multiplicative factor — a polynomial (indeed polylogarithmic) overhead, not an exponential one. This is precisely the argument that makes "bounded error with probability ≥2/3\ge 2/3" and "bounded error with probability ≥1−2−n\ge 1 - 2^{-n}" define the same complexity class: amplification is free up to polynomial factors, so the exact constant 2/32/3 in the definition of bounded-error acceptance is a convention, not a real degree of freedom.

Honesty about the tradeoffs. The circuit model idealizes gates as exact unitaries and ignores decoherence, gate infidelity, and connectivity constraints of real hardware — all of which real quantum devices must fight using Quantum Error Correction. The Solovay–Kitaev overhead, while polylogarithmic, is not free in practice: compiling a single arbitrary rotation to 10−1010^{-10} precision can cost dozens of native gates, which matters enormously when every gate carries a nonzero physical error rate. And circuit depth, not just size, often dominates real device feasibility (coherence time), a distinction the size-only definition of efficient quantum computation does not capture — it captures asymptotic classification, not near-term engineering cost.

Worked example

Trace the compilation and amplification pipeline concretely for a toy problem: decide whether a hidden bit s∈{0,1}s \in \{0,1\} satisfies s=1s = 1, using a circuit that (by design) outputs the correct answer with probability exactly p=0.7p = 0.7 per run — a stand-in for a real bounded-error quantum subroutine.

Part A — universality/compilation cost. Suppose the algorithm needs to apply a single-qubit rotation RθR_\theta by an irrational angle θ\theta (this arises, e.g., in phase-estimation subroutines) to accuracy ε=10−3\varepsilon = 10^{-3}, using only {H,T}\{H, T\}-type gates. Applying the Solovay–Kitaev bound with a typical constant c≈4c \approx 4:

quantityvalue
target precision ε\varepsilon10−310^{-3}
log⁡2(1/ε)\log_2(1/\varepsilon)≈9.97\approx 9.97
SK gate-count estimate O(log⁡4(1/ε))O(\log^{4}(1/\varepsilon))≈9.974≈9880\approx 9.97^4 \approx 9880 gates
naive brute-force search over all {H,T}\{H,T\}-words of comparable accuracygrows exponentially in log⁡(1/ε)\log(1/\varepsilon), i.e. far worse

(In practice, tuned SK implementations and modern number-theoretic compilers achieve far fewer gates than this loose asymptotic bound suggests — the exercise is to see the shape of the tradeoff, not to take the constant literally.)

Part B — error amplification. Now trace the majority-vote amplifier with p=0.7p = 0.7, wanting final error δ=0.01\delta = 0.01.

kk (repetitions)Chernoff bound e−2k(p−1/2)2e^{-2k(p-1/2)^2}actual behavior
1—error =0.3= 0.3 (no amplification)
5e−2⋅5⋅0.04=e−0.4≈0.67e^{-2\cdot5\cdot0.04} = e^{-0.4}\approx 0.67loose bound; true majority error ≈0.16\approx 0.16
21e−2⋅21⋅0.04=e−1.68≈0.19e^{-2\cdot21\cdot0.04} = e^{-1.68}\approx 0.19true majority error ≈0.02\approx 0.02
41e−2⋅41⋅0.04=e−3.28≈0.038e^{-2\cdot41\cdot0.04} = e^{-3.28}\approx 0.038true majority error <0.01< 0.01 ✓

Concretely with k=41k = 41: run the circuit 41 times, each independently correct with probability 0.7. The number of correct runs X∼Binomial(41,0.7)X \sim \text{Binomial}(41, 0.7) has mean 28.728.7; the majority threshold is 2121. Computing the exact binomial tail Pr⁡[X<21]\Pr[X < 21] gives a value comfortably under 1%1\%, confirming (and beating) the Chernoff estimate — repetitions bought certainty at only a 41×41\times multiplicative blow-up in circuit count, i.e. still polynomial in log⁡(1/δ)\log(1/\delta), exactly as the amplification argument predicts.

Putting both parts together: the total circuit used to decide s=1s=1 with 99%99\% confidence, using an internal rotation gate compiled to 10−310^{-3} precision, has size roughly

41×(base circuit size+9880),41 \times \big(\text{base circuit size} + 9880\big),

still a polynomial function of the problem parameters — illustrating exactly why both universality overhead and error-amplification overhead are absorbed into the "polynomial" in the definition of efficient bounded-error quantum computation, without changing which problems are solvable efficiently.

Common pitfalls & traps

PitfallWhy it's wrongFix
Treating "any unitary is a valid gate"Trivializes complexity — one exotic gate could encode an oracle solving NP-hard instances in one stepFix a finite universal gate set before counting circuit size
Confusing depth with sizeDepth measures parallel time; size measures total gate work; they're both valid but answer different questionsState explicitly which resource is being bounded
Assuming Solovay–Kitaev gives exact equivalence between gate setsIt only gives polylogarithmic-overhead approximate equivalence, with real (nonzero) constantsAlways carry the ε\varepsilon and the constant cc through complexity claims
Forgetting ancilla qubits count toward space complexityAncillas are "free" scratch qubits only if their count stays polynomialTrack ancilla count as part of the space bound, just like classical work tape usage
Assuming 2/32/3 success probability is a fundamental thresholdIt's an arbitrary constant >1/2>1/2; amplification shows the exact constant doesn't change the resulting complexity classState the amplification argument instead of treating 2/32/3 as sacred
Ignoring that measurement is irreversible mid-circuitMeasuring early can destroy interference the algorithm relies onDefer measurement to the end (deferred-measurement principle) unless mid-circuit measurement is explicitly modeled

Pioneers & history

The circuit model and gate universality did not appear fully formed; they crystallized from independent lines of work in quantum information and theoretical computer science through the 1980s and 1990s.

Origins · 1 minDavid Deutsch and how this was discovered
DD
David Deutsch
born 1953 · University of Oxford, early theory of quantum Turing machines and universal quantum computation

Deutsch's 1985 paper on quantum Turing machines first formalized what it would mean for a quantum device to compute, laying groundwork for later circuit-model treatments and for the first explicit quantum algorithm demonstrating a computational separation from classical machines.

History
1985
— David Deutsch defines the quantum Turing machine and gives the first quantum algorithm (Deutsch's algorithm).
1989
— Deutsch introduces quantum computational networks (an early circuit-model formulation).
1995
— David DiVincenzo and others show small universal gate sets (e.g. CNOT plus single-qubit gates) suffice for arbitrary unitaries.
1997
— Alexei Kitaev, building on Solovay's unpublished argument, proves the Solovay–Kitaev theorem on efficient gate-set approximation.
1997
— Ethan Bernstein and Umesh Vazirani formalize quantum complexity classes and bounded-error quantum polynomial time, setting up the class now called BQP.

Where this matters

The circuit model with a fixed universal gate set is exactly the abstraction quantum hardware compilers target: IBM's Qiskit, Google's Cirq, and other toolchains all compile high-level algorithm descriptions down to a small native gate set (typically single-qubit rotations plus a two-qubit entangling gate), invoking Solovay–Kitaev-style or number-theoretically optimized compilation to hit target precision with minimal gate count. Bounded-error acceptance and amplification underlie every practical claim that a noisy intermediate-scale quantum (NISQ) device "solved" an instance, since no physical run of a quantum circuit is ever certain — every reported quantum algorithm result is implicitly a bounded-error claim, repeated and aggregated over many shots. The universality question also governs quantum error correction: fault-tolerant schemes must implement a universal and fault-tolerant gate set (e.g. Clifford+T with magic-state distillation), directly inheriting the size/precision tradeoffs analyzed via Solovay–Kitaev-type bounds. Finally, this entire circuit-and-error framework is the machine model referenced whenever a paper claims a quantum algorithm achieves a speedup over the best known classical algorithm — that claim is only meaningful once "efficient quantum computation" has been pinned down as precisely as "efficient classical computation" is pinned down by Uniform Circuit Families and classical Time Complexity classes like P.

Ask the tutor: How does BQP formally relate to classical complexity classes like P, BPP, and NP?

Why can't we just define quantum complexity using continuous unitaries directly, without a discrete gate set?

Continuous unitary groups like SU(2n)SU(2^n) are uncountable and every element is "one operation" if left unrestricted, so counting operations would tell you nothing about computational difficulty — any function could be computed by a single sufficiently exotic unitary. Complexity theory needs a discrete, countable notion of elementary step, exactly as classical theory restricts Turing machines to a finite instruction set or Boolean circuits to a finite gate library like {AND, OR, NOT}. Fixing a finite universal gate set gives a discrete notion of circuit size that can grow with input length in a meaningful way, mirroring how classical circuit complexity is only meaningful once the gate library is fixed. The universality theorem then shows this restriction costs nothing important, since any universal set reaches every unitary in the limit.

Does the choice between {H, T, CNOT} and, say, {H, Toffoli} change what is computable efficiently?

No — this is precisely the content of gate-set-independence results built on Solovay–Kitaev-style arguments. Any finite universal gate set can simulate any other finite universal gate set with only polylogarithmic overhead in circuit size, meaning that if a problem has a polynomial-size circuit in one universal gate set, it has a polynomial-size circuit (possibly with a larger polynomial) in any other. This is exactly analogous to the classical fact that {NAND} alone, or {AND, OR, NOT}, or {AND, OR, NOT, XOR} all define the same polynomial-size circuit complexity class up to constant-factor blow-up. The practical choice of native gates is therefore an engineering decision, not a complexity-theoretic one.

What exactly does "bounded error" mean, and why is the constant 2/3 not special?

Bounded-error acceptance means a circuit family outputs the correct answer with probability at least some fixed constant strictly greater than 1/21/2 — commonly stated as 2/32/3, but any constant like 0.510.51 or 0.90.9 works equally well. This is because independent repetition combined with majority voting amplifies any constant advantage over 1/21/2 to exponentially high confidence, using only polynomially (in fact polylogarithmically, in the target error) many repetitions, by a Chernoff bound argument. So the specific value 2/32/3 is a convention chosen for concreteness, not a threshold with special mathematical significance — the complexity class defined is invariant to which constant above 1/21/2 is used in the definition.

How does circuit depth relate to circuit size, and why does the article emphasize size for defining efficiency?

Circuit size counts total gate operations, while circuit depth counts the number of sequential layers when gates on disjoint qubits are applied in parallel; depth is always at most size, and can be much smaller if the circuit parallelizes well. The basic definition of efficient quantum computation uses polynomial size because that mirrors how efficient classical computation is defined via polynomial time (sequential steps) or polynomial circuit size, giving a clean bridge to classical complexity classes. Depth becomes the relevant resource when studying parallel quantum complexity classes or physical runtime on hardware limited by decoherence time, but it is a separate, complementary complexity measure rather than a replacement for size.

Why does universality require ancilla qubits or approximation rather than exact finite gate sets always sufficing?

Some universal gate sets achieve only dense coverage of the unitary group — meaning any target unitary can be approximated arbitrarily closely but not always hit exactly — because the group generated by a finite gate set is countable while the unitary group is continuous and uncountable. Ancilla qubits, initialized to a fixed state and discarded (or measured) at the end, give circuits extra room to implement unitaries on the "real" qubits that would otherwise require gates outside the fixed set, at the cost of additional space. Some gate sets (like Clifford+T, or Toffoli+H) are universal only with ancillas for certain exact constructions, while remaining approximately universal without them; the space/precision tradeoff is a genuine complexity cost, tracked explicitly in careful resource accounting.

How does this circuit-and-universality framework connect to the class BQP mentioned at the end?

Bounded-error quantum polynomial time, BQP, is defined exactly as the set of decision problems solvable by a uniform family of polynomial-size quantum circuits, built from a fixed universal gate set, that accept with probability at least 2/32/3 on yes-instances and at most 1/31/3 on no-instances. Every piece built in this article — the circuit model, the gate-set independence guaranteed by Solovay–Kitaev, and the error-amplification argument — is precisely the machinery needed to make that definition well-posed and gate-set-independent. Studying BQP's relationship to classical classes like P, BPP, and NP is the natural next step once this circuit-model foundation is secure.

Is the circuit model the only way to formalize quantum computation, or could other models give different complexity classes?

Alternative models exist — quantum Turing machines, measurement-based (cluster-state) quantum computation, adiabatic quantum computation, and topological models — and a foundational result is that all of these are polynomially equivalent to the quantum circuit model, meaning they define the same complexity classes up to polynomial overhead. This equivalence is analogous to the classical Church–Turing-thesis-adjacent fact that Turing machines, lambda calculus, and Boolean circuits all capture the same notion of efficient computation. The circuit model is preferred pedagogically and for hardware descriptions because it maps most directly onto how physical quantum devices are actually programmed and analyzed.

Where this leads