Sign in
← Atlas
Strong empiricalAlgorithmsGeneralized Grover / amplitude amplification

Amplitude amplification

The general framework behind Grover's algorithm: boosting the success probability of any subroutine with a known reflection structure.

amplitude amplificationgrover generalizationreflection operator

Atlas stars stay in the public catalog. Saving this entry to your workspace starts an unstarred private copy.

Amplitude amplification replaces Grover's uniform-superposition preparation with an arbitrary operator A, generalizing the quadratic speedup to any algorithm that prepares a 'good/bad' superposition.

Circuit & simulation
|1⟩ (good) after 1 iteration100%
|1⟩ before amplification25%
What this takes and returns
TakesNothingWhat joins here

No input port at this edge: the record publishes no gate sequence and no register, so there is nothing here to read one off — and unlike a declared hole, nothing has been recorded about what belongs here.

Nothing in the Atlas meets this end.

ReturnsNothingWhat joins here

No output port at this edge: the record publishes no gate sequence and no register, so there is nothing here to read one off — and unlike a declared hole, nothing has been recorded about what belongs here.

Nothing in the Atlas meets this end.

This record publishes no gate sequence and no register, so there is nothing here to read an interface off. Absent rather than empty. See all 152 →

Where this sits

This record is named by the layer graph at:

  • Amplify a success branch Slot

    Takes The preparation unitary AA and its inverse, a reflection about 0\lvert 0\rangle, and a reflection marking the good subspace — the Grover operator Q=AS0A1SχQ = -A S_0 A^{-1} S_\chi must be applicable at arbitrary powers. Individual variants additionally require a lower bound on aa, or a per-branch stopping flag. Returns A routine that produces the wanted branch with a stated failure probability, together with the query count and the maximum sequential depth consumed.

How it works

Amplitude amplification (Brassard, Høyer, Mosca, Tapp, 2000) generalizes Grover's algorithm from the specific case where the initial state is prepared by Hadamards to an arbitrary state-preparation operator AA.

Setup. Suppose A0=sinθgood+cosθbadA|0\rangle = \sin\theta\,|\text{good}\rangle + \cos\theta\,|\text{bad}\rangle, so the initial success probability is a=sin2θa=\sin^2\theta. Define the amplification operator

Q=AS0A1Sχ,Q = A\,S_0\,A^{-1}\,S_\chi,

where SχS_\chi flips the phase of good states and S0S_0 flips the phase of everything except 0|0\rangle. Geometrically, QQ is a rotation by 2θ2\theta in the 2-dimensional real span of good|\text{good}\rangle and bad|\text{bad}\rangle, so after kk applications the success probability is

Pk=sin2((2k+1)θ).P_k = \sin^2\big((2k+1)\theta\big).

Choosing kπ4θ12k\approx \frac{\pi}{4\theta}-\frac12 drives PkP_k close to 1, needing O(1/a)O(1/\sqrt a) iterations versus the O(1/a)O(1/a) classical repetitions needed to hit a probability-aa event with matching confidence — the same quadratic gain that Grover's algorithm gets as the special case A=HnA=H^{\otimes n}.

Exactly solvable small instance. Take a single qubit with A=Ry(2θ)A=R_y(2\theta), θ=π/6\theta=\pi/6, so a=sin2(π/6)=1/4a=\sin^2(\pi/6)=1/4 — the initial success ("good" = 1|1\rangle) probability is exactly 1/41/4. One iteration gives

P1=sin2(3θ)=sin2 ⁣(π2)=1,P_1 = \sin^2(3\theta) = \sin^2\!\left(\frac{\pi}{2}\right) = 1,

i.e. a single amplitude-amplification step turns a 25%-success preparation into a certain one — the same numeric case that underlies the classic "Grover on N=4N=4, M=1M=1" result, here derived directly from the rotation-angle formula rather than from an oracle over a register.

Where it is used. Amplitude amplification is the mechanism inside quantum counting, amplitude estimation, and any algorithm that needs to boost the probability of a rare event once a coherent way to recognize "success" (a reflection oracle) is available.

Implementation
Native
amplitude_amplification.py
from qiskit import QuantumCircuit
import numpy as np

theta = np.pi / 6  # sin(theta) = 1/2 -> initial success a = 1/4

def state_prep():
    qc = QuantumCircuit(1, name="A")
    qc.ry(2 * theta, 0)
    return qc

def oracle():
    qc = QuantumCircuit(1, name="S_chi")
    qc.z(0)  # marks |1> (good state) with a phase flip
    return qc

A = state_prep()
qc = QuantumCircuit(1, 1)
qc.append(A, [0])
# One amplitude-amplification iteration: S_chi, A^-1, S_0, A
qc.append(oracle(), [0])
qc.append(A.inverse(), [0])
qc.x(0)
qc.z(0)
qc.x(0)  # S_0: reflect about |0>
qc.append(A, [0])
qc.measure(0, 0)

FINAL_CIRCUIT = qc
Quantum vs classical
MetricClassicalQuantum
Query complexity (good-state prob. a)O(1/a)O(1/√a)
Asymptotic speedupbaselinequadratic

Classical baseline

Classical repeated sampling needs O(1/a) expected trials to observe an event of probability a.

Quantum claim

One amplitude-amplification iteration boosts success from a=1/4 to certainty in this instance; more generally O(1/√a) iterations suffice, assuming a reflection oracle over the good subspace is available.

How to compare

Compare oracle depth × iteration count against the classical sampling cost for the same acceptance threshold, and confirm the reflection oracle is actually available at that cost.

Declared gaps

Nobody has reviewed this record for gaps yet.

Literature & references
Quantum Amplitude Amplification and Estimation2000 · Gilles Brassard, Peter Hoyer, Michele Mosca, Alain Tapp

Generalizes Grover's algorithm to an arbitrary state-preparation operator and derives the amplification operator Q used here.

arxiv.org/abs/quant-ph/0005055