diff --git a/src/thesis/chapters/3_fault_tolerant_qec.tex b/src/thesis/chapters/3_fault_tolerant_qec.tex index 37d10a8..886a5bd 100644 --- a/src/thesis/chapters/3_fault_tolerant_qec.tex +++ b/src/thesis/chapters/3_fault_tolerant_qec.tex @@ -3,41 +3,101 @@ % Intro -\content{Syndrome extraction circuitry itself introduces errors} -\content{High level explanation of fault tolerance (with figure)} -\content{Mathematical definition of fault tolerance} +An important challenge of \ac{qec} that was recognized early on is +the fact that the error correction machinery itself may introduce new +errors \cite[Sec.~III]{shor_scheme_1995}. +Specifically for stabilizer codes, errors may happen during the +syndrome extraction process, since it is implemented in quantum hardware itself. +We call the errors the \ac{qec} procedure is supposed to correct +\emph{input errors} and the errors introduced by the procedure itself +\emph{internal errors}. +In order to be \emph{fault-tolerant}, the procedure must be able to +address both types of errors. + +% Definition of fault tolerance + +% TODO: Proper consideration with number of errors +We model the possible occurrence of errors during any processing +stage as different \emph{error locations} $E_i,~i\in \{1,\ldots,N\}$ +in the circuit. +$N \in \mathbb{N}$ is the total number of error locations. +The \emph{circuit error vector} $\bm{e} \in \{0,1\}^N$ is a vector +indicating which errors occurred, with +\begin{align*} + e_i := + \begin{cases} + 1, & \text{Error $E_i$ occurred} \\ + 0, & \text{otherwise} + \end{cases} + .% +\end{align*} +\autoref{fig:fault_tolerance_overview} illustrates the flow of errors. +A \ac{qec} procedure is deemed fault tolerant if +\cite[Def.~5]{gottesman_introduction_2009} +\begin{align*} + % tex-fmt: off + \text{A)} + % tex-fmt: on + \hspace{5mm} & \lVert \bm{e}_\text{output} \rVert + \le \lVert \bm{e}_\text{internal} \rVert + \hspace{5mm} \forall\, + \bm{e}_\text{input}, \bm{e}_\text{internal} \in \{0,1\}^N : + \lVert \bm{e}_\text{internal} \rVert \le t \\ + % tex-fmt: off + \text{B)} + % tex-fmt: on + \hspace{5mm} & \lVert \bm{e}_\text{output} \rVert = 0 + \hspace{19.3mm} \forall\, + \bm{e}_\text{input}, \bm{e}_\text{internal} \in \{0,1\}^N : + \lVert \bm{e}_\text{input} \rVert + \lVert \bm{e}_\text{internal} + \rVert \le t + , +\end{align*} +where $t = \lfloor (d_\text{min} -1)/2 \rfloor$ is the number of +errors the original code is able to correct. +Condition A limits the spread of input errors during the error +correction process. +Condition B means that as long as there are few enough internal and +input errors, the scheme should be able to correct all of them. % Practical considerations +% TODO: Are the fault-tolerant QEC procedures where we don't perform +% multiple measurement rounds? + \content{We generally need to perform multiple rounds of syndrome extraction} \content{The number of rounds of syndrome extraction is usually chosen equal to the $d_\text{min}$ of the code} \content{One-shot decoding property} -\begin{figure}[H] +\begin{figure}[t] \centering \begin{tikzpicture} \node[rectangle, draw, fill=orange!20, minimum - height=2cm, minimum width=2.5cm, align=left] at (0,0) - (internal) {Internal\\ Errors}; + height=2cm, minimum width=2.5cm, align=center] at (0,0) + (internal) {Internal Errors\\ $\bm{e}_\text{internal}$}; \node[signal, draw, fill=orange!20, minimum height=2cm, - minimum width=2.5cm, align=left, signal pointer angle=140] - at (-2.45, 0) (input) {Input\\ Errors}; + minimum width=2.5cm, align=center, signal pointer angle=140] + at (-2.8, 0) (input) {Input Errors \\ $\bm{e}_\text{input}$}; - \node at (1.97,0) {\huge =}; + \node at (1.99,0) {\huge =}; \node[rectangle, draw, fill=orange!20, minimum height=2cm, - minimum width=2.5cm, align=left] at (4,0) (output) - {Output\\ Errors}; + minimum width=2.5cm, align=center] at (4,0) (output) + {Output Errors\\ $\bm{e}_\text{output}$}; \node[above] at (input.north) {\small Input State}; \node[above] at (internal.north) {\small QEC}; \node[above] at (output.north) {\small Output State}; \end{tikzpicture} - \caption{Sources of error in a fault-tolerant \ac{qec} system.} + \caption{ + Sources of error in a fault-tolerant \ac{qec} system. + Adapted from \cite[Figure~2]{derks_designing_2025}. + } + \label{fig:fault_tolerance_overview} \end{figure} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -46,60 +106,84 @@ chosen equal to the $d_\text{min}$ of the code} % Intro -\content{Explanation of what a noise model is} -\content{Mention there are different types of noise models, each with -different possible error locations} +% TODO: Different variable name for N? +We collect the probabilities of error at each location in the +\emph{noise model}, a vector $\bm{p} \in \mathbb{R}^N$, where $N \in +\mathbb{N}$ is the number of possible error locations. +There are different types of noise models, each allowing for +different error locations in the circuit. % Figure intro -\content{\autoref{fig:pure_syndrome_extraction} shows the syndrome - extraction circuit of a three-qubit repetition code with stabilizers - $Z_1Z_2$ and $Z_2Z_3$. This code is only able to deal with X errors. - We will use it as a propotypical model to examine the different types -of noise models} -\content{This is now a concrete implementation of the syndrome - measurement circuit using CNOT gates, as opposed to the system-level -view in \autoref{subsec:Stabilizer Codes}} -\content{\autoref{fig:noise_model_types} shows a number of diffent -types of noise models} +We will illustrate the most widely used types of error models on the +example of the three-qubit repetition code for $X$ errors. +This code has stabilizers $Z_1Z_2$ and $Z_2Z_3$. +Figure \autoref{fig:pure_syndrome_extraction} shows the respective +check matrix and syndrome extraction circuit. +Note that this is a concrete implementation using CNOT gates, as +opposed to the system-level view introduced in +\autoref{subsec:Stabilizer Codes}. +We visualize the different types of noise models in +\autoref{fig:noise_model_types}. + +% Data and ancilla qubits + +\content{Introduce data qubits} + +\content{\textbf{TODO:} Write something about the code/circuit distance} % Bit-flip noise -\content{Bit-flip noise} -\content{Introduce \emph{data qubits}} -\content{Only X errors on data qubits} -\content{Most similar to classical channel coding} +The simplest type of noise model is \emph{bit-flip} noise. +This corresponds to the classical \ac{bsc}, i.e., only $X$ errors on the +data qubits are possible \cite[Appendix~A]{gidney_new_2023}. +Note that we cannot use bit-flip noise to develop fault-tolerant +systems, as it doesnt't account for errors during the syndrome extraction. +This is shown in \autoref{subfig:bit_flip}. \\ +\content{Some more words on bit-flip noise} \content{\textbf{TODO}: What is this useful for? Just as a first step?} % Depolarizing channel -\content{Depolarizing channel} -\content{X/Y/Z errors on data qubits} +Extending bit-flip noise to consider $X,Z$ or $Y$ instead of just $X$ errors, +we obtain the \emph{depolarizing channel} +\cite[Sec.~7.6]{gottesman_stabilizer_1997}, depicted in +\autoref{subfig:depolarizing}. \\ +\content{Some more words on the depolarizing channel} \content{\textbf{TODO}: What does this model? Memory experiment with ideal syndrome extraction?} \content{\textbf{TODO}: Why is it called depolarizing?} +\content{\textbf{TODO:} Write something about ``code capacity'' noise models} + % Phenomenological noise -\content{Phenomenological noise} -\content{First noise model that considers errors during syndrome extraction} -\content{X errors before each syndrome extraction round} -\content{X errors before measurements} +The \emph{phenomenological noise model} is the first type of noise model we +examine that accounts for faults during the syndrome extraction. +Here, we consider multiple rounds of syndrome measurements with a +depolarizing channel before each round. +Additionally, we allow for measurement errors by having $X$ error +locations right before each measurement \cite[Appendix~A]{gidney_new_2023}. +Note that it is enough to only consider $X$ errors at this point, +since that is the only type of error directly affecting the +measurement outcomes. +This model is depicted in \autoref{subfig:phenomenological}.\\ \content{\textbf{TODO}: Why is this useful? Derks et al. mentioned something about it being useful to derive fault-tolerant circuits} -\content{\textbf{TODO}: Make sure phenomenological noise is only X errors} % Circuit-level noise -\content{Circuit-level noise} -\content{This is generally what we strive to be able to decode under} -\content{X/Y/Z errors before each syndrome extraction round} -\content{$n$-qubit Pauli errors after each $n$-qubit Pauli gate} -\content{Define $n$-qubit Pauli errors} -\content{X errors right before the measurements} -\content{Note that the only errors right before the measurements that - have any effect on the measurement outcomes are X errors. That is why -it is enough to consider this type of error at this point in the circuit.} +The most general type of noise model is \emph{circuit-level noise}. +Here we not only consider noise inbetween syndrome extraction rounds +and at the measurements, but at each gate. +Specifically, we allow arbitrary for $n$-qubit Pauli errors after +each $n$-qubit gate. +An $n$-qubit Pauli error is simply a series of correlated Pauli +errors on each individual related qubit. +Circuit-level noise is shown in \autoref{subfig:circuit_level}. \\ +\content{\textbf{TODO}: Why do we need this? Derks et al. mentioned + something about needing it for actual simulations, even when using +phenomenological noise for derivations.} % Different noise models for circuit-level noise @@ -107,16 +191,20 @@ it is enough to consider this type of error at this point in the circuit.} \content{In this work we only consider standard circuit-based depolarizing noise} -\begin{figure}[H] +\begin{figure}[t] \centering \begin{minipage}{0.5\textwidth} \begin{align*} \bm{H} = - \begin{pmatrix} - 1 & 1 & 0 \\ - 0 & 1 & 1 - \end{pmatrix} + \left[ + \begin{array}{ccc|ccc} + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 & 1 & 0 \\ + 0 & 0 & 0 & 0 & 1 & 1 + \end{array} + \right] \end{align*} \end{minipage}% \begin{minipage}{0.5\textwidth} @@ -138,7 +226,7 @@ depolarizing noise} \label{fig:pure_syndrome_extraction} \end{figure} -\begin{figure}[H] +\begin{figure}[t] \centering \newcommand{\xerr}{\gate[style={fill=KITblue!50}]{\phantom{1}}} @@ -181,6 +269,7 @@ depolarizing noise} % tex-fmt: on \subcaption{Bit-flip noise.} + \label{subfig:bit_flip} \end{minipage} \vspace*{5mm} @@ -198,6 +287,7 @@ depolarizing noise} % tex-fmt: on \subcaption{Depolarizing channel.} + \label{subfig:depolarizing} \end{minipage} \vspace*{5mm} @@ -206,15 +296,16 @@ depolarizing noise} \centering % tex-fmt: off \begin{quantikz}[row sep=4mm, column sep=4mm] - \lstick[3]{$\ket{\psi}_\text{L}$} & \xerr & \ctrl{3} & & & & & & \xerr & & \setwiretype{n} & \\ - & \xerr & & \ctrl{2} & \ctrl{3} & & & & \xerr & & \setwiretype{n} & \gate[style={left,draw=none}]{\cdots} \\ - & \xerr & & & & \ctrl{2} & & & \xerr & & \setwiretype{n} & \\ - \lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & \xerr & \meter{} & \setwiretype{c} \\ - \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & \xerr & \meter{} & \setwiretype{c} + \lstick[3]{$\ket{\psi}_\text{L}$} & \xyzerr & \ctrl{3} & & & & & & \xyzerr & & \setwiretype{n} & \\ + & \xyzerr & & \ctrl{2} & \ctrl{3} & & & & \xyzerr & & \setwiretype{n} & \gate[style={left,draw=none}]{\cdots} \\ + & \xyzerr & & & & \ctrl{2} & & & \xyzerr & & \setwiretype{n} & \\ + \lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & \xerr & \meter{} & \setwiretype{c} \\ + \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & \xerr & \meter{} & \setwiretype{c} \end{quantikz} % tex-fmt: on \subcaption{Phenomenological noise.} + \label{subfig:phenomenological} \end{minipage} \vspace*{5mm} @@ -232,6 +323,7 @@ depolarizing noise} % tex-fmt: on \subcaption{Circuit-level noise.} + \label{subfig:circuit_level} \end{minipage} \end{minipage}% \hfill% @@ -263,12 +355,11 @@ depolarizing noise} % Core idea -\content{Model additional error locations in the code} \content{Construct ``circuit code'' from original code} % Benefits -\content{Benefits of this approach} +\content{Benefits of this approach \cite[Sec.~4.2]{derks_designing_2025}} %%%%%%%%%%%%%%%% \subsection{Measurement Syndrome Matrix}