Geodesic Length and the Quantum Speed Limit

Mathematical Foundations, numerical solution.

Open In Colab

Geodesic Length and the Quantum Speed Limit


Background

A quantum state evolving under a fixed Hamiltonian needs time to change appreciably, and there is a floor on how little time it can take to become fully distinguishable from where it started. Distinguishable here means orthogonal, so the overlap with the initial state has dropped to zero. This minimum time is controlled by a single number, the energy uncertainty \(\Delta H\) of the initial state, with a smaller spread in energy forcing slower change.

The precise statement is the Mandelstam-Tamm bound, which sets the time to reach orthogonality at \(T_\perp = \pi/(2\Delta H)\). A state with sharply defined energy barely moves, while a state spread over a wide band of energies can turn over quickly. The bound holds for any Hamiltonian and any initial state, so it places a universal limit on the speed of unitary dynamics.

There is a geometric way to read the same result. The evolution \(U(t) = e^{-iHt}\) traces a path on the unitary group, and with the metric inherited from the Hilbert-Schmidt inner product this path is a geodesic traversed at constant speed. The state moves along the shortest route available to it, and the energy uncertainty plays the role of how fast it covers ground. A qubit prepared in an eigenstate of \(\sigma_z\) and driven by \(H = (\omega/2)\sigma_x\) has the largest spread its energy range allows. Its survival probability is \(\cos^2(\omega t/2)\), which first reaches zero exactly at \(T_\perp\), so the qubit saturates the bound.

The notebook computes the geodesic length and the orthogonality time and confirms that this qubit sits right at the limit.

Mathematical background

The geometric reading rests on the length of a path on \(U(D)\). With the Hilbert-Schmidt metric \(\langle X, Y\rangle = -\mathrm{Tr}(XY)\) on the skew-Hermitian algebra, the length of a curve \(U(t)\) is

\[ L[U(t)] = \int_0^1 \sqrt{\langle \dot U U^\dagger, \dot U U^\dagger\rangle}\,dt = \int_0^1 \sqrt{\mathrm{Tr}(\dot U^\dagger \dot U)}\,dt , \]

where the second form follows because \(\dot U U^\dagger\) is skew-Hermitian and the trace is cyclic. For evolution under a fixed Hamiltonian, \(U(t) = e^{-iHt}\) gives \(\dot U = -iHU\) and \(\mathrm{Tr}(\dot U^\dagger \dot U) = \mathrm{Tr}(H^2)\), a constant. The path is therefore a geodesic traversed at constant speed \(\sqrt{\mathrm{Tr}(H^2)}\), and its length grows linearly in time. Restricted to the evolving state, the speed in the Fubini-Study metric is set by the energy uncertainty \(\Delta H = \sqrt{\langle H^2\rangle - \langle H\rangle^2}\), which is what turns the geometric length into the Mandelstam-Tamm time \(T_\perp = \pi/(2\Delta H)\) to reach an orthogonal state.

Motivation

How fast can a quantum state evolve? The quantum speed limit (Mandelstam-Tamm bound) sets a fundamental lower bound on the time needed to evolve between orthogonal states. This exercise derives the bound from the geometry of the unitary group: Hamiltonian evolution traces a geodesic on \(U(D)\) whose speed is set by the energy spread \(\Delta H\). The connection between Riemannian geometry and quantum dynamics is one of the deepest structural insights in quantum information.

Exercise

In the bi-invariant HS metric on \(U(D)\), the geodesic \(U(t) = \exp(-iHt)\) has constant speed \(\|dU/dt \cdot U^\dagger\| = \sqrt{\mathrm{Tr}(H^2)}\).

(a) Compute the geodesic length from \(I\) to \(U(T) = \exp(-iHT)\).

(b) For \(H = (\omega/2)\sigma_x\) on a qubit, compute the speed and the length to \(U(\pi/\omega) = -i\sigma_x\).

(c) Mandelstam-Tamm bound: for \(|\psi_0\rangle = |0\rangle\), compute \(\Delta H\), predict \(T_\perp\), and verify the survival probability vanishes at \(t = T_\perp\).

Solution

Part (a): Geodesic length

The velocity along the geodesic is:

