From f4c7e40cd5d85b0cd62ceaa08b13923a28ad3a08 Mon Sep 17 00:00:00 2001 From: VVA2024 Date: Sun, 14 Jul 2024 17:38:46 -0400 Subject: [PATCH] ampdamp --- .../constant_excitation/dual_rail.yml | 9 ++-- .../oscillators/fock_state/fock_state.yml | 2 + codes/quantum/oscillators/oscillators.yml | 4 +- codes/quantum/properties/block/ampdamp.yml | 42 +++++++++++++++++++ .../hamiltonian/constant_excitation.yml | 4 +- codes/quantum/qubits/nonstabilizer/jump.yml | 1 + .../nonstabilizer/self_complementary.yml | 4 +- .../gnu/gnu_permutation_invariant.yml | 2 + codes/quantum/qubits/qubits_into_qubits.yml | 2 +- .../small_distance/small/stab_4_2_2.yml | 4 +- .../qubits/stabilizer/css/quantum_parity.yml | 2 + .../qubits/stabilizer/qubit_stabilizer.yml | 4 ++ 12 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 codes/quantum/properties/block/ampdamp.yml diff --git a/codes/quantum/oscillators/fock_state/constant_excitation/dual_rail.yml b/codes/quantum/oscillators/fock_state/constant_excitation/dual_rail.yml index 16b70b345..53911fce7 100644 --- a/codes/quantum/oscillators/fock_state/constant_excitation/dual_rail.yml +++ b/codes/quantum/oscillators/fock_state/constant_excitation/dual_rail.yml @@ -29,7 +29,7 @@ features: - 'Error-detecting \(CCZ\) and \(cSWAP\) gates using three-level ancilla \cite{arxiv:2212.11196}.' fault_tolerance: - - 'Dual-rail qubits can be used to convert leakage and amplitude damping noise into erasure noise \cite{arxiv:2208.05461}.' + - 'Dual-rail qubits can be used to convert leakage and amplitude damping noise into erasure noise \cite{arxiv:0710.1052,arxiv:2208.05461}.' threshold: - 'Between \(1.78\%\) and \(11.5\%\) with faulty photon detectors when repeatedly concatenating with the Steane code \cite{arxiv:quant-ph/0502101}.' @@ -47,17 +47,18 @@ notes: relations: - parents: - code_id: one_hot_quantum cousins: - code_id: quantum_concatenated detail: 'The KLM protocol, one of the first protocols for fault-tolerant quantum computation, utilizes concatenations of the dual-rail with a stabilizer code \cite{doi:10.1038/35051009}. Concatenating the dual-rail code with an \([[n,k,d]]\) stabilizer code yields an \([[2n,k,d]]\) constant-excitation code \cite{arxiv:2010.00538} that protects against \(d-1\) amplitude damping errors \cite{arxiv:1001.2356}.' + - code_id: ampdamp + detail: 'Dual-rail qubits can be used to convert leakage and amplitude damping noise into erasure noise \cite{arxiv:0710.1052,arxiv:2208.05461}. Concatenating the dual-rail code with an \([[n,k,d]]\) stabilizer code yields an \([[2n,k,d]]\) constant-excitation code \cite{arxiv:2010.00538} that protects against \(d-1\) amplitude damping errors \cite{arxiv:1001.2356}.' - code_id: quantum_parity - detail: 'An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}.' + detail: 'An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}. More generally, an \([[m^2,1,m]]\) QPC corrects \(m-1\) amplitude damping errors \cite{arxiv:1001.2356}.' - code_id: stab_4_2_2 - detail: 'An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}.' + detail: 'An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}. More generally, an \([[m^2,1,m]]\) QPC corrects \(m-1\) amplitude damping errors \cite{arxiv:1001.2356}.' - code_id: cluster_state detail: 'The KLM protocol can be combined cluster states in various ways \cite{arxiv:quant-ph/0303008,arxiv:quant-ph/0402005,arxiv:quant-ph/0405157}.' diff --git a/codes/quantum/oscillators/fock_state/fock_state.yml b/codes/quantum/oscillators/fock_state/fock_state.yml index 63a9399e5..64cb83b20 100644 --- a/codes/quantum/oscillators/fock_state/fock_state.yml +++ b/codes/quantum/oscillators/fock_state/fock_state.yml @@ -20,6 +20,8 @@ protection: 'Code distance \(d\) is the minimum distance (assuming some metric) relations: parents: - code_id: qudits_into_oscillators + - code_id: ampdamp + detail: 'Fock-state codes are designed to protect against AD noise.' cousins: - code_id: bits_into_bits detail: 'Fock-state code distance is a natural extension of Hamming distance between binary strings.' diff --git a/codes/quantum/oscillators/oscillators.yml b/codes/quantum/oscillators/oscillators.yml index 56761be2c..86a267026 100644 --- a/codes/quantum/oscillators/oscillators.yml +++ b/codes/quantum/oscillators/oscillators.yml @@ -45,7 +45,9 @@ protection: | \subsection{Loss and gain operators} - An error set relevant to \hyperref[code:fock_state]{Fock-state bosonic} codes is the set of loss operators associated with the \textit{amplitude damping} (a.k.a. \textit{photon loss} or \textit{attenuation}) noise channel, a common form of physical noise in bosonic systems. For a single mode, loss operators are proportional to powers of the mode's annihilation operator \(a=(\hat{x}+i\hat{p})/\sqrt{2}\), where \(\hat x\) (\(\hat p\)) is the mode's position (momentum) operator, and with the power signifying the number of particles lost during the error. For multiple modes, error set elements are tensor products of elements of the single-mode error set. A definition of distance associated with this error set is the minimum weight of a loss error that implements a nontrivial logical operation in the code. + An error set relevant to \hyperref[code:fock_state]{Fock-state bosonic} codes is the set of loss operators associated with the \hyperref[code:ampdamp]{amplitude damping channel}, a common form of physical noise in bosonic systems. + For a single mode, loss operators are proportional to powers of the mode's annihilation operator \(a=(\hat{x}+i\hat{p})/\sqrt{2}\), where \(\hat x\) (\(\hat p\)) is the mode's position (momentum) operator, and with the power signifying the number of particles lost during the error. + For multiple modes, error set elements are tensor products of elements of the single-mode error set. \subsection{Number-phase operators} diff --git a/codes/quantum/properties/block/ampdamp.yml b/codes/quantum/properties/block/ampdamp.yml new file mode 100644 index 000000000..2651f5599 --- /dev/null +++ b/codes/quantum/properties/block/ampdamp.yml @@ -0,0 +1,42 @@ +####################################################### +## This is a code entry in the error correction zoo. ## +## https://github.com/errorcorrectionzoo ## +####################################################### + +code_id: ampdamp +# Qubit or bosonic + +name: 'Amplitude-damping (AD) code' + +description: | + Block quantum code on either qubits or bosonic modes that is designed to detect and correct qubit or bosonic amplitude (AD) errors, respectively. + + The \textit{amplitude damping channel} is a bosonic channel that models loss of particles in the bosonic mode (a.k.a. \textit{photon loss} or \textit{attenuation}). + Its Kraus operators are proportional to powers of a mode's annihilation operator \(a\), with the power signifying the number of particles lost during the error, + \begin{align} + E_{\ell}=\left(\frac{\gamma}{1-\gamma}\right)^{\ell/2}\frac{a^{\ell}}{\sqrt{\ell!}}\left(1-\gamma\right)^{\hat{n}/2}\,, + \end{align} + where \(\gamma\in[0,1)\) is the noise rate \cite{doi:10.1088/0954-8998/1/2/005,arxiv:1708.05010}. + Restricting the channel to the first two Fock states \(\{|0\rangle,|1\rangle\}) yields the non-Pauli qubit amplitude damping channel, which requires protecting against the loss error \(E_1\propto X+iY\) instead of \(X\) and \(Y\) Pauli errors individually. + Both channels are called AD since the context makes clear which one is being referred to. + +protection: | + A definition of distance associated with amplitude damping is the minimum weight of a tensor products of non-zero loss errors (\(\ell\neq 0\)) that implement a nontrivial logical operation in the code. + Certain codes also have intrinsic protection against AD, such as constant-excitation codes or self-complementary codes. + +relations: + parents: + - code_id: block_quantum + cousins: + - code_id: qubit_css + detail: 'An \([[n,k,d_Z=t+1,d_X=2t+1]]\) qubit CSS code protects against \(t\) amplitude damping errors \cite[Sec. 8.7]{arxiv:quant-ph/9705052}\cite{arxiv:1001.2356}.' + - code_id: quantum_concatenated + detail: 'Concatenated quantum codes can protect against amplitude damping \cite{arxiv:1601.07423}.' + + +# Begin Entry Meta Information +_meta: + # Change log - most recent first + changelog: + - user_id: VictorVAlbert + date: '2024-07-14' diff --git a/codes/quantum/properties/hamiltonian/constant_excitation.yml b/codes/quantum/properties/hamiltonian/constant_excitation.yml index 306419641..2b5d037e7 100644 --- a/codes/quantum/properties/hamiltonian/constant_excitation.yml +++ b/codes/quantum/properties/hamiltonian/constant_excitation.yml @@ -47,8 +47,8 @@ relations: Any \([[n,k,d]]\) CSS code can be made into an \([[mn,k,>d]]\) CE code \cite{doi:10.1109/ISIT45174.2021.9518206}. - code_id: qsc detail: 'QSC (CE) codewords are superpositions of coherent states (Fock states) with the same energy.' - - code_id: qubit_stabilizer - detail: 'Concatenating the dual-rail code with an \([[n,k,d]]\) stabilizer code yields an \([[2n,k,d]]\) constant-excitation code \cite{arxiv:2010.00538}.' + - code_id: ampdamp + detail: 'Fock-state CE codes are protected from identical amplitude damping acting on all modes because the damping acts on all codewords identically \cite{doi:10.1103/PhysRevA.56.1114}.' # Begin Entry Meta Information diff --git a/codes/quantum/qubits/nonstabilizer/jump.yml b/codes/quantum/qubits/nonstabilizer/jump.yml index 4991ed5d0..f841cb962 100644 --- a/codes/quantum/qubits/nonstabilizer/jump.yml +++ b/codes/quantum/qubits/nonstabilizer/jump.yml @@ -27,6 +27,7 @@ notes: relations: parents: - code_id: qubits_into_qubits + - code_id: ampdamp - code_id: constant_excitation cousins: - code_id: stab_4_2_2 diff --git a/codes/quantum/qubits/nonstabilizer/self_complementary.yml b/codes/quantum/qubits/nonstabilizer/self_complementary.yml index 57c2f22eb..67840fe4c 100644 --- a/codes/quantum/qubits/nonstabilizer/self_complementary.yml +++ b/codes/quantum/qubits/nonstabilizer/self_complementary.yml @@ -18,12 +18,14 @@ description: | protection: | - Self-complementary codes automatically protect against a single \(Z\) error \cite{arxiv:quant-ph/0701065}, and can protect against a single amplitude damping error \cite{arxiv:0907.5149}. + Self-complementary codes automatically protect against a single \(Z\) error \cite{arxiv:quant-ph/0701065}, and can protect against a single amplitude damping error \cite{arxiv:0712.2586,arxiv:0907.5149}. relations: parents: - code_id: qubits_into_qubits + - code_id: ampdamp + detail: 'Self-complementary quantum codes consisting of codewords that are sufficient spaced apart in the configuration space correct at least one amplitude damping error \cite[Thm. 2.5]{arxiv:0712.2586}\cite[Thm. 2]{arxiv:0907.5149}.' cousins: - code_id: binary_linear detail: 'A linear binary code is called \textit{self-complementary} if, for each codeword \(c\), its negation \(\overline{c}\) is also a codeword.' diff --git a/codes/quantum/qubits/permutation_invariant/gnu/gnu_permutation_invariant.yml b/codes/quantum/qubits/permutation_invariant/gnu/gnu_permutation_invariant.yml index 169b02c51..c8dcc26d9 100644 --- a/codes/quantum/qubits/permutation_invariant/gnu/gnu_permutation_invariant.yml +++ b/codes/quantum/qubits/permutation_invariant/gnu/gnu_permutation_invariant.yml @@ -37,6 +37,8 @@ relations: parents: - code_id: qudit_gnu_permutation_invariant detail: 'Qudit GNU codes encoding logical qubits reduce to GNU codes.' + - code_id: ampdamp + detail: 'GNU codes protect approximately against amplitude damping errors.' cousins: - code_id: combinatorial_permutation_invariant detail: 'Combinatorial PI codes \(Q_{g,(m-1)/2,g-1,+}\) are GNU codes for odd \(m\) \cite[Prop. 5.4]{arxiv:2310.05358}.' diff --git a/codes/quantum/qubits/qubits_into_qubits.yml b/codes/quantum/qubits/qubits_into_qubits.yml index 5727fde86..4f000ccbd 100644 --- a/codes/quantum/qubits/qubits_into_qubits.yml +++ b/codes/quantum/qubits/qubits_into_qubits.yml @@ -48,7 +48,7 @@ protection: | A quantum channel whose Kraus operators are Pauli strings is called a \textit{Pauli channel}, and such channels are typically more tractable than general, non-Pauli channels. Relevant Pauli channels include dephasing noise and depolarizing noise (a.k.a. Werner-Holevo channel \cite{arxiv:quant-ph/0203003}). - Relevant non-Pauli channels are amplitude damping (which requires protection against \(X+iY\) instead of \(X,Y\) individually), erasure (which maps all qubit states into a third state \(|e\rangle\) outside of the qubit Hilbert space), and biased erasure (in which case only the \(|1\rangle\) qubit state is mapped to \(|e\rangle\)). + Relevant non-Pauli channels are \hyperref[code:ampdamp]{amplitude damping channel}, erasure (which maps all qubit states into a third state \(|e\rangle\) outside of the qubit Hilbert space), and biased erasure (in which case only the \(|1\rangle\) qubit state is mapped to \(|e\rangle\)). Noise can be correlated in space or in time, with the latter being an example of a non-Markovian phenomenon \cite{arxiv:2012.01894}. \subsection{Bounds on code parameters} diff --git a/codes/quantum/qubits/small_distance/small/stab_4_2_2.yml b/codes/quantum/qubits/small_distance/small/stab_4_2_2.yml index b63a5707c..f30d1989a 100644 --- a/codes/quantum/qubits/small_distance/small/stab_4_2_2.yml +++ b/codes/quantum/qubits/small_distance/small/stab_4_2_2.yml @@ -102,6 +102,8 @@ relations: detail: 'The \([[4,2,2]]\) code can be derived from the five-qubit code using a protocol that converts an \([[n,k,d]]\) code into an \([[n-1, k+1, d-1]]\) code \cite[Sec. 3.5]{arxiv:quant-ph/9705052}.' - code_id: approximate_qecc detail: 'The \([[4,1,2]]\) subcode \(\{|\overline{00}\rangle,|\overline{10}\rangle\}\) approximately corrects a single amplitude damping error \cite{arxiv:quant-ph/9704002}.' + - code_id: ampdamp + detail: 'The \([[4,1,2]]\) subcode \(\{|\overline{00}\rangle,|\overline{10}\rangle\}\) approximately corrects a single amplitude damping error \cite{arxiv:quant-ph/9704002}.' - code_id: binomial detail: '\([[4,1,2]]\) subcode consisting of \(|\overline{00}\rangle\) and any other codeword reduces to the \(0,2,4\) binomial code when the basis labels in each codeword are written as in base-ten. Such a mapping can be generalized \cite{manual:{Linshu Li, private communication, 2018}}.' @@ -114,7 +116,7 @@ relations: Concatenations of quantum Hamming codes with the \([[4,2,2]]\) and \([[6,2,2]]\) \(C_6\) codes yield fault-tolerant quantum computation with constant space and quasi-polylogarithmic time overheads \cite{arxiv:2207.08826,arxiv:2402.09606}.' Concatenating the \([[4,2,2]]\) code with the surface code is equivalent to removing stabilizer generators from the 4.8.8 color code \cite{arxiv:1604.04062}. The \([[4,2,2]]\) code can be concatenated with two copies of the surface code to yield the 4.6.12 color code \cite{arxiv:1604.04062}. - An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}. + An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}. More generally, an \([[m^2,1,m]]\) QPC corrects \(m-1\) amplitude damping errors \cite{arxiv:1001.2356}. - code_id: cws detail: 'A \([[4,1,2]]\) subcode can be thought of as a CWS code \cite{arxiv:1407.2777}.' diff --git a/codes/quantum/qubits/stabilizer/css/quantum_parity.yml b/codes/quantum/qubits/stabilizer/css/quantum_parity.yml index 370cd9e5b..f6f184fa9 100644 --- a/codes/quantum/qubits/stabilizer/css/quantum_parity.yml +++ b/codes/quantum/qubits/stabilizer/css/quantum_parity.yml @@ -55,6 +55,8 @@ notes: relations: parents: - code_id: generalized_shor + - code_id: amdamp + detail: 'An \([[8,1,2]]\) QPC correcting a single amplitude damping error is equivalent to a concatenation of the \(\{|\overline{01}\rangle,|\overline{11}\rangle\}\) (constant-excitation) subcode of the \([[4,2,2]]\) code with the dual-rail code \cite{arxiv:quant-ph/0103042,arxiv:quant-ph/0501184,arxiv:2010.00538}. More generally, an \([[m^2,1,m]]\) QPC corrects \(m-1\) amplitude damping errors \cite{arxiv:1001.2356}.' - code_id: group_quantum_parity detail: 'A \([[m_1 m_2,1,\min(m_1,m_2)]]_G\) group-based QPC reduces to a QPC for \(G=\mathbb{Z}_2\).' - code_id: quantum_lego diff --git a/codes/quantum/qubits/stabilizer/qubit_stabilizer.yml b/codes/quantum/qubits/stabilizer/qubit_stabilizer.yml index 082d028b8..2d65bd17f 100644 --- a/codes/quantum/qubits/stabilizer/qubit_stabilizer.yml +++ b/codes/quantum/qubits/stabilizer/qubit_stabilizer.yml @@ -181,6 +181,10 @@ relations: detail: 'Any stabilizer code can be single shot if sufficiently non-local high-weight stabilizer generators are used for syndrome measurements. These can be obtained with a Gaussian elimination procedure \cite{arxiv:1805.09271}.' - code_id: t-designs detail: 'Stabilizer states on \(n\) qubits form complex projective 3-designs \cite{arxiv:1510.02767}, while the Clifford group is a unitary 3-design \cite{arXiv:1510.02619,arXiv:1510.02769}.' + - code_id: constant_excitation + detail: 'Concatenating the dual-rail code with an \([[n,k,d]]\) stabilizer code yields an \([[2n,k,d]]\) constant-excitation code \cite{arxiv:2010.00538} that protects against \(d-1\) amplitude damping errors \cite{arxiv:1001.2356}.' + - code_id: ampdamp + detail: 'Concatenating the dual-rail code with an \([[n,k,d]]\) stabilizer code yields an \([[2n,k,d]]\) constant-excitation code \cite{arxiv:2010.00538} that protects against \(d-1\) amplitude damping errors \cite{arxiv:1001.2356}.' # Begin Entry Meta Information