This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Learning quantum states prepared by shallow circuits
in polynomial time

Zeph Landau UC Berkeley. [email protected]    Yunchao Liu UC Berkeley and Harvard University. [email protected]
Abstract

We give a polynomial time algorithm that, given copies of an unknown quantum state |ψ=U|0n\ket{\psi}=U\ket{0^{n}} that is prepared by an unknown constant depth circuit UU on a finite-dimensional lattice, learns a constant depth quantum circuit that prepares |ψ\ket{\psi}. The algorithm extends to the case when the depth of UU is polylog(n)\mathrm{polylog}(n), with a quasi-polynomial run-time. The key new idea is a simple and general procedure that efficiently reconstructs the global state |ψ\ket{\psi} from its local reduced density matrices. As an application, we give an efficient algorithm to test whether an unknown quantum state on a lattice has low or high quantum circuit complexity.

1 Introduction

We consider the following fundamental question in quantum complexity theory: is there an efficient algorithm to learn quantum states of low circuit complexity? That is, given copies of an unknown quantum state |ψ\ket{\psi} that was generated from a constant depth quantum circuit acting on a finite-dimensional lattice, whether there exists an efficient algorithm that learns a circuit to prepare |ψ\ket{\psi}. In this paper we answer this question in the affirmative.

Theorem 1 (Main result, simplified version of 4).

There is an algorithm that, given copies of an unknown state |ψ\ket{\psi}, with the promise that |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is an unknown depth-dd unitary circuit acting on a kk-dimensional lattice (using arbitrary 2-qubit gates), outputs a depth-(2k+1)d(2k+1)d unitary circuit WW that prepares |ψ\ket{\psi} up to 0.010.01 trace distance, with success probability 0.990.99. The algorithm uses MM copies of |ψ\ket{\psi} and runs in time TT, where

M=O~(n4)2O(c),T=O~(n4)2O(c)+(nkdc)O(dc).M=\tilde{O}(n^{4})\cdot 2^{O(c)},\quad T=\tilde{O}(n^{4})\cdot 2^{O(c)}+\left(nkd\cdot c\right)^{O(d\cdot c)}. (1)

Here, c=O((3k)k+2d)kc=O((3k)^{k+2}d)^{k}, and WW uses rnr\cdot n ancilla qubits where r>0r>0 can be chosen to be an arbitrarily small constant.

Note that the running time is polynomial when d=O(1)d=O(1), and quasi-polynomial when d=polylog(n)d=\mathrm{polylog}(n). In addition, the dominating term in the running time (second term in TT) can be significantly improved when assuming a discrete gate set.

For quantum states prepared by shallow circuits, it is known that learning (sufficiently large) local reduced density matrices suffices to information-theoretically reconstruct the state [RF21, YW23]. The question is whether the reconstruction can be computationally efficient. A naive approach finds small circuits for different local regions and stitch them together into a global circuit by checking local consistency, but this runs into a seemingly hard constraint satisfaction problem (in two and higher dimensions). Recent work [HLB+24] developed an efficient algorithm in 2D by showing that to learn a 2D state it suffices to solve a 1D constraint satisfaction problem which is efficient; however this approach runs into the same issue at three and higher dimensions. Here we develop new techniques that do not rely on solving any consistency problem; this enables our algorithm to work at arbitrary dimensions.

Testing quantum circuit complexity.

As an application of our result, we also give an algorithm to test whether an unknown state on a kk-dimensional lattice has low or high quantum circuit complexity.

Corollary 1 (Simplified version of 5).

Fix some constant L>0L>0. Given copies of an unknown state |ψ\ket{\psi} on a kk-dimensional lattice, with the promise that one of the following two cases hold:

  • Case 1: Low complexity. |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where the depth of UU is at most LL;

  • Case 2: High complexity. Any state prepared by a constant depth circuit using O(n)O(n) ancilla qubits is at least 0.010.01-far from |ψ\ket{\psi} in trace distance.

There is an algorithm that decides which is the case, with success probability at least 0.99, with polynomial sample and time complexity.

Next we give a brief review of the background and motivations of this work.

Learning phases of matter.

Quantum systems defined on finite-dimensional lattices are a central subject in condensed matter physics, where quantum states are classified into different “phases of matter” [CGW10]. Quantum circuit complexity plays an important role in the definition of phases of matter: the “trivial” phase is typically defined as quantum states prepared by a constant (or polylog(n)\mathrm{polylog}(n)) depth circuit acting on a kk-dimensional lattice (e.g. [AT18, PSC21]), while quantum states in a topologically ordered phase have high circuit complexity [BHV06]. Our result therefore shows that:

  • Quantum states in the “trivial” phase can be learned in polynomial (or quasi-polynomial) time.

  • Given an arbitrary quantum state, there is an efficient algorithm to test whether it is in the “trivial” phase or some other high-complexity phase.

Quantum algorithms in NISQ.

Shallow quantum circuits provide a natural theoretical model for noisy intermediate-scale quantum (NISQ) computation, and optimism about quantum advantage from NISQ devices relies on the fact that shallow quantum circuits can generate nontrivial probability distributions that are hard to simulate classically [TD04, GWD17, BHS+18, HE23]. This motivates many NISQ algorithms which heuristically use shallow quantum circuits as an ansatz; the goal is to optimize a parameterized shallow quantum circuit to solve interesting problems [BCK+22]. In practice, these algorithms run into issues such as local minima [AK22]. Our learning algorithm addresses a simple question in this direction: provably learning a shallow quantum circuit to prepare an unknown quantum state, which potentially provides a useful primitive for new NISQ algorithms.

Other related works.

The classical question of learning low-depth Boolean circuits (e.g. \NC0\NC^{0} and \AC0\AC^{0}) is well-studied [MOS03, LMN93, CIKK16]. Recent work [HLB+24] also gave an efficient algorithm for learning shallow quantum circuits from random input/output samples, which can be viewed as a quantum analog of learning shallow Boolean circuits. Our problem of learning quantum states prepared by shallow circuits can be viewed as another analog, but here there is no access of “input” to the shallow circuit and the learning algorithm can only make measurements to the quantum state.

Separately, developing efficient algorithms to learn interesting families of quantum states is a major direction in quantum learning theory, and we refer to [AA24] for a recent survey.

Discussion.

An interesting question is whether our algorithm can be generalized to other geometries (or interaction graphs) beyond finite-dimensional lattices. In fact, we show that our algorithm works for any geometry which has a property called “covering scheme” (4), and we construct covering schemes for finite-dimensional lattices. It is interesting to study what other geometries can have this covering scheme.

Note added.

We recently became aware of independent related work of Hyun-Soo Kim, Isaac Kim, and Daniel Ranard [KKR24], achieving similar results via a different approach.

2 Learning shallow quantum circuits vs quantum states

To understand our problem, it is helpful to discuss the closely related problem of learning shallow quantum circuits: given query access to an unknown unitary UU that implements a shallow quantum circuit, learn a description of a shallow quantum circuit that is close to UU. A previous work by us and coauthors gave an efficient algorithm for this problem [HLB+24]. The nice thing about this algorithm is that it is very simple and yet works in general. Here’s the proof: for any unitary UU, the following identity holds.

UU=(i=1nSi)i=1n(USiU).U\otimes U^{\dagger}=\left(\prod_{i=1}^{n}S_{i}\right)\cdot\prod_{i=1}^{n}\left(U^{\dagger}S_{i}U\right). (2)

Here, we have nn system qubits and nn ancilla qubits, and SiS_{i} is the SWAP gate on the ii-th system qubit and the ii-th ancilla qubit. Each UU, UU^{\dagger} on RHS acts on the system. To see this identity, we first cancel UU with UU^{\dagger} in the product, then RHS becomes U(i=1nSi)UU^{\dagger}\left(\prod_{i=1}^{n}S_{i}\right)U. Then, Eq. 2 follows from this diagram.