\[ \frac{dU}{dt}\cdot U^\dagger = (-iH)e^{-iHt} \cdot e^{+iHt} = -iH. \]

The HS norm on \(\mathfrak{u}(D)\) is \(\|A\| = \sqrt{-\mathrm{Tr}(A^2)}\) for skew-Hermitian \(A\). Since \(-iH\) is skew-Hermitian:

\[ v = \|-iH\| = \sqrt{-\mathrm{Tr}((-iH)^2)} = \sqrt{\mathrm{Tr}(H^2)}. \]

The speed is constant (independent of \(t\)), so the geodesic length is simply:

\[ \boxed{L = T \cdot \sqrt{\mathrm{Tr}(H^2)}.} \]

Part (b): Single-qubit Rabi oscillation

For \(H = (\omega/2)\sigma_x\):

\[ \mathrm{Tr}(H^2) = \frac{\omega^2}{4}\mathrm{Tr}(\sigma_x^2) = \frac{\omega^2}{4}\cdot 2 = \frac{\omega^2}{2}. \]

\[ v = \frac{\omega}{\sqrt{2}}. \]

At \(T = \pi/\omega\) (a \(\pi\)-rotation about the \(x\)-axis):

\[ L = \frac{\pi}{\omega} \cdot \frac{\omega}{\sqrt{2}} = \frac{\pi}{\sqrt{2}}. \]

Part (c): Mandelstam-Tamm bound

The bound states that the minimum time to evolve to an orthogonal state is:

\[ T_\perp = \frac{\pi}{2\Delta H}, \qquad \Delta H = \sqrt{\langle H^2\rangle - \langle H\rangle^2}. \]

Step 1: Compute the expectation values for \(|\psi_0\rangle = |0\rangle\):

\[ \langle H \rangle = \frac{\omega}{2}\langle 0|\sigma_x|0\rangle = 0, \qquad \langle H^2\rangle = \frac{\omega^2}{4}\langle 0|\sigma_x^2|0\rangle = \frac{\omega^2}{4}. \]

\[ \Delta H = \frac{\omega}{2}. \]

Step 2: Predict \(T_\perp\):

\[ T_\perp = \frac{\pi}{2 \cdot \omega/2} = \frac{\pi}{\omega}. \]

Step 3: Verify the survival probability vanishes:

\[ |\langle 0| e^{-iHt}|0\rangle|^2 = |\langle 0| e^{-i(\omega/2)\sigma_x t}|0\rangle|^2 = \cos^2\!\left(\frac{\omega t}{2}\right). \]

At \(t = T_\perp = \pi/\omega\): \(\cos^2(\pi/2) = 0\). \(\quad \checkmark\)

The bound is saturated because \(|0\rangle\) is an equal superposition of the eigenstates of \(\sigma_x\), giving maximal energy spread.


Symbolic Verification (SymPy)

Code
import sympy as sp

w, t = sp.symbols('omega t', real=True, positive=True)
sx = sp.Matrix([[0, 1], [1, 0]])

H = w/2 * sx
trH2 = sp.trace(H * H)
speed = sp.sqrt(trH2)
print(f"Tr(H²) = {trH2}, speed = {sp.simplify(speed)}")

# Survival probability
psi0 = sp.Matrix([1, 0])
expH = sp.exp(-sp.I * H * t)  # matrix exponential
# For σ_x: exp(-i(ω/2)σ_x t) = cos(ωt/2)I - i sin(ωt/2)σ_x
U_t = sp.cos(w*t/2)*sp.eye(2) - sp.I*sp.sin(w*t/2)*sx
psi_t = U_t * psi0
surv = sp.simplify(sp.Abs(psi0.dot(psi_t))**2)
print(f"Survival probability = {surv}")

# At t = π/ω
surv_at_Tperp = surv.subs(t, sp.pi/w)
print(f"At T_⊥ = π/ω: P = {sp.simplify(surv_at_Tperp)}")
Tr(H²) = omega**2/2, speed = sqrt(2)*omega/2
Survival probability = cos(omega*t/2)**2
At T_⊥ = π/ω: P = 0

Numerical Verification


Figure: Survival probability and the orthogonality time

Code
%matplotlib inline
import numpy as np
from scipy.linalg import expm
import matplotlib.pyplot as plt

