Skip to content
Phase Kickback (Explained)

Phase Kickback (Explained)

April 6, 2025

Phase kickback is one of the most useful “little tricks” in quantum computing. It explains how a controlled operation—apparently acting on the target—can end up putting a phase on the control.

This idea shows up everywhere: oracle phase marking in Grover, and especially in quantum phase estimation (which relies on the QFT).

The key setup

You need three ingredients:

  • A control qubit in superposition: α∣0⟩+β∣1⟩\alpha\lvert 0\rangle + \beta\lvert 1\rangle
  • A target register in a special state ∣ψ⟩\lvert \psi\rangle
  • A unitary UU such that ∣ψ⟩\lvert \psi\rangle is an eigenstate of UU:
U∣ψ⟩=eiθ∣ψ⟩. U\lvert\psi\rangle = e^{i\theta}\lvert\psi\rangle.

Now apply the controlled-UU gate (control on the first qubit, target is ∣ψ⟩\lvert\psi\rangle).

The “kickback” algebra (why it works)

Start with the joint state:

(α∣0⟩+β∣1⟩)⊗∣ψ⟩. (\alpha\lvert 0\rangle + \beta\lvert 1\rangle)\otimes\lvert\psi\rangle.

Controlled-UU acts as:

  • if control is ∣0⟩\lvert 0\rangle: do nothing
  • if control is ∣1⟩\lvert 1\rangle: apply UU to the target

So the output is:

$$ \alpha\lvert 0\rangle\lvert\psi\rangle + \beta\lvert 1\rangle,U\lvert\psi\rangle

\alpha\lvert 0\rangle\lvert\psi\rangle + \beta\lvert 1\rangle,e^{i\theta}\lvert\psi\rangle. $$

And here’s the punchline: because ∣ψ⟩\lvert\psi\rangle is unchanged (only picks up a phase), the state factors:

∣ψ⟩(α∣0⟩+βeiθ∣1⟩). \lvert\psi\rangle\left(\alpha\lvert 0\rangle + \beta e^{i\theta}\lvert 1\rangle\right).

The target returns to the same physical state, while the control has acquired a relative phase eiθe^{i\theta} on its ∣1⟩\lvert 1\rangle component. That phase is now “stored” on the control qubit, where it can interfere with other amplitudes.

If the target is not an eigenstate of UU, then U∣ψ⟩U\lvert\psi\rangle changes the target in a state-dependent way, and control+target typically become entangled. Then you don’t get a clean, single phase on the control.

From bit-oracle to phase-oracle (the practical version)

Many algorithms start from a reversible “bit oracle” for a Boolean function ff:

Of:∣x⟩∣y⟩↦∣x⟩∣y⊕f(x)⟩. O_f:\lvert x\rangle\lvert y\rangle \mapsto \lvert x\rangle\lvert y\oplus f(x)\rangle.

If you prepare the ancilla as ∣−⟩=12(∣0⟩−∣1⟩)\lvert -\rangle=\frac{1}{\sqrt{2}}(\lvert 0\rangle-\lvert 1\rangle), then flipping it applies a phase:

Of∣x⟩∣−⟩=(−1)f(x)∣x⟩∣−⟩. O_f\lvert x\rangle\lvert -\rangle = (-1)^{f(x)}\lvert x\rangle\lvert -\rangle.

So without measuring anything, the function value f(x)f(x) ends up encoded as a phase on ∣x⟩\lvert x\rangle.

This is exactly the “marking” behavior used in Grover-style phase oracles.

Tiny example in Qiskit (controlled-Rz)

The Rz(ϕ)R_z(\phi) rotation has eigenstates ∣0⟩\lvert 0\rangle and ∣1⟩\lvert 1\rangle:

  • Rz(ϕ)∣0⟩=∣0⟩R_z(\phi)\lvert 0\rangle=\lvert 0\rangle
  • Rz(ϕ)∣1⟩=eiϕ∣1⟩R_z(\phi)\lvert 1\rangle=e^{i\phi}\lvert 1\rangle

If you use ∣1⟩\lvert 1\rangle as the target eigenstate, then a controlled-Rz(ϕ)R_z(\phi) kicks back a phase onto the control:

import numpy as np
from qiskit import QuantumCircuit

phi = np.pi / 3
qc = QuantumCircuit(2)

# control in |+>
qc.h(0)

# target eigenstate |1>
qc.x(1)

# controlled unitary
qc.crz(phi, 0, 1)

qc.draw("text")

Next