UU=UU\leavevmode\hbox to69.71pt{\vbox to24.3pt{\pgfpicture\makeatletter\hbox{\hskip-0.99509pt\lower-6.17508pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{} {}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{1.19508pt}{0.0pt}\pgfsys@moveto{1.19508pt}{0.0pt}\pgfsys@lineto{1.19508pt}{11.95016pt}\pgfsys@lineto{34.6554pt}{11.95016pt}\pgfsys@lineto{34.6554pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{34.6554pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{13.96622pt}{2.55843pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}$U$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{37.04558pt}{0.0pt}\pgfsys@moveto{37.04558pt}{0.0pt}\pgfsys@lineto{37.04558pt}{11.95016pt}\pgfsys@lineto{70.50589pt}{11.95016pt}\pgfsys@lineto{70.50589pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{70.50589pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{48.57227pt}{1.58621pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}$U^{\dagger}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{0.0pt}\pgfsys@lineto{5.97508pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{11.95016pt}\pgfsys@lineto{5.97508pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{0.0pt}\pgfsys@lineto{17.92525pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{11.95016pt}\pgfsys@lineto{17.92525pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{0.0pt}\pgfsys@lineto{29.87541pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{11.95016pt}\pgfsys@lineto{29.87541pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{41.82558pt}{0.0pt}\pgfsys@lineto{41.82558pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{41.82558pt}{11.95016pt}\pgfsys@lineto{41.82558pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{53.77574pt}{0.0pt}\pgfsys@lineto{53.77574pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{53.77574pt}{11.95016pt}\pgfsys@lineto{53.77574pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{65.7259pt}{0.0pt}\pgfsys@lineto{65.7259pt}{-5.97508pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{65.7259pt}{11.95016pt}\pgfsys@lineto{65.7259pt}{17.92525pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{}}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}\quad=\quad\leavevmode\hbox to64.93pt{\vbox to54.18pt{\pgfpicture\makeatletter\hbox{\hskip-0.99509pt\lower-30.07541pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{} {}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{1.19508pt}{0.0pt}\pgfsys@moveto{1.19508pt}{0.0pt}\pgfsys@lineto{1.19508pt}{11.95016pt}\pgfsys@lineto{34.6554pt}{11.95016pt}\pgfsys@lineto{34.6554pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{34.6554pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{12.72177pt}{1.58621pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}$U^{\dagger}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{1.19508pt}{-11.95016pt}\pgfsys@moveto{1.19508pt}{-11.95016pt}\pgfsys@lineto{1.19508pt}{-23.90033pt}\pgfsys@lineto{34.6554pt}{-23.90033pt}\pgfsys@lineto{34.6554pt}{-11.95016pt}\pgfsys@closepath\pgfsys@moveto{34.6554pt}{-23.90033pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{13.96622pt}{-21.3419pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}$U$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{41.82558pt}{11.95016pt}\pgfsys@lineto{41.82558pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{41.82558pt}{-11.95016pt}\pgfsys@lineto{41.82558pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{-23.90033pt}\pgfsys@lineto{5.97508pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{53.77574pt}{11.95016pt}\pgfsys@lineto{53.77574pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{53.77574pt}{-11.95016pt}\pgfsys@lineto{53.77574pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{-23.90033pt}\pgfsys@lineto{17.92525pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{65.7259pt}{11.95016pt}\pgfsys@lineto{65.7259pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{65.7259pt}{-11.95016pt}\pgfsys@lineto{65.7259pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{-23.90033pt}\pgfsys@lineto{29.87541pt}{-29.87541pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \par {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{11.95016pt}\pgfsys@curveto{5.97508pt}{17.92525pt}{41.82558pt}{17.92525pt}{41.82558pt}{23.90033pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{23.90033pt}\pgfsys@curveto{5.97508pt}{17.92525pt}{41.82558pt}{17.92525pt}{41.82558pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{11.95016pt}\pgfsys@curveto{17.92525pt}{17.92525pt}{53.77574pt}{17.92525pt}{53.77574pt}{23.90033pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{23.90033pt}\pgfsys@curveto{17.92525pt}{17.92525pt}{53.77574pt}{17.92525pt}{53.77574pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{11.95016pt}\pgfsys@curveto{29.87541pt}{17.92525pt}{65.7259pt}{17.92525pt}{65.7259pt}{23.90033pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{23.90033pt}\pgfsys@curveto{29.87541pt}{17.92525pt}{65.7259pt}{17.92525pt}{65.7259pt}{11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{-11.95016pt}\pgfsys@curveto{5.97508pt}{-5.97508pt}{41.82558pt}{-5.97508pt}{41.82558pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{5.97508pt}{0.0pt}\pgfsys@curveto{5.97508pt}{-5.97508pt}{41.82558pt}{-5.97508pt}{41.82558pt}{-11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{-11.95016pt}\pgfsys@curveto{17.92525pt}{-5.97508pt}{53.77574pt}{-5.97508pt}{53.77574pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{17.92525pt}{0.0pt}\pgfsys@curveto{17.92525pt}{-5.97508pt}{53.77574pt}{-5.97508pt}{53.77574pt}{-11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{-11.95016pt}\pgfsys@curveto{29.87541pt}{-5.97508pt}{65.7259pt}{-5.97508pt}{65.7259pt}{0.0pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{}{{}}{}{{}}{}{}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.87541pt}{0.0pt}\pgfsys@curveto{29.87541pt}{-5.97508pt}{65.7259pt}{-5.97508pt}{65.7259pt}{-11.95016pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{}}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}} (3)

The learning algorithm directly follows from Eq. 2: when UU is a shallow circuit, each operator USiUU^{\dagger}S_{i}U is local and therefore easy to learn. Moreover, they also commute with each other, so we just learn each of them, multiply together arbitrarily, and we have learned a circuit that implements UUU\otimes U^{\dagger}. If we arrange the ordering a bit smarter, we have a shallow circuit that implements UUU\otimes U^{\dagger}. That is, the learned circuit is a shallow quantum circuit acting on 2n2n qubits, and it implements a unitary that is close to UUU\otimes U^{\dagger} in diamond distance.

So what about the current problem of learning quantum states prepared by shallow circuits? Clearly, what we want to achieve is to find a similarly simple technique that works in general. However, that turned out to be not so easy, because there are fundamental distinctions between the two problems. On a high level, the problem of learning shallow circuits has stronger access (we can query the unknown unitary with desired input and measure the output in a desired basis), and also has stronger requirement (we need to learn the circuit, instead of preparing a specific state), and seems incomparable with learning quantum states prepared by shallow circuits.

But if one thinks harder, one starts to realize that the stronger access really makes the problem much easier. The structure demonstrated in Eq. 2 is really special: a shallow quantum circuit can be directly decomposed into a product of commuting local unitaries, which are also local observables that are easy to learn. This only exists because we have access to both the input and the output. But we are just given copies of a specific quantum state for the current problem, and the dream would be to find a simple and efficient procedure to reconstruct the state from local observables (or local reduced density matrices). However, we cannot hope to get something really similar to Eq. 2: in general, there is no way to directly decompose a quantum state into reduced density matrices. Luckily, it turns out that there is a simple technique that works in general for our problem, which is presented in this work.

Our approach.

We start by introducing a new framework to reconstruct the state. Let |ψ\ket{\psi} be an unknown quantum state prepared by an unknown shallow circuit. Our goal will be to learn local CPTP maps 1,2,,L\mathcal{R}_{1},\mathcal{R}_{2},\dots,\mathcal{R}_{L} which fix the state, i.e., i(|ψψ|)=|ψψ|,i[L]\mathcal{R}_{i}(\outerproduct{\psi}{\psi})=\outerproduct{\psi}{\psi},\forall i\in[L]. These maps are easy to obtain from local reduced density matrices. By definition, we have

LL11(|ψψ|)=|ψψ|.\mathcal{R}_{L}\circ\mathcal{R}_{L-1}\cdots\circ\mathcal{R}_{1}(\outerproduct{\psi}{\psi})=\outerproduct{\psi}{\psi}. (4)

Here’s our plan. Note that in Eq. 4, in LHS we have an unknown input state |ψ\ket{\psi}, a sequence of known (learned) maps, and the output equals |ψ\ket{\psi}. We will show that when these local maps are chosen in a very careful way, the output in fact does not depend on the input. That is, LL11(|ϕϕ|)=|ψψ|\mathcal{R}_{L}\circ\mathcal{R}_{L-1}\cdots\circ\mathcal{R}_{1}(\outerproduct{\phi}{\phi})=\outerproduct{\psi}{\psi} for any state |ϕ\ket{\phi}. This shows that we can already reconstruct |ψ\ket{\psi} using these local maps. Moreover, we further show that we can directly read out a shallow unitary quantum circuit CC from these maps that prepares the state within small trace distance, that is,

C|0n|0m|ψ|junk,C\ket{0^{n}}\otimes\ket{0^{m}}\approx\ket{\psi}\otimes\ket{\mathrm{junk}}, (5)

which uses mm ancilla qubits to prepare |ψ\ket{\psi}. Interestingly, unlike Eq. 2 which uses exactly nn ancilla qubits, here mm is a tunable parameter which can be a small fraction of nn.

3 Learning algorithm

Notations.

Our goal is to learn a quantum state |ψ\ket{\psi}, with the promise that |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is an unknown depth-dd circuit acting on a kk-dimensional lattice. We do not assume knowledge of the circuit architecture: each layer of the circuit consists of non-overlapping 2-qubit gates, where each qubit could interact with any of its neighbors. The following concepts are used throughout the argument.

  • Ball: (A,r)\mathcal{B}(A,r) denotes the radius-rr neighborhood on the lattice for a set of vertices AA (including AA). For example, the dotted region in Fig. 1(b) shows a ball around region AA on the 2D lattice.

  • Lightcone: (A,d)\mathcal{L}(A,d) denotes the volume of locations that can be reached by a depth dd circuit starting from region AA. In particular, the support of the lightcone at top layer equals (A,d)\mathcal{B}(A,d). For example, the green region in Fig. 1(a) denotes the lightcone of the leftmost qubit for a circuit defined on 1D lattice.

A lightcone can be viewed as propagating or spreading causal influence in a circuit from input to output. Later we will define a dual notion of backward lightcone, which spreads from output to input.

U|0|0|0|0|0|0V1=|0|ϕ\leavevmode\hbox to119.9pt{\vbox to80.8pt{\pgfpicture\makeatletter\hbox{\hskip 0.2pt\lower-24.83266pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{} {}{{}}{} {}{} {}{} {}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0.691,0.964,0.7}\definecolor[named]{pgfstrokecolor}{rgb}{0.691,0.964,0.7}\pgfsys@color@cmyk@stroke{0.273}{0}{0.264}{0.036}\pgfsys@invoke{ }\pgfsys@color@cmyk@fill{0.273}{0}{0.264}{0.036}\pgfsys@invoke{ }\definecolor{pgffillcolor}{rgb}{0.691,0.964,0.7}\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@lineto{19.91693pt}{0.0pt}\pgfsys@lineto{39.83386pt}{19.91693pt}\pgfsys@lineto{0.0pt}{19.91693pt}\pgfsys@lineto{0.0pt}{0.0pt}\pgfsys@fill\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@lineto{0.0pt}{19.91693pt}\pgfsys@lineto{119.50159pt}{19.91693pt}\pgfsys@lineto{119.50159pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{119.50159pt}{19.91693pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{55.79178pt}{6.54181pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}$U$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{9.95847pt}{0.0pt}\pgfsys@lineto{9.95847pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{9.95847pt}{19.91693pt}\pgfsys@lineto{9.95847pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{4.12512pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.8754pt}{0.0pt}\pgfsys@lineto{29.8754pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.8754pt}{19.91693pt}\pgfsys@lineto{29.8754pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{24.04205pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{49.79233pt}{0.0pt}\pgfsys@lineto{49.79233pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{49.79233pt}{19.91693pt}\pgfsys@lineto{49.79233pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{43.95898pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{69.70926pt}{0.0pt}\pgfsys@lineto{69.70926pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{69.70926pt}{19.91693pt}\pgfsys@lineto{69.70926pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{63.87592pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{89.62619pt}{0.0pt}\pgfsys@lineto{89.62619pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{89.62619pt}{19.91693pt}\pgfsys@lineto{89.62619pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{83.79285pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{109.54312pt}{0.0pt}\pgfsys@lineto{109.54312pt}{-7.96664pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{109.54312pt}{19.91693pt}\pgfsys@lineto{109.54312pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{103.70978pt}{-18.99965pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$\ket{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \par{}{{}}{} {}{} {}{} {}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{0.0pt}{27.88358pt}\pgfsys@lineto{39.83386pt}{27.88358pt}\pgfsys@lineto{19.91693pt}{47.8005pt}\pgfsys@lineto{0.0pt}{47.8005pt}\pgfsys@lineto{0.0pt}{27.88358pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{8.514pt}{35.3276pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$V_{1}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{9.95847pt}{47.8005pt}\pgfsys@lineto{9.95847pt}{55.76746pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{29.8754pt}{37.84204pt}\pgfsys@lineto{29.8754pt}{55.76746pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{}}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}}\,\,=\,\,\ket{0}\otimes\ket{\phi}
(a) Local inversion in 1D
BBAACC
(b) Local inversion in 2D
Figure 1: Local inversions for quantum states prepared by shallow circuits. (a) 1D lattice; (b) 2D lattice, where a local inversion of AA can be constructed by applying a depth-dd circuit on ABAB.

3.1 Overview of technical challenges and new ideas

We first give an overview of the technical challenges in developing a learning algorithm, and our new ideas to overcome these challenges. We start by defining a key concept of local inversion.

Definition 1 (Local inversion).

Given a state |ψ\ket{\psi} and a subset A[n]A\subseteq[n] of qubits, a unitary operator VV is called a local inversion of AA if VV acts on a ball of AA and V|ψ=|0A|ϕV\ket{\psi}=\ket{0}_{A}\otimes\ket{\phi} for some arbitrary pure state |ϕ\ket{\phi} on n|A|n-|A| qubits.

Fact 1.

Suppose |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is a depth-dd circuit acting on a kk-dimensional lattice. Then for any A[n]A\subseteq[n], there exists a local inversion VV of AA satisfying:

  1. 1.

    VV is supported on (A,d)\mathcal{B}(A,d);

  2. 2.

    VV is a depth dd circuit, whose inverse shape is contained within the lightcone (A,d)\mathcal{L}(A,d).

This fact follows from undoing the gates in the lightcone of AA. For example, Fig. 1(a) shows a state prepared by a circuit acting on a 1D lattice, and the green region denotes the lightcone of the leftmost qubit. There exists a local inversion V1V_{1} (for example, by inverting the gates in the lightcone) which disentangles the leftmost qubit. Note that the shape of V1V_{1} is the inverse of the shape of the lightcone. Fig. 1(b) shows a 2D lattice, where the dotted region ABAB equals (A,d)\mathcal{B}(A,d). There exists a local inversion of AA which is a depth-dd circuit acting on ABAB.

Learning local inversions.

Local inversions provide the basic tool for a learning algorithm because they are easy to learn. For example, consider a constant-size region AA in Fig. 1(b). We first perform quantum state tomography to learn the reduced density matrix on ABAB, and then brute force search over all depth-dd circuits acting on ABAB. For each circuit, we can efficiently check whether it correctly inverts the region AA to |0A\ket{0}_{A}. In this way we can find possibly a set of local inversion operators of AA.

For the remainder of Section 3, we will assume that we have access to (exact) local inversion operators. In reality, we can only learn approximate local inversion operators. This issue is addressed in Section 4.

Our algorithm has a simple framework: (1) Quantum learning: learn local reduced density matrices; (2) Classical processing: find local inversion operators for local regions, and combine them into a circuit. Below we review the challenges in realizing this framework.

Challenges.

The first issue is that there are multiple local inversion operators for a given local region. A naive approach to find a circuit is the following: pick a local inversion operator for each local region, such that local inversions for neighboring regions are consistent. Consistency demands that two quantum circuits share the same gates where they overlap, so that they can be merged together as a bigger circuit. This is precisely a constraint satisfaction problem that is hard in general in 2D and higher dimensions.

Recent work [HLB+24] addresses this problem in 2D, by showing that one can efficiently solve such a constraint satisfaction problem in 1D, to find 1D circuits that disentangle the 2D state into many 1D stripes [HLB+24, Eq. (9)], and argue that the remaining 1D stripes are easy to learn. This approach fails at three and higher dimensions as the disentangling step still requires solving a hard constraint satisfaction problem.

The key challenge in solving the learning problem on finite dimensional lattices is to find a way to avoid any constraint satisfaction problem. In this paper we give such a way.

Here is a basic idea: by definition, applying a local inversion VV to a state |ψ\ket{\psi} gives V|ψ=|0A|ϕV\ket{\psi}=\ket{0}_{A}\otimes\ket{\phi}, where |ϕ\ket{\phi} is a smaller state on n|A|n-|A| qubits. Can we repeat the process by further removing qubits from |ϕ\ket{\phi}? The issue here is that now the state has been disturbed. In particular, the local inversion VV we applied may not be the “ground truth” which undoes the gates in the lightcone of AA, and VV may just be an arbitray depth-dd circuit that happens to invert AA. Therefore the state |ϕ\ket{\phi} suffers from a potential quantum circuit complexity blow-up: we no longer have the guarantee that |ϕ\ket{\phi} is prepared by a depth-dd circuit. Repeating this process will further increase the blow-up.

Key ideas.

Overcoming these obstacles requires two insights. The first is to observe that we can undo the local inversion after applying it, so the state |ψ\ket{\psi} is not disturbed. The utility of this observation is that in rewriting the state in this way, we have replaced part of the unknown state with a partial piece of known operations. The second insight is to realize that with a careful choice of local inversions based on the geometry of the lattice, these partial pieces can be layered together in a way that the backward lightcone of the final state is covered completely by these partial pieces and does not depend on the unknown initial state. The result is the learned constant depth circuit consisting of parts of local inversions and their inverses.

3.2 Replacement process

As discussed above, our first key idea is the following, which at first glance seems useless: apply a local inversion, and then undo it. We formally define this as a replacement process.

Definition 2 (Replacement process).

Given a state |ψ\ket{\psi} and a region AA, define the AA-replacement process as follows: take a local inversion VV of region AA, then perform the following operations on |ψ\ket{\psi}:

  1. 1.

    apply VV,

  2. 2.

    trace out the qubits in AA, replace each qubit with |0\ket{0},

  3. 3.

    apply VV^{\dagger}.

Note that step 2 is in fact not doing anything (since step 1 already inverted the region AA to |0A\ket{0}_{A}) and is included here to help the illustration of the argument. Next, since step 2 is effectively the identity operation, step 1 and step 3 cancel with each other, and therefore the state |ψ\ket{\psi} remains unchanged. This is illustrated as follows (for simplicity, here we draw local inversions as boxes without the wedges).

|ψ=|ψV|0|0|0|0VAA0\ket{\psi}\,\,=\,\,\leavevmode\hbox to382.8pt{\vbox to100.9pt{\pgfpicture\makeatletter\hbox{\hskip 0.2pt\lower-15.29277pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{} \par{}{{}}{} {}{} {}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0.691,0.964,0.7}\definecolor[named]{pgfstrokecolor}{rgb}{0.691,0.964,0.7}\pgfsys@color@cmyk@stroke{0.273}{0}{0.264}{0.036}\pgfsys@invoke{ }\pgfsys@color@cmyk@fill{0.273}{0}{0.264}{0.036}\pgfsys@invoke{ }\definecolor{pgffillcolor}{rgb}{0.691,0.964,0.7}\pgfsys@moveto{36.64717pt}{63.73413pt}\pgfsys@lineto{58.95401pt}{63.73413pt}\pgfsys@lineto{63.73413pt}{52.5807pt}\pgfsys@lineto{31.86707pt}{52.5807pt}\pgfsys@fill\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\par{}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@moveto{0.0pt}{0.0pt}\pgfsys@lineto{0.0pt}{11.15341pt}\pgfsys@lineto{382.40479pt}{11.15341pt}\pgfsys@lineto{382.40479pt}{0.0pt}\pgfsys@closepath\pgfsys@moveto{382.40479pt}{11.15341pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{185.07669pt}{3.0767pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}\small{$\ket{\psi}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{7.96677pt}{11.15341pt}\pgfsys@lineto{7.96677pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{23.9003pt}{11.15341pt}\pgfsys@lineto{23.9003pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{39.83383pt}{11.15341pt}\pgfsys@lineto{39.83383pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{55.76736pt}{11.15341pt}\pgfsys@lineto{55.76736pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{71.7009pt}{11.15341pt}\pgfsys@lineto{71.7009pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{87.63443pt}{11.15341pt}\pgfsys@lineto{87.63443pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{103.56796pt}{11.15341pt}\pgfsys@lineto{103.56796pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{119.5015pt}{11.15341pt}\pgfsys@lineto{119.5015pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{135.43503pt}{11.15341pt}\pgfsys@lineto{135.43503pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{151.36856pt}{11.15341pt}\pgfsys@lineto{151.36856pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{167.3021pt}{11.15341pt}\pgfsys@lineto{167.3021pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{183.23563pt}{11.15341pt}\pgfsys@lineto{183.23563pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{199.16916pt}{11.15341pt}\pgfsys@lineto{199.16916pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{215.10269pt}{11.15341pt}\pgfsys@lineto{215.10269pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{231.03622pt}{11.15341pt}\pgfsys@lineto{231.03622pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{246.96976pt}{11.15341pt}\pgfsys@lineto{246.96976pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{262.90329pt}{11.15341pt}\pgfsys@lineto{262.90329pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{278.83682pt}{11.15341pt}\pgfsys@lineto{278.83682pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{294.77036pt}{11.15341pt}\pgfsys@lineto{294.77036pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{310.70389pt}{11.15341pt}\pgfsys@lineto{310.70389pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{326.63742pt}{11.15341pt}\pgfsys@lineto{326.63742pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{342.57095pt}{11.15341pt}\pgfsys@lineto{342.57095pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{358.50449pt}{11.15341pt}\pgfsys@lineto{358.50449pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{374.43802pt}{11.15341pt}\pgfsys@lineto{374.43802pt}{17.52698pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \par{}{{}}{} {}{{}}{}{}{}{}{{}}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{0.0pt}{17.52698pt}\pgfsys@moveto{0.0pt}{17.52698pt}\pgfsys@lineto{0.0pt}{28.6804pt}\pgfsys@lineto{94.00774pt}{28.6804pt}\pgfsys@lineto{94.00774pt}{17.52698pt}\pgfsys@closepath\pgfsys@moveto{94.00774pt}{28.6804pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{44.1756pt}{20.02858pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\small{$V$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{23.9003pt}{28.6804pt}\pgfsys@lineto{23.9003pt}{35.05371pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{18.45584pt}{37.90007pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\small{$\ket{0}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{23.9003pt}{52.5807pt}\pgfsys@lineto{23.9003pt}{46.20714pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{39.83383pt}{28.6804pt}\pgfsys@lineto{39.83383pt}{35.05371pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{34.38937pt}{37.90007pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\small{$\ket{0}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{39.83383pt}{52.5807pt}\pgfsys@lineto{39.83383pt}{46.20714pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{55.76736pt}{28.6804pt}\pgfsys@lineto{55.76736pt}{35.05371pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{50.3229pt}{37.90007pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\small{$\ket{0}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{55.76736pt}{52.5807pt}\pgfsys@lineto{55.76736pt}{46.20714pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{71.7009pt}{28.6804pt}\pgfsys@lineto{71.7009pt}{35.05371pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{66.25644pt}{37.90007pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{\small{$\ket{0}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{71.7009pt}{52.5807pt}\pgfsys@lineto{71.7009pt}{46.20714pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{7.96677pt}{28.6804pt}\pgfsys@lineto{7.96677pt}{52.5807pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{87.63443pt}{28.6804pt}\pgfsys@lineto{87.63443pt}{52.5807pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{7.96677pt}{63.73413pt}\pgfsys@lineto{7.96677pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{23.9003pt}{63.73413pt}\pgfsys@lineto{23.9003pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{39.83383pt}{63.73413pt}\pgfsys@lineto{39.83383pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{55.76736pt}{63.73413pt}\pgfsys@lineto{55.76736pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{71.7009pt}{63.73413pt}\pgfsys@lineto{71.7009pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{87.63443pt}{63.73413pt}\pgfsys@lineto{87.63443pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ } \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{{}}{} {}{{}}{}{}{}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\definecolor[named]{pgffillcolor}{rgb}{0,0,0}{}\pgfsys@moveto{0.0pt}{52.5807pt}\pgfsys@moveto{0.0pt}{52.5807pt}\pgfsys@lineto{0.0pt}{63.73413pt}\pgfsys@lineto{94.00774pt}{63.73413pt}\pgfsys@lineto{94.00774pt}{52.5807pt}\pgfsys@closepath\pgfsys@moveto{94.00774pt}{63.73413pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{42.25887pt}{54.20743pt}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@invoke{ }\pgfsys@color@gray@fill{0}\pgfsys@invoke{ }\hbox{{\definecolor[named]{.}{rgb}{0,0,0}\color[rgb]{0,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@gray@stroke{0}\pgfsys@color@gray@fill{0}\small{$V^{\dagger}$}}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\par{}{{}}{} {}{}{}{}{{{}{}}} {}{{}{}}{}{}{}{{}}{{}}{{}{}}{{}{}}{{{{}{}{{}} }}{{}} {} {}{}{} { {{}} {} {}{}{} {}{}{} } { {{}} {} {}{}{} } }{{}{}}{{}{}}{{{{}{}{{}} }}{{}}} {}\pgfsys@moveto{76.481pt}{-1.59344pt}\pgfsys@moveto{76.481pt}{-1.59344pt}\pgfsys@curveto{76.10602pt}{-2.34344pt}{75.231pt}{-2.84344pt}{73.981pt}{-2.84344pt}\pgfsys@lineto{50.3006pt}{-2.84344pt}\pgfsys@curveto{49.0506pt}{-2.84344pt}{48.17558pt}{-3.34343pt}{47.8006pt}{-4.09344pt}\pgfsys@curveto{47.42561pt}{-3.34343pt}{46.5506pt}{-2.84344pt}{45.3006pt}{-2.84344pt}\pgfsys@lineto{21.62018pt}{-2.84344pt}\pgfsys@curveto{20.37018pt}{-2.84344pt}{19.49516pt}{-2.34344pt}{19.12018pt}{-1.59344pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{44.0506pt}{-11.95976pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$A$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{{}}{} {}{}{}{}{{{}{}}} {}{{}{}}{}{}{}{{}}{{}}{{}{}}{{}{}}{{{{}{}{{}} }}{{}} {} {}{}{} { {{}} {} {}{}{} {}{}{} } { {{}} {} {}{}{} } }{{}{}}{{}{}}{{{{}{}{{}} }}{{}}} {}\pgfsys@moveto{36.64717pt}{70.10744pt}\pgfsys@moveto{36.64717pt}{70.10744pt}\pgfsys@curveto{37.02216pt}{70.85744pt}{37.89717pt}{71.35744pt}{39.14717pt}{71.35744pt}\pgfsys@lineto{45.30058pt}{71.35744pt}\pgfsys@curveto{46.55058pt}{71.35744pt}{47.4256pt}{71.85742pt}{47.80058pt}{72.60744pt}\pgfsys@curveto{48.17557pt}{71.85742pt}{49.05058pt}{71.35744pt}{50.30058pt}{71.35744pt}\pgfsys@lineto{56.45401pt}{71.35744pt}\pgfsys@curveto{57.70401pt}{71.35744pt}{58.57903pt}{70.85744pt}{58.95401pt}{70.10744pt}\pgfsys@stroke\pgfsys@invoke{ }\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1.0}{42.65057pt}{75.44489pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{{$A_{0}$}} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{}}{}{}\hss}\pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}\lxSVG@closescope\endpgfpicture}} (6)
Fact 2.

The state |ψ\ket{\psi} is invariant under any AA-replacement process for any region AA.

Next we give an intuitive explanation of why the replacement process may be helpful for learning. First, we informally introduce the new concept of backward lightcone (green region in Eq. 6). The formal definition is given in 6.

Definition 3 (Backward lightcone, informal).

The backward lightcone of a subset of qubits SS at the output of a quantum circuit is the minimal part of the circuit diagram that determines the reduced density matrix of SS.

For example, in Eq. 6 the green region starts from A0A_{0} at the output of the circuit and keeps growing backwards (which looks like the inverse of a (forward) lightcone), until it hits a region of |0\ket{0}. There is no need to grow further because the input is completely determined. Now, note that the reduced density matrix of A0A_{0} at the output of the circuit (which equals the reduced density matrix of A0A_{0} in |ψ\ket{\psi}) is determined by its backward lightcone: start from a region of |0\ket{0} which is larger than A0A_{0}, apply the green circuit, and trace out the qubits not in A0A_{0}. All quantum gates not in the green region are irrelevant since removing them does not affect the reduced density matrix of A0A_{0}.

Here is an interesting observation about the AA-replacement process: suppose we choose AA to be a (sufficiently large) ball of some smaller region A0A_{0} as in Eq. 6, then the backward lightcone of A0A_{0} ends at the freshly initialized qubits in step 2 of 2. In particular, the backward lightcone does not reach the unknown state |ψ\ket{\psi}, which allows us to reconstruct the reduced density matrix of |ψ\ket{\psi} on A0A_{0} by a known circuit. And yet, due to the invariance of |ψ\ket{\psi} (2) we can pretend that nothing has happened to |ψ\ket{\psi} and repeat this process. In other words,

Key observation: We have replaced part of the state with known operations, without disturbing the state.

This observation suggests an approach to learning a circuit for |ψ\ket{\psi}: repeatedly apply AA-replacement processes for different small regions AA, and hope to have the backward lightcone of more and more output qubits be contained entirely within the replacement process, and hope that eventually this holds true for all of the output qubits. If we can manage this, it means we must have generated |ψ\ket{\psi} solely from the collection of replacement processes (which are constructed by quantum circuits that are known to us) and thus we can extract from them a circuit that can generate |ψ\ket{\psi}, simply via the backward lightcone of all output qubits.

It is not obvious that this can work, because we need to apply replacement processes not only in parallel, but also on top of each other, since a single layer cannot cover all output qubits (e.g. Fig. 2(a)). The issue is that applying replacement processes on top of each other changes the lightcone structure: for example, the backward lightcone of A0A_{0} may be much larger than in Eq. 6 if there are additional layers on top, because the backward lightcone starts from the output which is at the very top of the circuit.

In the next section we pin down the exact conditions for this approach to work.

3.3 Covering schemes and reconstruction circuits

It turns out that we can make this approach work if we can find a collection of small regions that satisfy the following conditions which we call a covering scheme. Our plan is:

  1. 1.

    In this section we show that a covering scheme implies a learning algorithm.

  2. 2.

    In Section 3.4 we show how to construct good covering schemes for kk-dimensional lattices.

Definition 4 (Covering scheme).

A (,c,d)(\ell,c,d) covering scheme is a collection of subsets of qubits Sji[n]S_{j}^{i}\subseteq[n]

S11,S21,,Sm11,S12,S22,,Sm22,,S1,S2,,SmS^{1}_{1},S^{1}_{2},\dots,S^{1}_{m_{1}},S^{2}_{1},S^{2}_{2},\dots,S^{2}_{m_{2}},\dots,S^{\ell}_{1},S^{\ell}_{2},\dots,S^{\ell}_{m_{\ell}}

which satisfy the following conditions.

  1. 1.

    The size of each (Sji,d)\mathcal{B}(S^{i}_{j},d) is upper bounded by cc.

  2. 2.

    For every fixed ii, the sets (Sji,d)\mathcal{B}(S_{j}^{i},d) are pairwise disjoint for 1jmi1\leq j\leq m_{i}.

  3. 3.

    For each qubit v[n]v\in[n], there exists a SjiS_{j}^{i} such that ({v},(21)d)Sji\mathcal{B}(\{v\},(2\ell-1)d)\subseteq S_{j}^{i}.

We can think of these subsets as being divided into \ell different layers: in each layer 1i1\leq i\leq\ell, there are subsets S1i,S2i,,SmiiS^{i}_{1},S^{i}_{2},\dots,S^{i}_{m_{i}}. Condition 1 says that each of them is small (even after being enlarged by a radius of dd). Condition 2 says that the subsets in the same layer are disjoint, even after each of them is enlarged by a radius of dd. Condition 3 says that for each qubit, a ball around that qubit (of radius (21)d(2\ell-1)d) is entirely contained within some subset.

3.3.1 Examples in 1D

The example below shows a covering scheme in 1D with =2\ell=2 layers.

|ψ\ket{\psi}S11S_{1}^{1}S21S_{2}^{1}S31S_{3}^{1}S41S_{4}^{1}S22S_{2}^{2}S32S_{3}^{2}S42S_{4}^{2}S12S_{1}^{2}S52S_{5}^{2} (7)

Note that in each layer, the sets have some distance between each other, because we require that they remain disjoint even after being enlarged (Condition 2). In addition, the first layer and the second layer have a lot of overlap. This ensures that any qubit must lie within the interior of some set, which implies Condition 3.

Why is this useful? Recall that our idea is to repeatedly apply replacement processes. The reason to introduce covering schemes is the following:

Key idea: Applying replacement processes for a covering scheme allows us to reconstruct the entire state.

|ψ\ket{\psi}V1V_{1}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V1V_{1}^{\dagger}V2V_{2}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V2V_{2}^{\dagger}V3V_{3}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V3V_{3}^{\dagger}V4V_{4}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V4V_{4}^{\dagger}V6V_{6}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V6V_{6}^{\dagger}V7V_{7}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V7V_{7}^{\dagger}V8V_{8}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V8V_{8}^{\dagger}V5V_{5}|0\ket{0}|0\ket{0}V5V_{5}^{\dagger}V9V_{9}V9V_{9}^{\dagger}|0\ket{0}|0\ket{0}
(a) Reconstruction process
|ψ\ket{\psi}V1V_{1}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V1V_{1}^{\dagger}V2V_{2}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V2V_{2}^{\dagger}V3V_{3}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V3V_{3}^{\dagger}V4V_{4}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V4V_{4}^{\dagger}V6V_{6}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V6V_{6}^{\dagger}V7V_{7}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V7V_{7}^{\dagger}V8V_{8}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}V8V_{8}^{\dagger}V5V_{5}|0\ket{0}|0\ket{0}V5V_{5}^{\dagger}V9V_{9}V9V_{9}^{\dagger}|0\ket{0}|0\ket{0}
(b) Backward lightcone
|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}|0\ket{0}
(c) Reconstructed circuit
Figure 2: Illustration of the learning algorithm in 1D.

We first illustrate this idea in 1D in Fig. 2, and then give a formal argument in Section 3.3.2.

  • Reconstruction process. Suppose we apply S11S_{1}^{1}-replacement process, which is supported on (S11,d)\mathcal{B}(S_{1}^{1},d) and looks exactly the same as Eq. 6. Note that all replacement processes corresponding to the first layer in the covering scheme can be implemented in parallel, due to Condition 2 in 4. Next, we apply all replacement processes corresponding to the second layer in the covering scheme. We call the resulting diagram a reconstruction process, shown in Fig. 2(a).

  • Backward lightcone. Now we construct the backward lightcone for all output wires of the reconstruction process (Fig. 2(b)). The way to do this is to color all gates at the top layer in green, and then “spread” the green color backwards, until hitting a region of |0\ket{0}. Note that some of the spreading stops at the second layer of |0\ket{0}, but inevitably some of the spreading goes beyond the second layer and enters the first layer. However, all of the spreading stops at the first layer of |0\ket{0} and never touches the bottom unknown state |ψ\ket{\psi}.

  • Reconstructed circuit. By 2, the state |ψ\ket{\psi} remains invariant under the reconstruction process, and therefore the output state at the top layer equals |ψ\ket{\psi}. The backward lightcone consists entirely of known quantum circuits, and therefore it gives a reconstructed circuit that prepares |ψ\ket{\psi} (Fig. 2(c)). This circuit has the following features: it has depth 3d3d and acts on the all-|0\ket{0} input state, where we view the red qubits as ancilla qubits. After the circuit is applied, the entire state equals |ψ|junk\ket{\psi}\otimes\ket{\mathrm{junk}}, where the wires at the top correspond to |ψ\ket{\psi}, and the red wires (ancilla qubits) correspond to |junk\ket{\mathrm{junk}}.

3.3.2 Reconstruction theorem

In this section we give a rigorous argument for how to reconstruct the state in general. We start with a formal definiton of the reconstruction process.

Definition 5 (Reconstruction process).

The reconstruction process for |ψ\ket{\psi} is defined as follows. Let Vi,jV_{i,j} be a local inversion for SjiS_{j}^{i}. By 1, Vi,jV_{i,j} is a depth-dd circuit acting on (Sji,d)\mathcal{B}(S_{j}^{i},d). The reconstruction process is defined as follows:

For each 1i1\leq i\leq\ell, apply the SjiS_{j}^{i}-replacement process using Vi,jV_{i,j} for all jj in parallel.

More specifically, for each fixed ii we do the following:

  1. 1.

    Apply Vi,jV_{i,j} for all 1jmi1\leq j\leq m_{i} in parallel;

  2. 2.

    Trace out all qubits in SjiS_{j}^{i} for each 1jmi1\leq j\leq m_{i} and replace with |0\ket{0};

  3. 3.

    Apply Vi,jV_{i,j}^{\dagger} for all 1jmi1\leq j\leq m_{i} in parallel.

As shown in the 1D example in Fig. 2, a two-step argument is used to show that a circuit for preparing the unknown state |ψ\ket{\psi} can be extracted from the reconstruction process:

  1. 1.

    The state |ψ\ket{\psi} is invariant under each SjiS_{j}^{i}-replacement process (2), and therefore is invariant under the entire reconstruction process.

  2. 2.

    We can reconstruct the output state of the reconstruction process (which equals |ψ\ket{\psi}) via its backward lightcone, because the backward lightcone consists of known quantum circuits and in particular does not touch the unknown input state |ψ\ket{\psi} at the bottom.

Below we elaborate on the second point. At this point a more precise definition of the backward lightcone is needed. Note that this definition needs to be applicable to slightly more general quantum circuits with reset gates.

Definition 6 (Backward lightcone).

Let |ϕ=W|0n\ket{\phi}=W\ket{0^{n}} where WW is a quantum circuit consists of 2-qubit unitary gates and 1-qubit reset gates (a reset gate traces out the input and initializes a |0\ket{0} state). Let A[n]A\subseteq[n] be a subset of qubits. The backward lightcone of AA is a circuit diagram which is part of the circuit diagram of WW, defined as the collection of green gates acting on all-0 inputs, constructed as follows:

  1. 1.

    Color the output wires of WW corresponding to AA in blue.

  2. 2.

    Repeat the following process until no changes happen:
    If there exists a 2-qubit gate GG with a blue wire on top, color this gate in green. Moreover, consider each of the two wires at the bottom of GG. If it is not connected to a reset gate, color the wire in blue.

In other words, the backward lightcone consists of all quantum gates that could influence the reduced density matrix of |ϕϕ|\outerproduct{\phi}{\phi} on AA. The running time to construct the backward lightcone is linear in the size of WW.

The process to construct the backward lightcone can be viewed as spreading the green color from top to bottom, as shown in Fig. 2(b). The desired property for the backward lightcone, when applied to a reconstruction process, is that it stops entirely at intermediate reset gates and does not reach the bottom.

To help further illustrate this concept, we introduce a dual thought experiment. A different way of formulating our desired property is that we do not want the influence of the bottom input state to reach any top wire. The propagation of the influence can be viewed as forward lightcone spreading of the input state, that is, spreading the white color in Fig. 2(b) from bottom to top. Note that indeed, the white color stops entirely at intermediate reset gates and does not reach the top.

Now we are ready to prove that the desired property is guaranteed by the covering scheme.

Theorem 2 (Covering scheme implies learning algorithm).

Suppose |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is a depth-dd circuit acting on a kk-dimensional lattice. Let (,c,d)(\ell,c,d) be a covering scheme for the kk-dimensional lattice, and let WW be the reconstruction process for this covering scheme, which satisfies W|ψ=|ψW\ket{\psi}=\ket{\psi}. Then the backward lightcone of all output wires in W|ψW\ket{\psi} is a depth-(21)d(2\ell-1)d circuit CC which is part of WW.

The circuit CC can be used to prepare |ψ\ket{\psi} in the following sense: it acts on nn qubits as well as m=O(n)m=O(n) ancilla qubits, and

C|0n|0m=|ψ|junk.C\ket{0^{n}}\otimes\ket{0^{m}}=\ket{\psi}\otimes\ket{\mathrm{junk}}. (8)
Proof.

To prove that the backward lightcone of all output wires in W|ψW\ket{\psi} is part of WW and does not reach the input state |ψ\ket{\psi}, it suffices to show that the backward lightcone of each individual output wire in W|ψW\ket{\psi} must stop at some regions of reset gates in some replacement processes.

Keeping track of the backward lightcone can be tricky: the backward spreading process can stop at various different layers such as in Fig. 2(b). However, here we give a simple and pessimistic argument which suffices for our purpose.

Focus on a single output wire v[n]v\in[n] of W|ψW\ket{\psi} and imagine its backward spreading process. Part of the spreading may stop early at some reset gates, while other parts of the spreading may continue further. Instead of working with WW, suppose we consider a new quantum circuit WW^{\prime} where all reset gates in WW is replaced by the identity gate, with one exception: according to Condition 3 of 4, there exists a SjiS_{j}^{i} such that ({v},(21)d)Sji\mathcal{B}(\{v\},(2\ell-1)d)\subseteq S_{j}^{i}; we keep the reset gates in WW^{\prime} that correspond to the SjiS_{j}^{i}-replacement process.

Clearly, the backward spreading process in WW is entirely contained within the backward spreading process in WW^{\prime}, since WW^{\prime} removed some reset gates relative to WW which can only help the spreading. Now, observe the following: the backward spreading process in WW^{\prime} must stop at the reset gates in the SjiS_{j}^{i}-replacement process. This is because SjiS_{j}^{i} contains a ball around vv with radius (21)d(2\ell-1)d. By the time the spreading process reaches those reset gates, the process cannot spread further than a distance of (21)d(2\ell-1)d and therefore is entirely covered by those reset gates. The number (21)d(2\ell-1)d comes from a worst case estimate: suppose SjiS_{j}^{i} is within the very bottom layer of the covering scheme, then the spreading process has gone through the top 1\ell-1 layers of depth 2d2d as well as Vi,jV_{i,j}^{\dagger} of depth dd, with a total depth of (21)d(2\ell-1)d. This implies that the backward spreading process of vv in WW must be contained within WW: if it cannot reach the bottom even in WW^{\prime}, then it also cannot reach the bottom in WW.

This concludes the proof that CC is a (at most) depth-(21)d(2\ell-1)d circuit and is part of WW. Finally, note that CC is a unitary quantum circuit which outputs a pure state. In addition, the reduced density matrix on the nn output wires equals |ψψ|\outerproduct{\psi}{\psi}. This implies that the system and ancilla must be tensor product pure states as in Eq. 8. ∎

To conclude this section we give a recap about the role of different parameters of a (,c,d)(\ell,c,d) covering scheme in the learning algorithm.

  • dd is the promised depth of the unknown circuit that prepares |ψ\ket{\psi}.

  • \ell determines the depth of the learned circuit, which equals (21)d(2\ell-1)d.

  • cc determines the running time of the learning algorithm: the algorithm needs to find local inversions acting on a region of size cc, which takes time exponential in cc and dd.

Clearly, these parameters play an important role and are in tension with each other.

3.4 Good covering schemes

RR2R2R0.5R0.5R
(a) Lattice coloring
(b) Layer 1
(c) Layer 2
(d) Layer 3
Figure 3: A covering scheme for the 2D lattice, which is derived from a lattice coloring. Here R=13dR=13d.

In this section we construct good covering schemes for kk-dimensional lattices.

Theorem 3 (Lattice covering scheme).

For kk-dimensional lattice there exists a (k+1,c,d)\left(k+1,c,d\right) covering scheme for any integer d>0d>0, where

c((8k2+14k+2)d)k.c\leq\left((8k^{2}+14k+2)d\right)^{k}. (9)

Before giving the proof, we first discuss an example in 2D (Fig. 3). Our starting point is a new concept called lattice coloring.

Definition 7 (Lattice coloring).

A (w,c,R)(w,c,R) lattice coloring for the kk-dimensional lattice is defined as follows. Suppose the lattice is divided into disjoint subsets where each subset is connected. Each subset is assigned a color. We demand the following properties:

  1. 1.

    There are ww different colors.

  2. 2.

    Each subset has size at most cc.

  3. 3.

    Two different subsets with the same color must have distance at least RR.

Fig. 3(a) shows a (3,16R2,R)(3,16R^{2},R) coloring for the 2D lattice (16R216R^{2} is an overestimate). Here RR is a free parameter. Similar coloring schemes have been widely used in the physics literature (e.g. [BK19]). Now, we use this coloring to construct a covering scheme for the 2D lattice.

Lemma 1.

For 2D lattice there exists a (3,3844d2,d)\left(3,3844d^{2},d\right) covering scheme for any integer d>0d>0.

This covering scheme is shown in Figs. 3(b), 3(c) and 3(d). Below we explain it in detail.

The idea is the following: each color in the lattice coloring corresponds to a layer in the covering scheme (so =3\ell=3). We choose RR to be large enough, and then

  • Fix a color in the lattice coloring (say red regions in Fig. 3(a)), then for each small colored subset AA in Fig. 3(a), we assign a subset S=(A,5d)S=\mathcal{B}(A,5d) to the covering scheme (red regions in Fig. 3(c)).

Now, we choose RR to make sure that Condition 2 in 4 is satisfied. Say we consider two red regions AA and BB in Fig. 3(a) that are separated by distance RR. The corresponding subsets in the covering scheme are S1=(A,5d)S_{1}=\mathcal{B}(A,5d) and S2=(A,5d)S_{2}=\mathcal{B}(A,5d). Condition 2 in 4 demands that S1S_{1} and S2S_{2} are disjoint even after being enlarged further by distance dd (dashed regions in Fig. 3(c)). That is, (A,6d)\mathcal{B}(A,6d) and (B,6d)\mathcal{B}(B,6d) must be disjoint. We therefore choose R=13dR=13d to ensure this property.

Next, we show that Condition 3 in 4 is satisfied. Take any qubit v[n]v\in[n], then it must lie within some colored region in Fig. 3(a). Suppose the region is red and call it AA. Then ({v},5d)(A,5d)\mathcal{B}(\{v\},5d)\subseteq\mathcal{B}(A,5d) which is one of the subsets in the covering scheme in Fig. 3(c).

Finally, note that each small colored region in Fig. 3(a) is contained with in a box of 4R×4R4R\times 4R. The length scale of each subset in the covering scheme is at most 4R+2×5d=62d4R+2\times 5d=62d. Therefore, all subsets in the 2D covering scheme has size at most 62d×62d=3844d262d\times 62d=3844d^{2}.

Proof of 3.

The proof essentially repeats the above example. We first quote a coloring scheme for the kk-dimensional lattice (see e.g. [HLB+24, below Definition 17]).

Lemma 2 (kk-dimensional lattice coloring).

For kk-dimensional lattice there exists a (k+1,(2kR)k,R)\left(k+1,(2kR)^{k},R\right) lattice coloring. Each small colored region is contained in a kk-dimensional box of length scale 2kR2kR.

Each color in the lattice coloring corresponds to a layer in the covering scheme (so =k+1\ell=k+1). We choose RR to be large enough, and then for each small colored subset AA in the lattice coloring, we assign a subset S=(A,(2k+1)d)S=\mathcal{B}(A,(2k+1)d) to the corresponding layer of the covering scheme.

  • The depth of learned circuit is (21)d=(2k+1)d(2\ell-1)d=(2k+1)d.

  • To ensure Condition 2 in 4 is satisfied, we choose R=2×(2k+2)d+d=(4k+5)dR=2\times(2k+2)d+d=(4k+5)d.

  • The length scale of each subset in the covering scheme is at most 2kR+2×(2k+1)d=(8k2+14k+2)d2kR+2\times(2k+1)d=(8k^{2}+14k+2)d. Therefore, cc is at most ((8k2+14k+2)d)k\left((8k^{2}+14k+2)d\right)^{k}.

Remark 1.

In the proof of 3 we have chosen R=(4k+5)dR=(4k+5)d which leads to the stated scaling of cc. Note that choosing RR to be any number larger than that also gives a valid covering scheme, with a larger cc. This is useful for the discussions in Section 4.3.

4 Detailed analysis

In this section we give a detailed analysis which leads to the following main result.

Theorem 4 (Main result).

There is an algorithm that, given copies of an unknown state |ψ\ket{\psi}, with the promise that |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is an unknown depth-dd circuit acting on a kk-dimensional lattice (using arbitrary 2-qubit gates), outputs a depth-(2k+1)d(2k+1)d circuit WW that prepares |ψ\ket{\psi} up to ε\varepsilon trace distance, with success probability 1δ1-\delta. The algorithm uses MM copies of |ψ\ket{\psi} and runs in time TT, where

M=n42O(c)ε4lognδ,T=n42O(c)ε4lognδ+(nkdcε)O(dc).M=\frac{n^{4}\cdot 2^{O(c)}}{\varepsilon^{4}}\log\frac{n}{\delta},\quad T=\frac{n^{4}\cdot 2^{O(c)}}{\varepsilon^{4}}\log\frac{n}{\delta}+\left(\frac{nkd\cdot c}{\varepsilon}\right)^{O(d\cdot c)}. (10)

Here, c=O((3k)k+2d)kc=O((3k)^{k+2}d)^{k}, and WW uses rnr\cdot n ancilla qubits where r>0r>0 can be chosen to be an arbitrarily small constant.

4.1 The reconstruction process is robust

We first show that the final error is controlled, if we replace local inversions in the reconstruction process with approximate local inversions.

Definition 8 (ε\varepsilon-approximate local inversion).

Let VV be a unitary acting on ABAB, and denote the remaining system as CC (Fig. 1(b)). Let |ψ\ket{\psi} be a state defined on ABCABC. VV is an ε\varepsilon-approximate local inversion of the region AA for |ψ\ket{\psi} if

0|ATrBC(V|ψψ|V)|0A1ε.\bra{0}_{A}\Tr_{BC}\left(V\outerproduct{\psi}{\psi}V^{\dagger}\right)\ket{0}_{A}\geq 1-\varepsilon. (11)
Lemma 3.

Let VV be an ε\varepsilon-approximate local inversion of the region AA for |ψ\ket{\psi}. The corresponding AA-replacement process is given by

𝒱A𝒱,\mathcal{V}^{\dagger}\circ\mathcal{R}_{A}\circ\mathcal{V}, (12)

where calligraphic letters denote channels, and A\mathcal{R}_{A} is the reset channel acting on AA which traces out the input and prepares |00|A\outerproduct{0}{0}_{A}. Then we have

𝒱A𝒱(|ψψ|)|ψψ|14ε.\left\|\mathcal{V}^{\dagger}\circ\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1}\leq 4\sqrt{\varepsilon}. (13)
Proof.

First, note that due to the unitary invariance of the trace distance,

𝒱A𝒱(|ψψ|)|ψψ|1\displaystyle\left\|\mathcal{V}^{\dagger}\circ\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1} =𝒱A𝒱(|ψψ|)𝒱𝒱(|ψψ|)1\displaystyle=\left\|\mathcal{V}^{\dagger}\circ\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\mathcal{V}^{\dagger}\circ\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1} (14)
=A𝒱(|ψψ|)𝒱(|ψψ|)1.\displaystyle=\left\|\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1}.

Next, we can write V|ψV\ket{\psi} as

V|ψ=1ε|0A|ϕBC+ε|elseABC,V\ket{\psi}=\sqrt{1-\varepsilon^{\prime}}\ket{0}_{A}\ket{\phi}_{BC}+\sqrt{\varepsilon^{\prime}}\ket{\mathrm{else}}_{ABC}, (15)

where εε\varepsilon^{\prime}\leq\varepsilon and 0|A|elseABC=0\bra{0}_{A}\ket{\mathrm{else}}_{ABC}=0. Using the relationship between fidelity and trace distance,

𝒱(|ψψ|)|00|A|ϕϕ|BC1=21|ψ|V|0A|ϕBC|2=2ε.\left\|\mathcal{V}(\outerproduct{\psi}{\psi})-\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}\right\|_{1}=2\sqrt{1-\left|\bra{\psi}V^{\dagger}\ket{0}_{A}\ket{\phi}_{BC}\right|^{2}}=2\sqrt{\varepsilon^{\prime}}. (16)

Finally,

A𝒱(|ψψ|)𝒱(|ψψ|)1\displaystyle\left\|\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1} (17)
A𝒱(|ψψ|)|00|A|ϕϕ|BC1+|00|A|ϕϕ|BC𝒱(|ψψ|)1\displaystyle\leq\left\|\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}\right\|_{1}+\left\|\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}-\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1}
=A𝒱(|ψψ|)A(|00|A|ϕϕ|BC)1+|00|A|ϕϕ|BC𝒱(|ψψ|)1\displaystyle=\left\|\mathcal{R}_{A}\circ\mathcal{V}(\outerproduct{\psi}{\psi})-\mathcal{R}_{A}\left(\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}\right)\right\|_{1}+\left\|\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}-\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1}
𝒱(|ψψ|)|00|A|ϕϕ|BC1+|00|A|ϕϕ|BC𝒱(|ψψ|)1\displaystyle\leq\left\|\mathcal{V}(\outerproduct{\psi}{\psi})-\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}\right\|_{1}+\left\|\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC}-\mathcal{V}(\outerproduct{\psi}{\psi})\right\|_{1}
4ε.\displaystyle\leq 4\sqrt{\varepsilon}.

Here, the second line is by triangle inequality; the third line is because |00|A|ϕϕ|BC\outerproduct{0}{0}_{A}\otimes\outerproduct{\phi}{\phi}_{BC} is invariant under A\mathcal{R}_{A}; the fourth line is by data-processing inequality. ∎

Lemma 4.

Let Φ1,Φ2,,ΦT\Phi_{1},\Phi_{2},\dots,\Phi_{T} be arbitrary replacement processes using ε\varepsilon-approximate local inversions of |ψ\ket{\psi}, where each Φi\Phi_{i} has the form of Eq. 12 where VV is an ε\varepsilon-approximate local inversion for some arbitrary region. Then

ΦTΦ2Φ1(|ψψ|)|ψψ|14Tε.\left\|\Phi_{T}\circ\cdots\circ\Phi_{2}\circ\Phi_{1}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1}\leq 4T\sqrt{\varepsilon}. (18)
Proof.

Note that

ΦTΦ2Φ1(|ψψ|)|ψψ|1\displaystyle\left\|\Phi_{T}\circ\cdots\circ\Phi_{2}\circ\Phi_{1}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1} (19)
ΦTΦ2Φ1(|ψψ|)ΦT(|ψψ|)1+ΦT(|ψψ|)|ψψ|1\displaystyle\leq\left\|\Phi_{T}\circ\cdots\circ\Phi_{2}\circ\Phi_{1}(\outerproduct{\psi}{\psi})-\Phi_{T}(\outerproduct{\psi}{\psi})\right\|_{1}+\left\|\Phi_{T}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1}
ΦT1Φ2Φ1(|ψψ|)|ψψ|1+4ε,\displaystyle\leq\left\|\Phi_{T-1}\cdots\circ\Phi_{2}\circ\Phi_{1}(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1}+4\sqrt{\varepsilon},

where the second line is by triangle inequality, the third line is by data-processing inequality and 3. The claim follows from induction. ∎

4.2 Analysis of the learning algorithm

Next we put everything together and give a detailed analysis of the learning algorithm. The algorithm is given copies of an unknown quantum state |ψ\ket{\psi}, with the promise that |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where UU is a depth-dd circuit acting on a kk-dimensional lattice.

Step 1: build a covering scheme.

We build a (k+1,c,d)\left(k+1,c,d\right) covering scheme (here c=O(k2d)kc=O(k^{2}d)^{k} or larger, depending on the choice of RR, see Remark 1) for the kk-dimensional lattice according to 3. This covering scheme is divided into =k+1\ell=k+1 layers. Note that there are less than nn subsets in total.

Step 2: learn reduced density matrices.

To find local inversions for the covering scheme it suffices to learn reduced density matrices on a radius-dd ball around each subset (dashed regions in Figs. 3(b), 3(c) and 3(d)). Each reduced density matrix has size which has the same scaling as cc and there are less than nn of them.

Suppose we would like to learn all of them within ε1\varepsilon_{1} trace distance, with δ\delta failure probability. Here we use a simple existing result (see e.g. [HLB+24, Lemma 23]): for each copy of |ψ\ket{\psi}, we measure each qubit in a random Pauli basis. The collection of measurement outcomes is known as classical shadows or randomized measurement dataset [HKP20, EFH+23]. The desired result can be achieved by processing this dataset, which uses

M=2O(c)ε12lognδM=\frac{2^{O(c)}}{\varepsilon_{1}^{2}}\log\frac{n}{\delta} (20)

copies of |ψ\ket{\psi}. The running time to process this dataset scales similarly. From now on everything is classical processing on the learned reduced density matrices, and we assume that all learned reduced density matrices are within ε1\varepsilon_{1} error (this happens with probability at least 1δ1-\delta).

Step 3: find approximate local inversions.

For each reduced density matrix, suppose it looks like the region ABAB in Fig. 1(b). We will brute force search over an ε1\varepsilon_{1}-net on depth-dd circuits acting on ABAB to find a depth-dd circuit that approximately inverts the region AA. In this way we can find a 3ε13\varepsilon_{1}-approximate local inversion of AA for |ψ\ket{\psi} (see e.g. [HLB+24, Proof of first claim of Theorem 9] for a proof). The running time scales as the size of the ε1\varepsilon_{1}-net, which equals

(kdcε1)O(dc).\left(\frac{kd\cdot c}{\varepsilon_{1}}\right)^{O(d\cdot c)}. (21)

See e.g. [HLB+24, Lemma 19] for a proof.

Note that this can be significantly improved if we assume a discrete gate set, which we do not discuss here.

Step 4: find approximate reconstruction circuit.

We have found a 3ε13\varepsilon_{1}-approximate local inversion for every subset in the covering scheme. Construct a reconstruction process (5) using these approximate local inversions, denote as Φ\Phi. By 4, we have

Φ(|ψψ|)|ψψ|14n3ε1.\left\|\Phi(\outerproduct{\psi}{\psi})-\outerproduct{\psi}{\psi}\right\|_{1}\leq 4n\sqrt{3\varepsilon_{1}}. (22)

By 2, the covering scheme guarantees that the backward lightcone CC of the output of Φ\Phi is contained entirely within Φ\Phi (in fact, the output state of Φ\Phi is independent of its input state). CC is a depth-(2k+1)d(2k+1)d circuit. Our final learned state ρ^\hat{\rho} is thus equal to Φ(|ψψ|)\Phi(\outerproduct{\psi}{\psi}), which can be prepared by running CC on all-|0\ket{0} input and trace out those qubits that do not belong to the output of Φ\Phi. To achieve ε\varepsilon-closeness in trace distance, it suffices to choose ε1=ε248n2\varepsilon_{1}=\frac{\varepsilon^{2}}{48n^{2}}.

This concludes the proof of the complexity statements in the main result.

4.3 Optimizing the number of ancilla qubits

Here we explicitly calculate (a rough upper bound of) the number of ancilla qubits needed for reconstructing |ψ\ket{\psi}, which corresponds to the red qubits in Fig. 2(c). In Figs. 3(b), 3(c) and 3(d), the ancilla qubits live in the colored regions outside solid black boxes.

We start from a lattice coloring (e.g. Fig. 3(a)). Note that each small colored region is contained in a kk-dimensional box of length scale 2kR2kR; meanwhile each small colored region at least contains a kk-dimensional box of length scale RR (see e.g. [HLB+24, below Definition 17]). The number of colored regions is at most n/Rkn/R^{k}.

Next we upper bound the number of ancilla qubits that can be associated with a colored region. The length scale of a subset in a covering scheme is at most 2kR+2×(2k+1)d3kR2kR+2\times(2k+1)d\leq 3kR, since we will choose RR to be at least (4k+5)d(4k+5)d. The ancilla qubits live at 2k2k different k1k-1 dimensional surfaces with thickness (2k+1)d3kd(2k+1)d\leq 3kd; the total volume is at most (2k)×(3kR)k1×(3kd)(2k)\times(3kR)^{k-1}\times(3kd). Overall, the total number of ancilla qubits in the entire circuit is at most

nRk×(2k)×(3kR)k1×(3kd)nR×(3k)k+1d.\frac{n}{R^{k}}\times(2k)\times(3kR)^{k-1}\times(3kd)\leq\frac{n}{R}\times(3k)^{k+1}d. (23)

Choosing R=L(3k)k+1dR=L\cdot(3k)^{k+1}d for some sufficiently large constant LL, the total number of ancilla qubits is an arbitrarily small constant times nn. In fact we could also afford to choose L=ω(1)L=\omega(1) to be some small function (e.g. logloglogn\log\log\log n) so that the total number of ancilla qubits is sublinear. Below we just consider LL as being a constant.

The complexity scales with cc as shown in Section 4.2, which is given by

c(3kR)k=O((3k)k+2d)k.c\leq(3kR)^{k}=O((3k)^{k+2}d)^{k}. (24)

5 Testing quantum circuit complexity

The following result is a stronger version than stated in 1.

Theorem 5.

Given copies of an unknown state |ψ\ket{\psi} on a kk-dimensional lattice, with the promise that one of the following two cases hold:

  • Case 1: Low complexity. |ψ=U|0n\ket{\psi}=U\ket{0^{n}} where the depth of UU is at most dd;

  • Case 2: High complexity. Let ρ\rho be any nn-qubit state prepared by a depth at most (2k+1)d(2k+1)d circuit using rnr\cdot n ancilla qubits, where rr is some small constant. Then ρ|ψψ|1>ε\left\|\rho-\outerproduct{\psi}{\psi}\right\|_{1}>\varepsilon.

There is an algorithm that decides which is the case, with success probability at least 1δ1-\delta, where the sample complexity and running time is the same as in 4.

Proof.

We perform Step 1 and 2 as prescribed by Section 4.2 (note that ε1=ε248n2\varepsilon_{1}=\frac{\varepsilon^{2}}{48n^{2}}). Then, we declare “Case 1: Low complexity” if the search procedure to find all desired approximate local inversions in Step 3 all succeed. Otherwise, declare “Case 2: High complexity”.

We assume that the reduced density matrices in Step 2 are all within ε1\varepsilon_{1} error, which happens with probability at least 1δ1-\delta. Conditioned on this event, the algorithm is always correct, because of the following reasoning.

  • In Case 1, all search procedures to find the desired approximate local inversions are guaranteed to succeed, so the algorithm must output “Case 1”.

  • In Case 2, suppose by contradiction that all search procedures succeed. Then, by the arguments of the main result, this actually gives a proof that |ψ\ket{\psi} can be prepared within ε\varepsilon error, using a quantum circuit of depth (2k+1)d(2k+1)d and a small amount of ancilla qubits, which contradicts the assumption of Case 2. Therefore, some of the search procedures must fail, and the algorithm must output “Case 2”.

Acknowledgements

This material is based upon work supported by the U.S. Department of Energy, Office of Science, National Quantum Information Science Research Centers, Quantum Systems Accelerator. Additional support is acknowledged from DOE Grant No. DE-SC0024124 and NSF Grant No. 2311733.

References

  • [AA24] Anurag Anshu and Srinivasan Arunachalam “A survey on the complexity of learning quantum states” In Nature Reviews Physics 6.1, 2024, pp. 59–69 DOI: 10.1038/s42254-023-00662-4
  • [AK22] Eric R Anschuetz and Bobak T Kiani “Quantum variational algorithms are swamped with traps” In Nature Communications 13.1 Nature Publishing Group UK London, 2022, pp. 7760
  • [AT18] Dorit Aharonov and Yonathan Touati “Quantum Circuit Depth Lower Bounds For Homological Codes”, 2018 arXiv:1810.03912 [quant-ph]
  • [BCK+22] Kishor Bharti et al. “Noisy intermediate-scale quantum algorithms” In Rev. Mod. Phys. 94 American Physical Society, 2022, pp. 015004 DOI: 10.1103/RevModPhys.94.015004
  • [BHS+18] Juan Bermejo-Vega et al. “Architectures for Quantum Simulation Showing a Quantum Speedup” In Phys. Rev. X 8 American Physical Society, 2018, pp. 021010 DOI: 10.1103/PhysRevX.8.021010
  • [BHV06] S. Bravyi, M.. Hastings and F. Verstraete “Lieb-Robinson Bounds and the Generation of Correlations and Topological Quantum Order” In Phys. Rev. Lett. 97 American Physical Society, 2006, pp. 050401 DOI: 10.1103/PhysRevLett.97.050401
  • [BK19] Fernando G… Brandão and Michael J. Kastoryano “Finite Correlation Length Implies Efficient Preparation of Quantum Thermal States” In Communications in Mathematical Physics 365.1, 2019, pp. 1–16 DOI: 10.1007/s00220-018-3150-8
  • [CGW10] Xie Chen, Zheng-Cheng Gu and Xiao-Gang Wen “Local unitary transformation, long-range quantum entanglement, wave function renormalization, and topological order” In Phys. Rev. B 82 American Physical Society, 2010, pp. 155138 DOI: 10.1103/PhysRevB.82.155138
  • [CIKK16] Marco L. Carmosino, Russell Impagliazzo, Valentine Kabanets and Antonina Kolokolova “Learning Algorithms from Natural Proofs” In 31st Conference on Computational Complexity (CCC 2016) 50, Leibniz International Proceedings in Informatics (LIPIcs) Dagstuhl, Germany: Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, 2016, pp. 10:1–10:24 DOI: 10.4230/LIPIcs.CCC.2016.10
  • [EFH+23] Andreas Elben et al. “The randomized measurement toolbox” In Nature Reviews Physics 5.1, 2023, pp. 9–24 DOI: 10.1038/s42254-022-00535-2
  • [GWD17] Xun Gao, Sheng-Tao Wang and L.-M. Duan “Quantum Supremacy for Simulating a Translation-Invariant Ising Spin Model” In Phys. Rev. Lett. 118 American Physical Society, 2017, pp. 040502 DOI: 10.1103/PhysRevLett.118.040502
  • [HE23] Dominik Hangleiter and Jens Eisert “Computational advantage of quantum random sampling” In Rev. Mod. Phys. 95 American Physical Society, 2023, pp. 035001 DOI: 10.1103/RevModPhys.95.035001
  • [HKP20] Hsin-Yuan Huang, Richard Kueng and John Preskill “Predicting many properties of a quantum system from very few measurements” In Nature Physics 16.10, 2020, pp. 1050–1057 DOI: 10.1038/s41567-020-0932-7
  • [HLB+24] Hsin-Yuan Huang et al. “Learning Shallow Quantum Circuits” In Proceedings of the 56th Annual ACM Symposium on Theory of Computing, STOC 2024 Vancouver, BC, Canada: Association for Computing Machinery, 2024, pp. 1343–1351 DOI: 10.1145/3618260.3649722
  • [KKR24] Hyun-Soo Kim, Isaac Kim and Daniel Ranard “Private communication”, 2024
  • [LMN93] Nathan Linial, Yishay Mansour and Noam Nisan “Constant depth circuits, Fourier transform, and learnability” In Journal of the ACM (JACM) 40.3 ACM New York, NY, USA, 1993, pp. 607–620
  • [MOS03] Elchanan Mossel, Ryan O’Donnell and Rocco P. Servedio “Learning Juntas” In Proceedings of the Thirty-Fifth Annual ACM Symposium on Theory of Computing, STOC ’03 San Diego, CA, USA: Association for Computing Machinery, 2003, pp. 206–212 DOI: 10.1145/780542.780574
  • [PSC21] Lorenzo Piroli, Georgios Styliaris and J. Cirac “Quantum Circuits Assisted by Local Operations and Classical Communication: Transformations and Phases of Matter” In Phys. Rev. Lett. 127 American Physical Society, 2021, pp. 220503 DOI: 10.1103/PhysRevLett.127.220503
  • [RF21] Cambyse Rouzé and Daniel Stilck França “Learning quantum many-body systems from a few copies”, 2021 arXiv:2107.03333 [quant-ph]
  • [TD04] Barbara M. Terhal and David P. DiVincenzo “Adaptive Quantum Computation, Constant Depth Quantum Circuits and Arthur-Merlin Games”, 2004 arXiv:quant-ph/0205133 [quant-ph]
  • [YW23] Nengkun Yu and Tzu-Chieh Wei “Learning marginals suffices!”, 2023 arXiv:2303.08938 [quant-ph]