[Feature]: two classical simulation algorithms for Clifford+T
circuits
#324
Labels
enhancement
New feature or request
Clifford+T
circuits
#324
Is your feature request related to a problem? Please describe.
The paper titled Improved classical simulation of quantum circuits dominated by Clifford gates[1] by Sergey and David extends the Gottesman-Knill theorem by providing two classical simulation algorithms for$Clifford+T$ quantum circuits by introducing new
algorithmic tools
forstabilizer simulators
in the following three verticals: gadgetized circuits (for decomposing magic states), stabilizer rank of magic states, and fast norm estimation algorithm.A$Clifford+T$ quantum circuit of length $m$ operating on $n$ qubits is described by the unitary operator $U = U_m \cdots U_2 U_1$ , where each $U_j$ is a one- or two-qubit gate from the set ${H, S, T, \text{CNOT}}$ . In this set, $S = T^2$ . Let $m = c + t$ , where $c$ denotes the number of Clifford gates ($H, S, \text{CNOT}$ ) and $t$ denotes the number of T-gates, referred to as the T-count. When $U$ is applied to the initial state $|0^n\rangle$ and a specific output register $Q_{\text{out}} \subseteq [n]$ is measured in the 0,1-basis, a random bit string $x$ of length $w = |Q_{\text{out}}|$ is produced [1].
CREDITS: Sergey Bravyi: Improved classical simulation of quantum circuits dominated by Clifford gates
The probability of obtaining the bit string$x$ is given by $P_{\text{out}}(x) = \langle 0^n | U^\dagger \Pi(x) U | 0^n \rangle$ , where $\Pi(x)$ projects $Q_{\text{out}}$ onto the basis state $|x\rangle$ and acts trivially on the other qubits [1]. The magic state is $|A\rangle = 2^{-1/2} (|0\rangle + e^{i\pi/4} |1\rangle)$ .
Describe the solution you’d like
The first step is to check out the talk by Sergey on his paper: Sergey Bravyi: Improved classical simulation of quantum circuits dominated by Clifford gates
They introduce two simulation tasks, each aligned with a classical simulation algorithm:
There are basically three steps and one preprocessing step (each colored differently) for classicaly simulating the$Clifford+T$ circuit. The
Gottesman-Knill preprocessing step
that Sergey discusses (at25:07
minute mark) in his talk is in blue.The following implementation flow is consistent with both Sergey’s paper and his talk.
There are a lot of small subtasks/low hanging fruits that spawn out from this paper on the road the implementing these two classical simulation algorithms for$Clifford+T$ circuits.
For instance, some of these subtasks are:
T
gate withT-gadget
.CREDITS: Improved classical simulation of quantum circuits dominated by Clifford gates
for$c_{a} \in \mathbb{C}$ and stabilizer states $|\psi_{a}\rangle$ .
A
, Sergey makes connection to the quadratic forms and how it is used to represent the stabilizer state uniquely.According to$n$ -qubit stabilizer state $|\psi\rangle$ can be uniquely expressed as:
Lemma 4, equation (47)
of Sergey's paper, Anywhere$K \subseteq \mathbb{F}_2^n$ is an affine subspace of dimension $0 \leq k \leq n$ and $q: K \rightarrow \mathbb{Z}_8$ is a quadratic form. In the subroutines presented in appendix of his paper, he relies on this representation. Exploring how this can be implemented with help of
Nemo
would be nice.Describe alternatives you’ve considered
In progress.
Additional context
The authors introduced two algorithms for the classical simulation of quantum circuits that utilize the Clifford+T gate set. The runtime for these algorithms scales polynomially with the number of qubits and the number of Clifford gates in the circuit but exponentially with the number of T gates. Despite the exponential factor, this scaling remains 'mild', suggesting that classical simulations of Clifford+T circuits with several hundred qubits and a T-count$t \leq 50$ can be executed on a medium-sized computer cluster [1].
Please consider reading through Sergey's second paper on$Clifford+T$ which he refers when talking about "sketch of techniques section" in the aforementioned paper. The second paper is Trading classical and quantum computational resources. Additionally, please examine the difference between the
RandomStabilizerState
subroutine and the corresponding implementation (if) provided here. Specifically, is the primary difference related to the use of quadratic forms in representing the stabilizer state use by the subroutineRandomStabilizerState
?The text was updated successfully, but these errors were encountered: