# Quantum convolutional code

Quantum block codes are useful in quantum computing and in quantum communications. The encoding circuit for a large block code typically has a high complexity although those for modern codes do have lower complexity.
Quantum convolutional coding theory offers a different paradigm for coding quantum information. The convolutional structure is useful for a quantum communication scenario where a sender possesses a stream of qubits to send to a receiver. The encoding circuit for a quantum convolutional code has a much lower complexity than an encoding circuit needed for a large block code. It also has a repetitive pattern so that the same physical devices or the same routines can manipulate the stream of quantum information.
Quantum convolutional stabilizer codes borrow heavily from the structure of their classical counterparts. Quantum convolutional codes are similar because some of the qubits feed back into a repeated encoding unitary and give the code a memory structure like that of a classical convolutional code. The quantum codes feature online encoding and decoding of qubits. This feature gives quantum convolutional codes both their low encoding and decoding complexity and their ability to correct a larger set of errors than a block code with similar parameters.

## Definition

A quantum convolutional stabilizer code acts on a Hilbert space ${\mathcal {H}},$ which is a countably infinite tensor product of two-dimensional qubit Hilbert spaces indexed over integers ≥ 0 $\left\{{\mathcal {H}}_{i}\right\}_{i\in \mathbb {Z} ^{+}}$:
    ${\mathcal {H}}={\displaystyle \bigotimes \limits _{i=0}^{\infty }}\ {\mathcal {H}}_{i}.$
A sequence $\mathbf {A}$ of Pauli matrices $\left\{A_{i}\right\}_{i\in \mathbb {Z} ^{+}}$, where
    $\mathbf {A} ={\displaystyle \bigotimes \limits _{i=0}^{\infty }}\ A_{i},$
can act on states in ${\mathcal {H}}$. Let $\Pi ^{\mathbb {Z} ^{+}}$ denote the set of all Pauli sequences. The support supp$\left(\mathbf {A} \right)$ of a Pauli sequence $\mathbf {A}$ is the set of indices of the entries in $\mathbf {A}$ that are not equal to the identity. The weight of a sequence $\mathbf {A}$ is the size $\left\vert {\text{supp}}\left(\mathbf {A} \right)\right\vert$ of its support. The delay del$\left(\mathbf {A} \right)$ of a sequence $\mathbf {A}$ is the smallest index for an entry not equal to the identity. The degree deg$\left(\mathbf {A} \right)$ of a sequence $\mathbf {A}$ is the largest index for an entry not equal to the identity. E.g., the following Pauli sequence
    ${\begin{array}{cccccccc}I&X&I&Y&Z&I&I&\cdots \end{array}},$
has support $\left\{1,3,4\right\}$, weight three, delay one, and degree four. A sequence has finite support if its weight is finite. Let $F(\Pi ^{\mathbb {Z} ^{+}})$ denote the set of Pauli sequences with finite support. The following definition for a quantum convolutional code utilizes the set $F(\Pi ^{\mathbb {Z} ^{+}})$ in its description.
A rate $k/n$-convolutional stabilizer code with $0\leq k\leq n$ is a commuting set ${\mathcal {G}}$ of all $n$-qubit shifts of a basic generator set ${\mathcal {G}}_{0}$. The basic generator set ${\mathcal {G}}_{0}$ has $n-k$ Pauli sequences of finite support:
    ${\mathcal {G}}_{0}=\left\{\mathbf {G} _{i}\in F(\Pi ^{\mathbb {Z} ^{+}}):1\leq i\leq n-k\right\}.$
The constraint length $\nu$ of the code is the maximum degree of the generators in ${\mathcal {G}}_{0}$. A frame of the code consists of $n$ qubits.
A quantum convolutional code admits an equivalent definition in terms of the delay transform or $D$-transform. The $D$-transform captures shifts of the basic generator set ${\mathcal {G}}_{0}$. Let us define the $n$-qubit delay operator $D$ acting on any Pauli sequence $\mathbf {A} \in \Pi ^{\mathbb {Z} ^{+}}$ as follows:
    $D\left(\mathbf {A} \right)=I^{\otimes n}\otimes \mathbf {A.}$
We can write $j$ repeated applications of $D$ as a power of $D$:
    $D^{j}\left(\mathbf {A} \right)=I^{\otimes jn}\otimes \mathbf {A.}$
Let $D^{j}\left({\mathcal {G}}_{0}\right)$ be the set of shifts of elements of ${\mathcal {G}}_{0}$ by $j$. Then the full stabilizer ${\mathcal {G}}$ for the convolutional stabilizer code is
    ${\mathcal {G}}={\textstyle \bigcup \limits _{j\in \mathbb {Z} ^{+}}}D^{j}\left({\mathcal {G}}_{0}\right).$

## Operation

The operation of a convolutional stabilizer code is as follows. The protocol begins with the sender encoding a stream of qubits with an online encoding circuit such as that given in (Grassl and Roetteler 2006). The encoding circuit is online if it acts on a few blocks of qubits at a time. The sender transmits a set of qubits as soon as the first unitary finishes processing them. The receiver measures all the generators in ${\mathcal {G}}$ and corrects for errors as he receives the online encoded qubits. He finally decodes the encoded qubits with a decoding circuit. The qubits decoded from this convolutional procedure should be error free and ready for quantum computation at the receiving end.
A finite-depth circuit maps a Pauli sequence with finite weight to one with finite weight (Ollivier and Tillich 2004). It does not map a Pauli sequence with finite weight to one with infinite weight. This property is important because we do not want the decoding circuit to propagate uncorrected errors into the information qubit stream (Johannesson and Zigangirov 1999). A finite-depth decoding circuit corresponding to the stabilizer ${\mathcal {G}}$ exists by the algorithm given in (Grassl and Roetteler 2006).

## Example

Forney et al. provided an example of a rate-1/3 quantum convolutional code by importing a particular classical quaternary convolutional code (Forney and Guha 2005). Grassl and Roetteler determined a noncatastrophic encoding circuit for Forney et al.'s rate-1/3 quantum convolutional code (Grassl and Roetteler 2006). The basic stabilizer and its first shift are as follows:
    $\cdots {\begin{array}{|ccc|ccc|ccc|ccc|ccc|}I&I&I&X&X&X&X&Z&Y&I&I&I&I&I&I\\I&I&I&Z&Z&Z&Z&Y&X&I&I&I&I&I&I\\I&I&I&I&I&I&X&X&X&X&Z&Y&I&I&I\\I&I&I&I&I&I&Z&Z&Z&Z&Y&X&I&I&I\\\end{array}}\cdots$
The code consists of all three-qubit shifts of the above generators. The vertical bars are a visual aid to illustrate the three-qubit shifts of the basic generators. The code can correct for an arbitrary single-qubit error in every other frame.

## Extensions

Wilde and Brun have integrated the theory of entanglement-assisted stabilizer codes and quantum convolutional codes in a series of articles (Wilde and Brun 2007a, 2007b, 2008, 2009) to form a theory of entanglement-assisted quantum convolutional coding. This theory supposes that a sender and receiver share noiseless bipartite entanglement that they can exploit for protecting a stream of quantum information.
(Wilde 2009), building on work of (Ollivier and Tillich 2004) and (Grassl and Roetteler 2006), also showed how to encode these codes with quantum shift register circuits, a natural extension of the theory of classical shift register circuits.