Quantum Channels
A quantum channel is a completely positive, trace-preserving (CPTP) map that describes the evolution of an open quantum system.
Every channel has a Kraus representation:
where are Kraus operators satisfying .
Depolarizing Channel
The depolarizing channel replaces the input state with the maximally mixed state with probability :
For a single qubit ():
Its Kraus operators are:
Amplitude Damping Channel
The amplitude damping channel models energy relaxation (T1 decay):
where is the damping parameter. This channel:
- Maps (ground state is stable)
- Maps (decay to ground)
Phase Damping Channel
The phase damping channel (dephasing) destroys quantum coherence without energy loss:
In the density matrix basis:
Phase damping suppresses off-diagonal elements at rate .
Channel Properties
Trace preservation: ensures .
Complete positivity: maps positive semi-definite operators to positive semi-definite operators.
Unitary equivalence: Any channel can be written as for some unitary on a larger Hilbert space (Stinespring dilation).
Channel capacity: The maximum rate of reliable information transmission through is:
Quantum Process Tomography
Quantum process tomography (QPT) fully characterizes a quantum channel by measuring its action on a basis of input states.
For a -dimensional system, QPT requires linearly independent input states.
The process is reconstructed as a chi matrix :
QPT scales exponentially with qubit count, but randomized benchmarking provides efficient estimates of average error rates.
Python: Channel Simulation
import numpy as np
def depolarizing_channel(rho, p):
# Apply depolarizing channel.
d = rho.shape[0]
return (1 - p) * rho + (p / d) * np.eye(d, dtype=complex)
def amplitude_damping(rho, gamma):
# Apply amplitude damping channel.
E0 = np.array([[1, 0], [0, np.sqrt(1-gamma)]], dtype=complex)
E1 = np.array([[0, np.sqrt(gamma)], [0, 0]], dtype=complex)
return E0 @ rho @ E0.conj().T + E1 @ rho @ E1.conj().T
def phase_damping(rho, lam):
# Apply phase damping channel.
E0 = np.array([[1, 0], [0, np.sqrt(1-lam)]], dtype=complex)
E1 = np.array([[0, 0], [0, np.sqrt(lam)]], dtype=complex)
return E0 @ rho @ E0.conj().T + E1 @ rho @ E1.conj().T
rho = np.array([[0.7, 0.3], [0.3, 0.3]], dtype=complex)
rho_depol = depolarizing_channel(rho, 0.1)
print("After depolarizing:", np.round(rho_depol, 4))
rho_amp = amplitude_damping(rho, 0.3)
print("After amp damping:", np.round(rho_amp, 4))
rho_phase = phase_damping(rho, 0.2)
print("After phase damp:", np.round(rho_phase, 4))
This demonstrates three fundamental quantum noise channels.
Channel Capacities
The classical capacity of a quantum channel:
The quantum capacity:
The coherent information can be negative, making quantum capacity harder to compute than classical capacity.