omega = 2.0
sx = np.array([[0, 1], [1, 0]], dtype=complex)
H = omega / 2 * sx
psi0 = np.array([1, 0], dtype=complex)
T_perp = np.pi / omega

t = np.linspace(0, 2 * T_perp, 400)
surv = np.array([abs(psi0.conj() @ expm(-1j * H * tt) @ psi0) ** 2 for tt in t])

fig, ax = plt.subplots(figsize=(6.4, 4.0))
ax.plot(t, surv, color='navy', lw=2,
        label=r'$|\langle\psi(0)|\psi(t)\rangle|^2$')
ax.axvline(T_perp, color='crimson', ls=':', lw=2)
ax.plot([T_perp], [0.0], 'o', color='crimson')
ax.annotate(r'$T_\perp=\pi/(2\Delta H)$', xy=(T_perp, 0.0),
            xytext=(T_perp * 1.04, 0.22), color='crimson',
            arrowprops=dict(arrowstyle='->', color='crimson'))
ax.set_xlabel(r'time $t$')
ax.set_ylabel('survival probability')
ax.set_title('Survival probability and the orthogonality time')
ax.set_xticks([0, T_perp, 2 * T_perp])
ax.set_xticklabels(['0', r'$T_\perp$', r'$2T_\perp$'])
ax.set_ylim(-0.03, 1.03)
ax.legend()
plt.tight_layout()
plt.show()

Takeaway

Hamiltonian evolution is a constant-speed geodesic on \(U(D)\), with speed \(\sqrt{\mathrm{Tr}(H^2)}\). For \(|0\rangle\) under \(H=(\omega/2)\sigma_x\) the survival probability is \(\cos^2(\omega t/2)\), which first vanishes exactly at \(T_\perp=\pi/\omega\), saturating the Mandelstam-Tamm bound.

Code
import numpy as np
from scipy.linalg import expm

omega = 2.0
sx = np.array([[0,1],[1,0]], dtype=complex)
H = omega/2 * sx
psi0 = np.array([1, 0], dtype=complex)

T_perp = np.pi / omega
delta_H = omega / 2

print(f"ω = {omega}, ΔH = {delta_H}, T_⊥ = π/ω = {T_perp:.4f}")
print(f"Speed = ω/√2 = {omega/np.sqrt(2):.4f}")
print(f"Length at T_⊥ = π/√2 = {np.pi/np.sqrt(2):.4f}")
print()

times = np.linspace(0, 2*T_perp, 9)
print(f"{'t/T⊥':>8s}  {'|⟨0|ψ(t)⟩|²':>14s}")
print(f"{'─'*8:>8s}  {'─'*14:>14s}")
for t_val in times:
    U = expm(-1j * H * t_val)
    p = abs(psi0.conj() @ U @ psi0)**2
    print(f"{t_val/T_perp:8.3f}  {p:14.6f}")

# Check orthogonality at T_perp
U_perp = expm(-1j * H * T_perp)
surv = abs(psi0.conj() @ U_perp @ psi0)**2
assert surv < 1e-10, f"Survival = {surv}"
print(f"\nSurvival at T_⊥ = {surv:.2e}: bound saturated.")
ω = 2.0, ΔH = 1.0, T_⊥ = π/ω = 1.5708
Speed = ω/√2 = 1.4142
Length at T_⊥ = π/√2 = 2.2214

    t/T⊥     |⟨0|ψ(t)⟩|²
────────  ──────────────
   0.000        1.000000
   0.250        0.853553
   0.500        0.500000
   0.750        0.146447
   1.000        0.000000
   1.250        0.146447
   1.500        0.500000
   1.750        0.853553
   2.000        1.000000

Survival at T_⊥ = 0.00e+00: bound saturated.

References

  • Braunstein and Caves, Statistical distance and the geometry of quantum states, Physical Review Letters (1994).
  • Provost and Vallee, Riemannian structure on manifolds of quantum states, Communications in Mathematical Physics (1980).
  • Bengtsson and Zyczkowski, Geometry of Quantum States: An Introduction to Quantum Entanglement, Cambridge University Press (2017).
  • Płodzień, Information Scrambling, Quantum Chaos, and Haar-Random States, lecture notes (2025). arXiv:2511.14397