USRE41900E1  Compiler for a quantum computer  Google Patents
Compiler for a quantum computer Download PDFInfo
 Publication number
 USRE41900E1 USRE41900E1 US10947489 US94748904A USRE41900E US RE41900 E1 USRE41900 E1 US RE41900E1 US 10947489 US10947489 US 10947489 US 94748904 A US94748904 A US 94748904A US RE41900 E USRE41900 E US RE41900E
 Authority
 US
 Grant status
 Grant
 Patent type
 Prior art keywords
 operations
 method
 sequence
 data
 node
 Prior art date
 Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
 Expired  Lifetime
Links
Images
Classifications

 G—PHYSICS
 G06—COMPUTING; CALCULATING; COUNTING
 G06N—COMPUTER SYSTEMS BASED ON SPECIFIC COMPUTATIONAL MODELS
 G06N99/00—Subject matter not provided for in other groups of this subclass
 G06N99/002—Quantum computers, i.e. information processing by using quantum superposition, coherence, decoherence, entanglement, nonlocality, teleportation

 B—PERFORMING OPERATIONS; TRANSPORTING
 B82—NANOTECHNOLOGY
 B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
 B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic

 G—PHYSICS
 G06—COMPUTING; CALCULATING; COUNTING
 G06N—COMPUTER SYSTEMS BASED ON SPECIFIC COMPUTATIONAL MODELS
 G06N7/00—Computer systems based on specific mathematical models
 G06N7/005—Probabilistic networks

 Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSSSECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSSREFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
 Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
 Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSSREFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
 Y10S977/00—Nanotechnology
 Y10S977/902—Specified use of nanostructure
 Y10S977/932—Specified use of nanostructure for electronic or optoelectronic application
 Y10S977/933—Spintronics or quantum computing
Abstract
Description
The present application includes a microfiche appendix comprising the C++ source code of a fully functional computer program called Qubiter1.0. Qubiter1.0 is a possible embodiment of the software of the present invention. The microfiche appendix comprises 1 microfiche with a total of 52 frames. The first frame is a test pattern for focusing. The second frame, called Appendix A, is a list of files contained in a CodeWarrior™ project for Qubiter1.0. Subsequent frames are labelled Appendix B, and comprise source code contained within said files.
The invention relates to an array of quantum bits known as a quantum computer. More specifically, it relates to the generation of the instruction sequences that are used to manipulate such an array.
This invention deals with quantum computers. A quantum computer is an array of quantum bits (qubits) together with some hardware for manipulating these qubits. Quantum computers with only a few bits have already been built. For a review of quantum computers, see DiV95: D. P. DiVincenzo, Science 270, 255 (1995). See also Ste97:A. M. Steane, Los Alamos eprint http://xxx.lanl.gov/abs/quantph/9708022 www.arxiv.org/abs/quantph/9708022.
This invention also deals with Quantum Bayesian (QB) nets. QB Nets are a method of modeling quantum systems graphically in terms of network diagrams. For more information, see Tuc95: R. R. Tucci, Int. Jour. of Mod. Physics B9, 295 (1995). See also Tuc98: U.S. Pat. No. 5,787,236.
In classical computation and digital electronics, one deals with sequences of elementary instructions (instructions such as AND, NOT and OR). These sequences are used to manipulate an array of classical bits. The instructions are elementary in the sense that they act on only a few bits (usually 1, 2 or 3) at a time. Henceforth, we will sometimes refer to sequences as products and to instructions as operations, operators, steps or gates. Furthermore, we will abbreviate the phrase “sequence of elementary operations” by “SEO”. In quantum computation, one also deals with SEOs, but for manipulating qubits instead of classical bits.
This invention comprises a classical computer running a computer program that expresses the information contained in a QB net as a SEO. One can then run these SEOs on a quantum computer. Of course, QB nets can and have been run entirely on a classical computer. (See the software program called “Quantum Fog”, produced by the Artiste company (www.artiste.com)). However, because of the higher speeds promised by quantum parallelism, one expects QB nets to run much faster on a quantum computer.
With classical computers, one usually writes a computer program in a high level language (like Fortran, C or C++). A compiler then expresses this as a SEO for manipulating bits. In the case of quantum computers, a QB net may be thought of as a program in a high level language. This invention is like a “quantum compiler” in the sense that it can take a QB net input, and reexpress it as a SEO that can then be used to manipulate qubits.
This invention shows how to reduce a QB net into a SEO by a two step process. First, express the information contained in the QB net as a sequence of unitary operators. Second, express each of those unitary operators as a SEO. An appendix to this document contains the C++ source code of a computer program called “Qubiter.1.0”. In its current version (1.0), Qubiter can decompose into a SEO only the simplest nontrivial kind of QB net: a single unitary matrix, or, equivalently, 2 connected nodes. Future versions of Qubiter are planned that will take an arbitrary QB net as input, and return as output a SEO for running a quantum computer.
QB nets are to quantum physics what Classical Bayesian (CB) nets are to classical physics. For a review of CB nets, see Nea9O: Richard E. Neapolitan, Probabilistic Reasoning in Expert Systems: Theory and Algorithms (Wiley, 1990). See also Pea88: Judea Pearl, Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference (Morgan Kaufmann, Palo Alto, 1988). CB nets have been used very successfully in the field of artificial intelligence (AI). Thus, we hope and expect that some day QB nets, running on quantum computers, will be used for AI applications. In fact, we believe that quantum computers are ideally suited for such applications. First, because AI tasks often require tremendous power, and quantum computers seem to promise this. Second, because quantum computers are plagued by quantum noise, which makes their coherence times short. There are palliatives to this, such as quantum error correction (See the review Ste97). But such palliatives come at a price: a large increase in the number of steps. The current literature often mentions factoring a large number into primes as a future use of quantum computers (See the review Ste97). However, due to noise, quantum computers may ultimately prove to be impractical for doing long precise calculations such as this. On the other hand, short coherence times appear to be a less serious problem for the types of calculations involved in AI. The human brain has coherence times too short to factor a 100 digit number into primes, and yet long enough to conceive the frescoes in the Sistine Chapel. We do not mean to imply that the human brain is a quantum computer. An airplane is not a bird, but it makes a good flyer. Perhaps a quantum computer, although not a human brain, can make a good thinker.
To our knowledge, nobody else has invented a method of reducing an arbitrary QB net to a SEO for running a quantum computer. It's true that previous workers (See Bar95: A. Barrenco, C. H. Bennett, R. Cleve, D. P. DiVincenzo, N. Margolus, P. Shor, T. Sleator, J. H. Smolin, H. Weinfurter, Physical Review A 52, 3457 (1995)) have described a method for reducing a single unitary operator into a SEO. But our method for doing this is significantly different from theirs. Their method is based on a mathematical technique described in Rec94: M. Reck and A. Zeilinger, Physical Review Letters 73, 58 (1994). Our method is based on a mathematical technique called the CS Decomposition, to be described later. For a review of the CS decomposition, see Pai94: C. C. Paige, M. Wei, Linear Algebra And Its Applications 208, 303 (1994). Our CS method for reducing unitary matrices has inherent binary symmetries that make it easy to apply to qubit systems, which also possess binary symmetries. The method of Bar95 possesses no such symmetries. For this reason, we believe our method to be superior to theirs.
The main goal of the invention is to provide a new method for generating the SEOs that are used to manipulate a quantum computer. This goal is achieved by means of a classical computer running a computer program that takes as input a QB net, and returns as output the desired SEO.
A related goal of the invention is for said computer program to serve as a blueprint that future workers can modify and enlarge.
A related goal is to allow users to run QB nets on a quantum instead of a classical computer. The QB nets could be used, for example, to do AI tasks such as decision making.
A quantum computer is an array of quantum bits (qubits) together with some method for manipulating these qubits. Quantum Bayesian (QB) nets are a method of modeling quantum systems graphically in terms of network diagrams.
This invention comprises a classical computer that runs a computer program. The program takes a QB net and decomposes it into a sequence of elementary operations (SEO). Such a sequence can be used to manipulate a quantum computer.
This invention shows how to reduce a QB net into a SEO by performing four steps: (1) Find eras. (2) Insert delta functions. (3) Find unitary extensions of era matrices. (4) Decompose each unitary matrix into a SEO.
In step (1), we partition the set of nodes of the QB net into subsets called eras. All nodes in a given era “occur at roughly the same time”. We also assign a matrix to each era.
In step (2), we pad the era matrices of step (1) with delta functions so that the resultant era matrices can be multiplied by each other.
In step (3), we extend the era matrices of step (2) (by adding rows and columns) so that the resultant era matrices are all unitary and of the same size.
In step (4), we reduce into a SEO each of the unitary era matrices of step (3). Step (4) is based on the CS Decomposition Theorem. This theorem asserts that: given a unitary matrix U, if we partition it into 4 blocks U_{0}, U_{1}, U_{2}, U_{3 }of the same size, then one can express each U_{k}, where kε{0, 1, 2, 3□, as a product L_{k}D_{k}R_{k}, such that L_{k }and R_{k }are unitary matrices and D_{k }is diagonal. Since the matrices L_{k }and R_{k }are unitary, one can apply the CS Decomposition Theorem to them next. One can continue to apply the CS Decomposition Theorem to the unitary matrices generated in previous steps. In this way, one can express the original matrix U as a product of matrices of a type that we call “central matrices”. We show how to express any central matrix as a SEO.
An appendix to this document contains the C++ source code of a computer program called “Qubiter1.0”. In its current version (1.0), Qubiter can decompose into a SEO only the simplest nontrivial kind of QB net: a single unitary matrix, or, equivalently, 2 connected nodes. Future versions of Qubiter are planned that will take an arbitrary QB net as input, and return as output a SEO for running a quantum computer.
(A)NEW METHOD
We begin by presenting a brief review of QB nets. For more information, see Tuc95, Tuc98.
In what follows, we use the following notation. We define Z_{a,b}={a,a+1a +2 . . . , b} for any integers a and b, δ(x,y) equals one if x=y and zero otherwise. For any finite set S, S denotes the number of elements in S.
We call a graph (or a diagram ) a collection of nodes with arrows connecting some pairs of these nodes. The arrows of the graph must satisfy certain constraints. We call a labelled graph a graph whose nodes are labelled. A QB net consists of two parts: a labelled graph with each node labelled by a random variable, and a collection of node matrices, one matrix for each node. These two parts must satisfy certain constraints.
An internal arrow is an arrow that has a starting (source) node and a different ending (destination) one. We will use only internal arrows. We define two types of nodes: an internal node is a node that has one or more internal arrows leaving it, and an external node is a node that has no internal arrows leaving it. It is also common to use the terms root node or prior probability node for a node which has no incoming arrows (if any arrows touch it, they are outgoing ones).
We restrict our attention to acyclic graphs: that is, graphs that do not contain cycles. (A cycle is a closed path of arrows with the arrows all pointing in the same sense.)
We assign a random variable to each node of the QB net. (Henceforth, we will underline or put a caret over random variables. For example, we might write P({circumflex over (x)}=x) for the probability that the random variable {circumflex over (x)} assumes the particular value x.) Suppose the random variables assigned to the N nodes are {circumflex over (x)}_{1}, {circumflex over (x)}_{2}, . . . , {circumflex over (x)}_{N}. For each jεZ_{1,N}, the random variable {circumflex over (x)}_{j }will be assumed to take on values within a finite set Σ_{j }called the set of possible states of {circumflex over (x)}_{j}.
For example, consider the net of FIG. 1. Nodes 11, 12 and 13 are internal and node 14 is external. Node 11 is a root node. There are four nodes so N=4. We will assume that the four nodes must lie in one of two states: either no or si. Thus, Σ_{1}=Σ_{2}=Σ_{3}=Σ_{4}={no,si}.
If S={k_{1}, k_{2}, . . . ,k_{S}}⊂Z_{1,N}, and k_{1}<k_{2}<. . . <k_{S}, define (x.)_{S}=(x_{k} _{ 1 }, x_{k} _{ 2 }, . . . , x_{k} _{ S }) and ({circumflex over (x)}.)_{S}=(x_{k} _{ 1 }, {circumflex over (x)}_{k} _{ 2 }, . . . , {circumflex over (x)}_{k} _{ S }). Sometimes, we also abbreviate (x.)_{Z} _{1,N }(i.e., the vector that includes all the possible x_{j }components) by just x., and ({circumflex over (x)}.)_{Z} _{ 1,N }by just {circumflex over (x)}..
For example, suppose N=4. One has Z_{1,4}={1,2,3,4}. If S={1,3}, then S=2. Furthermore, (x.)_{S}=(x_{1},x_{3}) and ({circumflex over (x)}.)_{S}=({circumflex over (x)}_{1}, {circumflex over (x)}_{3}). One defines x.=(x.)_{z} _{ 1,4 }=(x_{1},x_{2}, x_{3},x_{4}) and {circumflex over (x)}.=({circumflex over (x)}.)_{z} _{ 1,4 }=({circumflex over (x)}_{1}, {circumflex over (x)}_{2},{circumflex over (x)}_{3},{circumflex over (x)}_{4}).
Let Z_{ext }be the set of all jεZ_{1,N }such that {circumflex over (x)}_{j }is an external node, and let Z_{int }be the set of all jεZ_{1,N }such that {circumflex over (x)}_{j }is an internal node. Clearly, Z_{ext }and Z_{int }are disjoint and their union is Z_{1,N}.
For example, for
Each possible value x. of {circumflex over (x)}. defines a different net story. For any net story x., we call (x.)_{z} _{ int }the internal state of the story and (x.)_{z} _{ ext }its external state.
For example, a possible story for the net of
For each net story, we may assign an amplitude to each node. Define S_{j }to be the set of all k such that an arrow labelled x_{k }(i.e., an arrow whose source node is {circumflex over (x)}_{k}) enters node {circumflex over (x)}_{j}. We assign a complex number A_{j}[x_{m}(x.)_{S} _{ j }] to node {circumflex over (x)}_{j}. We call A_{j}[x_{j}(x.)_{S} _{ j }] the amplitude of node {circumflex over (x)}_{j }within net story x..
For example, consider a particular net story, call it (x_{1}, x_{2},x_{3},x_{4}), of FIG. 1. No arrow enters node {circumflex over (x)}_{1 }so both S_{1 }and (x.)_{S} _{ 1 }are empty. Node {circumflex over (x)}_{2 }is entered by an arrow from node {circumflex over (x)}_{1 }so S_{2}={1} and (x.)_{S} _{ 2 }=(x_{1}). Likewise, S_{3}={1} and (x.)_{S} _{ 3 }=(x_{1}). Finally, S_{4}={2,3} and (x.)_{S} _{ 4 }=(x_{2},x_{3}). We assign the complex number A_{1}[x_{1}] to node {circumflex over (x)}_{1}, A_{2}[x_{2}x_{1}] to node {circumflex over (x)}_{2}, A_{3}[x_{3}x_{1}] to node {circumflex over (x)}_{3}, and A_{4}[x_{4}x_{2},x_{3}] to node {circumflex over (x)}_{4}.
The amplitude of net story x, call it A(x.), is defined to be the product of all the node amplitudes A_{j}[x_{j}(x.)_{S} _{j}] for jεZ_{1,N}. Thus,
For example, consider a particular net story, call it (x_{1}, x_{2}, x_{3}, x_{4}), of FIG. 1. One has that
A(x_{1},x_{2},x_{3},x_{4})=A_{1}[x_{1}]A_{2}[x_{2}x_{1}]A_{3}[x_{3}x_{1}]A_{4}[x_{4}x_{2},x_{3]} (2)
The function A_{j }with values A_{j}[x_{j}(x.)_{S} _{ j }] determines a matrix that we will call the node matrix of node {circumflex over (x)}_{j}, and denote by Q_{j}. Thus, x_{j }is the matrix's row index and (x.)_{S} _{ j }is its column index.
For example,
One can translate a QB net into a SEO by performing 4 steps: (1) Find eras. (2) Insert delta functions. (3) Find unitary extensions of era matrices. (4) Decompose each unitary matrix into a SEO. Next we will discuss these 4 steps in detail. We will illustrate our discussion by using Teleportation as an example. Teleportation was first discussed in Tel93: C. H. Bennett, G. Brassard, C. Crépeau, R. Jozsa, A. Peres, W. K. Wootters, Physical Review Letters 70, 1895 (1993).
Step 1: Find Eras
The root node eras of a graph are defined as follows. Call the original graph Graph(1). The first era T_{1 }is defined as the set of all root nodes of Graph(1). Call Graph(2) the graph obtained by erasing from Graph(1) all the T_{1 }nodes and any arrows connected to these nodes. Then T_{2 }is defined as the set of all root nodes of Graph(2). One can continue this process until one defines an era T_{τ }such that Graph(τ+1) is empty. (One can show that if Graph(1) is acyclic, then one always arrives at a Graph(τ+1) that is empty.) For example,
Rather than defining eras by (1) removing successive layers of root nodes, one can also define them by (2) removing successive layers of external nodes. We call this second type of era, the external node eras of the graph. For example,
This process whereby one classifies the nodes of an acyclic graph into eras is a well know technique referred to as a chronological or topological sort in the computer literature. See, for example, Fla95: Bryan Flamig, Practical Algorithms in C++ (Wiley, 1995) page 369.
Henceforth, for the sake of definiteness, we will speak only of root node eras. The case of external node eras can be treated similarly.
Suppose that aεZ_{1,τ}. The arrows exiting the a'th era are labelled by (x.)_{T} _{ a }. Those entering it are labelled by (x.)_{Γ} _{ a }, where Γ_{a }is defined by Γ_{a}=∪_{jεT} _{ a }S_{j}. Note that the a'th era node is only entered by arrows from nodes that belong to previous (not subsequent) eras so Γ_{a}⊂T_{a−1}∪. . . ∪T_{2}∪T_{1}. The amplitude B_{a }of the a'th era is defined as
The amplitude A(x.) of story x. is given by
For example, for Teleportation we get from
B_{1}(x_{1},x_{4})=A_{1}(x_{1})A_{4}(x_{4}), (5a)
B_{2}(x_{2},x_{3}x_{1})=A_{2}(x_{2}x_{1})A_{3}(x_{3}x_{1}), (5b)
B_{3}(x_{5}x_{2},x_{4})=A_{5}(x_{5}x_{2},x_{4}), (5c)
B_{4}(x_{6}x_{3},x_{5})=A_{6}(x_{6}x_{3},x_{5}), (5d)
and
A(x.)=B_{4}B_{3}B_{2}B_{1}. (6)
Step 2: Insert Delta Functions
The Feynman Integral FI for a QB net is defined by
Note that we are summing over all stories x. that have (x.)_{Z} _{ ext }as their external state. We want to express the right side of Eq. (7) as a product of matrices.
Consider how to do this for Teleportation. In that case one has
where the B_{a }are given by Eqs. (5). The right side of Eq. (8) is not ready to be expressed as a product of matrices because the column indices of B_{a+1 }and the row indices of B_{a }are not the same for all aεZ_{1,τ−1}. Furthermore, the variable x_{3 }occurs in B_{4 }and B_{2 }but not in B_{3}. Likewise, the variable x_{4 }occurs in B_{3 }and B_{1 }but not in B_{2}. Suppose we define
where we sum over all intermediate indices; i.e., all x_{j} ^{a }except x_{6}. Contrary to Eq. (8), the right side of Eq. (10) can be expressed immediately as a product of matrices since now B_{a+1 }column indices and B_{a }row indices are the same. The purpose of inserting a delta function of x_{3 }into B_{3 }is to allow the system to “remember” the value of X_{3 }between nonconsecutive eras T_{4 }and T_{2}. Inserting a delta function of x_{4 }into B_{2 }serves a similar purpose.
In the Teleportation net of
B_{1}(x_{1})=A_{1}(x_{2}), (11a)
B_{2}(x_{2},x_{3}x_{1})=A_{3}(x_{3}x_{1})A_{2}(x_{2}x_{1}), (11b)
B_{3}(x_{4}x_{3})=A_{4}(x_{4}x_{3}), (11c)
B_{4}(x_{5}x_{4})=A_{5}(x_{5}x_{4}). (11d)
Even though node {circumflex over (x)}_{2 }is external, the variable x_{2 }does not appear as a row index in B_{4}. Suppose we set
where we sum over all intermediate indices; i.e., all x_{j} ^{a }except x_{2 }and x_{5}. Contrary to B_{4}, the rows of
This technique of inserting delta functions can be generalized as follows to deal with arbitrary QB nets. For jεZ_{1,N}, let a_{min}(j) be the smallest aεZ_{1,τ }such that x_{j }appears in B_{a}. Hence, a_{min}(j) is the first era in which x_{j }appears. If {circumflex over (x)}_{j }is an internal node, let a_{max}(j) be the largest a such that x_{j }appears in B_{a }(i.e., the last era in which x_{j }appears). If {circumflex over (x)}_{j }is an external node, let a_{max}(j)=τ+1. For aεZ_{1,τ+}1. For aεZ_{1,τ}, let
Δ_{a}={jεZ_{1,N}a_{min}(j)<a<a_{max}(j)}, (14)
In Eq. (15), x_{j} ^{T} should be identified with x_{j }and x_{j} ^{0 }with no variable at all. Equation (7) for FI can be written in terms of the
where the sum is over all intermediate indices (i.e., all x_{j} ^{a }for which a≠τ). For all a, define matrix M_{a }so that the x,y entry of M_{a }is
M=M_{τ} . . . M_{2}M_{1}. (17)
The rows of the column vector M are labelled by the possible values of (x.)_{Z} _{ ext }. The rows of the column vector M_{1 }are labelled by the possible values of (x.)_{T} _{ 1 }, where T_{1 }is the set of root nodes.
Step 3: Find Unitary Extensions of Era Matrices
So far, we have succeeded in expressing FI as a product of matrices M_{a}, but these matrices are not necessarily unitary. In this step, we will show how to extend each M_{a }matrix (by adding rows and columns) into a unitary matrix U_{a}.
By combining adjacent Ma's, one can produce a new, smaller set of matrices M_{a}. Suppose the union of two consecutive eras is also defined to be an era. Then combining adjacent M_{a}'s is equivalent to combining consecutive eras to produce a new, smaller set of eras. We define a breakpoint as any position aεZ_{1,τ−1 }between two adjacent matrices M_{a+1 }and M_{a}. Combining two adjacent M_{a}'s eliminates a breakpoint. Breakpoints are only necessary at positions where internal measurements are made. For example, in Teleportation experiments, one measures node {circumflex over (x)}_{5}, which is in era T_{3}. Hence, a breakpoint between M_{4 }and M_{3 }is necessary. If that is the only internal measurement to be made, all other breakpoints can be dispensed with. Then we will have M=M_{2}′M_{1}′ where M_{2}′=M_{4}, M_{1}′=M_{3}M_{2}M_{1}. If no internal measurements are made, then we can combine all matrices M_{a }into a single one, and eliminate all breakpoints.
We will henceforth assume that for all aεZ_{1,τ}, the columns of M_{a }are orthonormal. If for some a_{0}εZ_{1,τ}, M_{a} _{ 0 }does not satisfy this condition, it may be possible to “repair” M_{a} _{ 0 }, so that it does. First: If a row β of M_{a} _{ 0 } _{−1 }is zero, then eliminate the column β of M_{a} _{ 0 }, and the row β of M_{a} _{ 0 } _{−1}. Next: If a row β of the column vector M_{a} _{ 0 } _{−1 }. . . M_{2}M_{1 }is zero, then flag the column β of M_{a} _{ 0 }. The flagged columns of M_{a} _{ 0 }can be changed without affecting the value of M. If the nonflagged columns of M_{a} _{ 0 }are orthonormal, and the number of columns in M_{a} _{ 0 }does not exceed the number of rows, then the Gram Schmidt method, to be discussed later, can be used to replace the flagged columns by new columns such that all the columns of the new matrix M_{a} _{ 0 }are orthonormal. If it is not possible to repair M_{a} _{ 0 }in any of the above ways (or in some other way that might become clear once we program this), one can always remove the breakpoint between M_{a} _{ 0 } _{+1 }and M_{a} _{ 0 }.
We will call d_{a }the number of rows of matrix M_{a }and d_{a−1 }its number of columns. We define D and N_{S }by
D=max{d_{a}1≦a≦τ} (18)
N_{S}=min{2^{i}iεZ_{1,∞},D≦2^{i}}. (19)
Let
v=U_{τ }. . . U_{3}U_{2}v_{1}, (20)
where v is just the column vector M with
To determine suitable values for the gray entries of the U_{a }matrices, one can use the GramSchmidt (G.S.) method. (See Nob88: B. Noble and J. W. Daniels, Applied Linear Algebra, Third Edition (Prentice Hall, 1988)). This method takes as input an ordered set S=(v_{1}, v_{2}, . . . , v_{N}) of vectors, not necessarily independent ones. It yields as output another ordered set of vectors S′=(u_{1}, u_{2}, . . . , u_{N}), such that S′ spans the same vector space as S. Some vectors in S′ may be zero. Those vectors of S′ which aren't zero will be orthonormal. For rεZ_{1,N}, if the first r vectors of S are already orthonormal, then the first r vectors of S′ will be the same as the first r vectors of S. Let e_{j }for jεZ_{1,N} _{ S }be the j'th standard unit vector (i.e., the vector whose j'th entry is one and all other entries are zero). For each aεZ_{1,τ}, to determine the gray entries of U_{a }one can use the G.S. method on the set S consisting of the nongray columns of U_{a }together with the vectors e_{1}, e_{2}, . . . e_{N} _{ s }.
Step 4: Decompose Each Unitary Matrix into a SEO
In this section we present a CS method for decomposing an arbitrary unitary matrix into a SEO. By following the previous 3 steps, one can reduce a QB net to a product of unitary operators U_{a}. By applying the CS method of this section to each of the matrices U_{a}, one can reduce the QB net to a SEO.
We will use the symbol N_{B }for the number (≦1) of bits and N_{S}=2^{N} ^{ B }for the number of states with N_{B }bits. We define Bool={0,1}. We will use lower case Latin letters a,b,c . . . εBool to represent bit values and lower case Greek letters α,β,δ, . . . εZ_{0,N} _{ b } _{−1 }to represent bit positions. A vector such as {right arrow over (a)}=a_{N} _{ b } _{−1 }. . . a_{2}a_{1}a_{0 }will represent a string of bit values, a_{μ }being the value of the μ'th bit for μεZ_{0,N} _{ b } _{−1}. A bit string {right arrow over (a)} has a decimal representation
For βεZ_{0,N} _{ B } _{−1}, we will use {right arrow over (u)}(β) to denote the β'th standard unit vector, i.e, the vector with bit value of 1 at bit position β and bit value of zero at all other bit positions.
I_{r }will represent the r dimensional unit matrix. Suppose βεZ_{0,N} _{ B } _{−1 }and M is any 2×2 matrix. We define M(β) by
M(β)=I_{2}(×) . . . (×)I_{2}(×)M(×)I_{2}(×) . . . (×)I_{2}, (22)
where the matrix M on the right side is located at bit position β in the tensor product of N_{B}2×2 matrices. The numbers that label bit positions in the tensor product increase from right to left (←), and the rightmost bit is taken to be at position 0.
For any two square matrices A and B of the same dimension, we define the (·) product by A(·)B=ABA^{†}, where A^{† }is the Hermitian conjugate of A.
{right arrow over (σ)}=(σ_{x},σ_{y},σ_{z}) will represent the vector of Pauli matrices, where
The SylvesterHadamard matrices H_{r }are 2^{r}×2^{r }matrices whose entry at row {right arrow over (a)} and column {right arrow over (b)} is given by
(H_{r})_{{right arrow over (a)}, {right arrow over (b)}}=(−1)^{{right arrow over (a)}·{right arrow over (b)}}, (24)
where
The qubit's basis states 0< and 1> will be represented by
The number operator n of the qubit is defined by
Note that
n0>=0,n1>=1>. (28)
We will often use
We define P_{0 }and P_{1 }by
For βεZ_{0,N} _{ B } _{−1}, we define P_{0}(β),P_{1}(β), n(β) and
P_{{right arrow over (a)}}=P_{aN} _{ B } _{−1}(×) . . . (×)P_{a} _{ 2 }(×)P_{a} _{ 1 }(×)P_{a} _{ 0 }. (31)
As mentioned earlier, we utilize a mathematical technique called the CS Decomposition. In this name, the letters C and S stand for “cosine” and “sine”. Next we will state the special case of the CS Decomposition Theorem that arises in a preferred embodiment of the invention.
Suppose that U is an N×N unitary matrix, where N is an even number. Then the CS Decomposition Theorem states that one can always express U in the form
where L_{0},L_{1},R_{0},R_{1 }are N/2×N/2 unitary matrices and
For
C_{i }and S_{i }are real numbers that satisfy
C_{i} ^{2}+S_{i} ^{2}=1. (33e)
Henceforth, we will use the term D matrix to refer to any matrix that satisfies Eqs. (33). If one partitions U into four blocks U_{ij }of size
then
U_{ij}=L_{i}D_{ij}R_{j}, (34)
for i,jε{0,1}. Thus, D_{ij }gives the singular values of U_{ij}.
More general versions of the CS Decomposition Theorem allow for the possibility that we partition U into 4 blocks of unequal size.
Note that if U were a general (not necessarily unitary) matrix, then the four blocks U_{ij }would be unrelated. Then to find the singular values of the four blocks U_{ij }would require eight unitary matrices (two for each block), instead of the four L_{i},R_{j}. This double use of the L_{i},R_{j }is a key property of the CS decomposition.
Consider FIG. 6. We start at 61 with a unitary matrix U. Without loss of generality, we can assume that the dimension of U is 2^{N} ^{ B }for some N_{B}≧1. (If initially U's dimension is not a power of 2, we replace it by a direct sum U(+)I_{r }whose dimension is a power of two.) We apply the CS Decomposition method to U. This yields node 62 comprising matrix D(0,U) of singular values, two unitary matrices L(0,U) and L(1,U) on the left and two unitary matrices R(0,U) and R(1,U) on the right. Then we apply the CS Decomposition method to each of the 4 matrices L(0.U),L(1.U),R(0,U) and R(1,U) and obtain nodes 63 and 64. Then we apply the CS Decomposition method to each of the 16 R and L matrices in nodes 63 and 64. And so on. This process ends when the current row of nodes in the pyramid of
Call a central matrix either (1) a single D matrix, or (2) a direct sum D_{1}(+)D_{2}(+) . . . (+)D_{r }of D matrices, or (3) a diagonal unitary matrix. From
Case 1: Central Matrix is a Single D Matrix
Consider how to decompose a central matrix when it is a single D matrix. Before dealing with arbitrary N_{B }consider N_{B}=3. Then the central matrix D can be expressed as:
Suppose {right arrow over (φ)} (ditto, {right arrow over (θ)}) is a column vector whose components are the numbers φ_{{right arrow over (a)}} (ditto, θ_{{right arrow over (a)}}) arranged in order of increasing {right arrow over (a)}. We define new angles {right arrow over (θ)} in terms of the angles {right arrow over (φ)} by
Then one can show that
D=A_{00}A_{01}A_{10}A_{11}, (37)
where
A_{00}=exp(iθ_{00}σ_{y})(×)I_{2}(×)I_{2}, (38a)
A_{01}=σ_{x}(2)^{n(0)}(·)[exp(iθ_{01}σ_{y})(×)I_{2}(×)I_{2}], (38b)
A_{10}=σ_{x}(2)^{n(1)}(·)[exp(iθ_{10}σ_{y})(×)I_{2}(×)I_{2}], (38c)
A_{11}=[σ_{x}(2)^{n(1)}σ_{x}(2)^{n(0)}](·)[exp(iθ_{11}σ_{y})(×) I_{2}(×)I_{2}]. (38d)
Eqs. (37)(38) achieve our goal of decomposing D into a SEO. Now consider an arbitrary N_{B}. D can be written as
where the φ_{{right arrow over (a)}} are real numbers. We define new angles {right arrow over (θ)} in terms of the angles {right arrow over (φ)} by
where the operators A_{{right arrow over (b)}} on the right side commute and will be defined next. For any {right arrow over (b)}εbool^{N} ^{ D } ^{−1 }we can write
where
N_{B}−2≧β_{r−1}>. . . β_{1}>B_{0}≧o. (43)
In other words, {right arrow over (b)} has bit value of 1 at bit positions β_{j}. At all other bit positions, {right arrow over (b)} has bit value of 0. r is the number of bits in {right arrow over (b)} whose value is 1. When {right arrow over (b)}=0, r=0. One can show that
A_{{right arrow over (b)}}=[σ_{x}(N_{B}−1)^{n(β} ^{ r−1) }. . . σ_{x}(N_{B}−1)^{n(β1)}σ_{x}(N_{N}−1)^{n(β0)}](·)exp[iθ_{{right arrow over (b)}σ} _{y}(N_{B}−1] (44)
There are other ways of decomposing A_{{right arrow over (b)} }into a SEO.
Case 2: Central Matrix is Direct Sum of D Matrices
Next, consider how to decompose a central matrix when it is a direct sum of D matrices. Consider first the case N_{B}=3. Let R(φ)=exp(iσ_{y}φ). Previously we mentioned the fact that any D matrix D can be expressed as
where the D_{j }and D_{ij }are D matrices. It follows that by permuting the bit positions, we can change such a direct sum of D matrices into a single D matrix. The latter can then be decomposed into a SEO by the method already discussed.
Case 3: Central Matrix is a Diagonal Unitary Matrix
Finally, consider how to decompose a central matrix when it is a diagonal unitary matrix. Before dealing with arbitrary N_{B}, consider N_{B}=2. Then the central matrix C can be expressed as
C=diag(e^{iφoo}, e^{iφ01}, e^{iφ10}, e^{iφ11}). (49)
We define {right arrow over (φ)} by
One can show that
C=A_{00}A_{01}A_{10}A_{11}, (51)
where
A_{00}=exp(iθ_{00}), (52a)
A_{01}=I_{2}(×)exp(iθ_{01}σ_{z}), (52b)
A_{10}=exp(iθ_{10}σ_{z})(×)I_{2}, (52c)
A_{11}=σ_{x}(0)^{n(1)}(·)[I_{2}(×)exp(iθ_{11}σ_{z})]. (52d)
Now consider an arbitrary N_{B}. Any diagonal unitary matrix C can be expressed as
where the φ_{{right arrow over (a)}} are real numbers. We define {right arrow over (θ)} by
where the A_{{right arrow over (b)} }operators commute and will be defined next. For any _{{right arrow over (b)}}εBool^{N} ^{ B }, we can write
where
N_{B}−1≧β_{r−1}>. . . >β_{1}>β_{0}≧0. (57)
One can show that
There are other ways of decomposing A_{{right arrow over (b)} }into a SEO.
(B) Implementation of New Method on Classical Computer
So far in Section (A), we have described a mathematical algorithm for decomposing any QB net into a SEO. Next we describe a particular implementation of the algorithm, a computer program called “Qubiter” that can be run on a classical computer.
The use of a computer is practically indispensable for obtaining useful numerical answers through the method of Section (A). In all but the simplest of cases, vast amounts of data storage and processing are necessary to obtain final numerical answers from the method of Section (A). The necessary bookkeeping and number crunching are prohibitively error prone and time consuming to a human, but not to a computer.
A preferred embodiment of the invention is a classical computer that feeds data (a SEO) to a quantum computer. By a classical computer, we mean a device that makes a desired calculation using digital circuits which implement deterministic (classical, nonquantum) logic. By a quantum computer we mean a device that makes a desired calculation using an array of quantum bits (qubits). Besides their calculational circuits, classical and quantum computers may comprise input, output and memory devices. The important difference is that an array of quantum bits may be put in an entangled quantum state, whereas a digital deterministic logic circuit cannot be put in such a state (in practice, for useful periods of time). The classical computer of our preferred embodiment is a Mac computer, produced by Apple Computer Inc. of Cupertino, California. The Mac is running a program written in the computer language C++. Of course, this invention could just as easily be implemented in a language other than C++, and on a platform other than a Mac.
Software for a preferred embodiment of the invention was written using Code Warrior™. Code Warrior is a C++ Integrated Development Environment produced by MetroWerks Inc. of Austin, Texas. C++ source code for a computer program called “Qubiter1.0” is included as a Microfiche Appendix to this document. The Microfiche Appendix has two parts: Appendix A and Appendix B.
Appendix A is a listing of the names of all the files in the “CodeWarrior Project” for Qubiter. Appendix B is a listing of Qubiter source code. Apart from libraries provided with CodeWarrior, Qubiter requires parts of the C library called Clapack. This library is freeware and can be downloaded via the Internet from the website “www.netlib.org”.
Qubiter uses files that list the entries of a unitary matrix U.
Qubiter also uses files that list SEOs.
(a) PHAS ang
where ang is a real number. This signifies a phase factor
(b) CNOT α a char β

 where α,βεZ_{0,N} _{ B } _{−1 }and char ε{T,F}. T and F stand for true and false. If char is the character T, this signifies σ_{x}(β)^{n(α)}. Read it as “cnot: if α is true, then flip β.” If char is the character F, this signifies σ_{x}(β)^{ n(α)n}. Read it as “cnot: if α is false, then flip β.”
(c) ROTY α ang  where αεZ_{0,N} _{ B } _{−1 }and ang is a real number. This signifies the rotation of qubit α about the Y axis by an angle ang in degrees. In other words,
$\mathrm{exp}\left({i\sigma}_{y}\left(\alpha \right)\mathrm{ang}\frac{\pi}{180}\right).$
(d) ROTZ α ang  This is the same as (c) except that the rotation is about the Z axis instead of the Y one.
 where α,βεZ_{0,N} _{ B } _{−1 }and char ε{T,F}. T and F stand for true and false. If char is the character T, this signifies σ_{x}(β)^{n(α)}. Read it as “cnot: if α is true, then flip β.” If char is the character F, this signifies σ_{x}(β)^{ n(α)n}. Read it as “cnot: if α is false, then flip β.”
The matrix given in
Qubiter starts by looking for a parameter file entitled “qbtrparams.in”.
The user should enter into line 112 the name of a matrix. In
If the user enters “yes” into line 114 as an answer to “Do compilation?”, then Qubiter will look for a file named “DiscFourier2bits.in”. In other words, it will look for a file whose name is the string in line 112 plus the suffix “.in”. Qubiter expects to find in this file the entries of the unitary matrix U_{initial }to be decomposed. The file should be of the form exemplified by FIG. 8.
If the user enters “yes” into line 116 as an answer to “Do decompilation?”, then Qubiter will look for a file named “DiscFourier2bitscmnd.out”. In other words, it will look for a file whose name is the string in line 112 plus the suffix “cmnd.out”. Qubiter expects to find in this file a SEO. The file should be of the form exemplified by
If the user enters “yes” into line 118 as an answer to “Do zero angle optimization?”, then Qubiter will produce a file of the type exemplified by
Qubiter has 2 main modes of operation.
The first mode of operation is when the user enters “yes” in line 114 as an answer to “Do compilation?”, and “yes” in line 116 as an answer to “Do decompilation?” In this mode, the user must provide 2 input files entitled “qbtrparams.in” and “mat.in”, where “mat” is the string in line 112. Qubiter will output a file called “matcmnd.out”. Then it will use matcmnd.out as input, multiply the SEO listed in this file, arrive at a unitary matrix U_{final}, and output a file called “matcheck.out” which lists the entries of U_{final}. If everything goes well, the matrix U_{initial }specified by file “mat.in” and the matrix U_{final }specified by file “matcheck.out” will be the same matrix, within machine precision.
The second mode of operation is when the user enters “no” in line 114 as an answer to “Do compilation?”, and “yes” in line 116 as an answer to “Do decompilation?” In this mode, the user must provide 2 input files entitled “qbtrparams.in” and “matcmnd.out”. Qubiter will multiply the SEO listed in “matcmnd.out”, arrive at a unitary matrix U_{final}, and output a file called “matcheck.out” which lists the entries of U_{final}.
We should also mention a small frill to the first mode of operation. At the same time that Qubiter outputs the file “matcmnd.out”, it also outputs a file called “matpict.out” which is a translation of “matcmnd.out” to a pictorial language. Each elementary gate is represented by a line in “matpict.out”. Consider a single line of the file. There is a 1 to 1 correspondence between the characters in the line and the qubits of an array of qubits. The rightmost character represents bit 0. The next to rightmost character in the line represents bit 1. And so on. A bit that is not operated on is represented by a “” character. A bit that is rotated about the Z axis (ditto, Y axis) is represented by a “Z” character (ditto, “Y” character). If the gate is a cnot that flips a bit when the control bit is true (ditto, false), then the control bit is represented by a “@” character (ditto, “0” character). The bit to be flipped is represented by an “X” character. If the gate is a pure phase acting on all bits, all bits are represented by the ˜ character.
The CS Decomposition is intimately related to the Generalized Singular Value Decomposition (GSVD). In fact, Qubiter1.0 does CS decompositions by means of a Clapack subroutine for doing GSVD. For more information about the GSVD and its connection to the CS Decomposition, see Pai94 and references therein. See also the Clapack documentation that comes with the subroutine zggsvd.c
So far, we have described version 1.0 of Qubiter. Future versions of Qubiter are planned that will: (1)Take as input an arbitrary QB net (not just 2 connected nodes), and return as output a SEO. (2) Add quantum error correction code to the input QB net. (3)Include optimizations enabling it to produce SEOs with fewer steps.
In classical computation, the basic set of elementary operators is not unique. For example, instead of using AND, NOT and OR gates, one can just use NAND gates. The same is true in quantum computation: the basic set of elementary operators is not unique. In this preferred embodiment of the invention, we use the set {CONTROLLEDNOT, QUBIT ROTATION} of elementary operators, but the invention also applies to other sets of elementary operators.
So far, we have described what are at present the preferred embodiments of this invention. Those skilled in the art will be able to come up with many modifications to the given embodiments without departing from the present invention. It is therefore desired that the scope of the invention be determined by the appended claims rather than by the given embodiments.
Claims (37)
Priority Applications (2)
Application Number  Priority Date  Filing Date  Title 

US09073132 US6456994B1 (en)  19980505  19980505  Computer for a quantum computer 
US10947489 USRE41900E1 (en)  19980505  20040922  Compiler for a quantum computer 
Applications Claiming Priority (1)
Application Number  Priority Date  Filing Date  Title 

US10947489 USRE41900E1 (en)  19980505  20040922  Compiler for a quantum computer 
Related Parent Applications (1)
Application Number  Title  Priority Date  Filing Date  

US09073132 Reissue US6456994B1 (en)  19980505  19980505  Computer for a quantum computer 
Publications (1)
Publication Number  Publication Date 

USRE41900E1 true USRE41900E1 (en)  20101026 
Family
ID=22111908
Family Applications (2)
Application Number  Title  Priority Date  Filing Date 

US09073132 Expired  Lifetime US6456994B1 (en)  19980505  19980505  Computer for a quantum computer 
US10947489 Expired  Lifetime USRE41900E1 (en)  19980505  20040922  Compiler for a quantum computer 
Family Applications Before (1)
Application Number  Title  Priority Date  Filing Date 

US09073132 Expired  Lifetime US6456994B1 (en)  19980505  19980505  Computer for a quantum computer 
Country Status (1)
Country  Link 

US (2)  US6456994B1 (en) 
Cited By (2)
Publication number  Priority date  Publication date  Assignee  Title 

US8612499B1 (en) *  20101101  20131217  Robert R. Tucci  Method for evaluating quantum operator averages 
US9111230B2 (en)  20130314  20150818  International Business Machines Corporation  Frequency arrangement for surface code on a superconducting lattice 
Families Citing this family (22)
Publication number  Priority date  Publication date  Assignee  Title 

US20030164490A1 (en) *  20010213  20030904  Alexandre Blais  Optimization method for quantum computing process 
WO2003010963A1 (en) *  20010711  20030206  Daniel Kilbank  System and method for compressing data 
US20090182542A9 (en) *  20011222  20090716  Hilton Jeremy P  Hybrid classicalquantum computer architecture for molecular modeling 
US20030121028A1 (en) *  20011222  20030626  Michael Coury  Quantum computing integrated development environment 
US7307275B2 (en) *  20020404  20071211  DWave Systems Inc.  Encoding and error suppression for superconducting quantum computers 
US20040086038A1 (en) *  20020423  20040506  Daniel Kilbank  System and method for using microlets in communications 
US7364923B2 (en) *  20030303  20080429  The Governing Council Of The University Of Toronto  Dressed qubits 
US7408486B2 (en) *  20030421  20080805  Qbit Corporation  System and method for using a microletbased modem 
US7353148B1 (en)  20030806  20080401  The United States Of America As Represented By The Secretary Of The Army  Generation of displays of solutions to physics problems represented by complex mathematical equations using quantum computations or simulation of quantum computations on classic computers 
US7216038B2 (en) *  20030911  20070508  Franco Vitaliano  Quantum information processing elements and quantum information processing platforms using such elements 
US7219017B2 (en) *  20030911  20070515  Franco Vitaliano  Quantum information processing elements and quantum information processing platforms using such elements 
US7219018B2 (en) *  20030911  20070515  Franco Vitaliano  Quantum information processing elements and quantum information processing platforms using such elements 
US7620672B2 (en) *  20040524  20091117  Tucci Robert R  Method for performing classical Bayesian net calculations using a quantum computer 
WO2006061926A1 (en) *  20041209  20060615  National University Corporation NARA Institute of Science and Technology  Program development support device for computer system including quantum computer, program development support program, and simulation device 
US20070162262A1 (en) *  20051208  20070712  Tucci Robert R  Multiplexor approximation method for quantum compilers 
US7655850B1 (en) *  20080826  20100202  University Of Seoul Industry Cooperation Foundation  Universal quantum gate 
US20100226856A1 (en) *  20090306  20100909  Franco Vitaliano  Dynamic bionanoparticle elements 
JP4786727B2 (en) *  20090327  20111005  株式会社東芝  Quantum computation method, a quantum computer and program 
JP2011130120A (en) *  20091216  20110630  Sony Corp  Quantum public key cryptosystem, key generation device, encryption device, decoder, key generating method, encryption method, and decoding method 
US8543627B1 (en) *  20101001  20130924  Robert R. Tucci  Method for sampling probability distributions using a quantum computer 
US8527437B1 (en) *  20101005  20130903  Robert R. Tucci  Method for driving starting quantum state to target one 
US9412074B2 (en) *  20130628  20160809  Microsoft Technology Licensing, Llc  Optimized trotterization via multiresolution analysis 
Citations (1)
Publication number  Priority date  Publication date  Assignee  Title 

US5787236A (en) *  19960111  19980728  Tucci; Robert R.  Graphical computer method for analyzing quantum systems 
Patent Citations (1)
Publication number  Priority date  Publication date  Assignee  Title 

US5787236A (en) *  19960111  19980728  Tucci; Robert R.  Graphical computer method for analyzing quantum systems 
NonPatent Citations (19)
Title 

A Barenco et al. Elementary Gates for Quantum Computation, Phys. Review A52, 3457 (1995). 
A. M. Steane, "Quantum Computing" (1997), Los Alamos eprint http:/xxx.lanl.gov/abs/quantph/9708022. 
Barenco et al., Elementary Gates for Quantum Computation, Physical Review A 52, 3457, 1998. * 
Bennett et al., Teleporting an Unknown Quantum State via Dual Classical and EPR Channels, Physical Review Letters 70, 1895. * 
Brassard Teleportation as Quantum Computation Los Alamos preprint http://xxx.lanl.gov/abs/quantph/9605035 (1996). 
Brassard, Teleportation as a Quantum Computation, Los Alamos eprint http://xxx.lanl.gov/abs/quantph/9605035. * 
DiVincenzo, Quantum Computation, Science 270, 255, 1995. * 
Flamig, Practical Algorothms in C++, 36971, 1995. * 
Gilbert Strang, Linear Algebra and Its Applications: Third Edition, 3139, 195206, 23638, 1998. * 
J. Adams, S. Leestma, L. Nyhoff, "C++, An Inroduction to Computing" (Prentice Hall 1995) (pp. 1920). 
Murnaghan, The Orthogonal and Symplectic Groups, Institute for Advanced Studies, Dublin 1216, 1958. * 
Paige et al., History and Generality of the CS Decomposition, Linear Algebra and Its Applications 208, 303, 1994. * 
Reck et al., Experimental Realization of Any Discrete Operator, Physical Review Letters 73, 58, 1994. * 
Robert R. Tucci, "A Quantum Compiler", Disclosure Document 431118 (1998). 
Robert R. Tucci, "A Rudimentary Quantum Compiler" (1998) Los Alamos eprint http://xxx.lanl.gov/abs/quantph9805015. 
Robert R. Tucci, "A Rudimentary Quantum Compiler" Disclosure Document 433559 (1998). 
Robert R. Tucci, "How to Compile a Quantum Bayerian Net" Los Alamos eprint http://xxx.lanl.gov/abs/quantph9805016. 
Robert R. Tucci, "Quantum Fog Library of Essays" (vers.1.0) 1997. 
Tucci, Quantum Bayesian Nets, Int. Jour. of Mod. Physics B9, 295, 1995. * 
Cited By (2)
Publication number  Priority date  Publication date  Assignee  Title 

US8612499B1 (en) *  20101101  20131217  Robert R. Tucci  Method for evaluating quantum operator averages 
US9111230B2 (en)  20130314  20150818  International Business Machines Corporation  Frequency arrangement for surface code on a superconducting lattice 
Also Published As
Publication number  Publication date  Type 

US6456994B1 (en)  20020924  grant 
Similar Documents
Publication  Publication Date  Title 

Bennett et al.  Exact and asymptotic measures of multipartite purestate entanglement  
Murphy  The bayes net toolbox for matlab  
Paldus  Manyelectron correlation problem. A group theoretical approach  
Liu  StackelbergNash equilibrium for multilevel programming with multiple followers using genetic algorithms  
Perrin  Finite automata  
Lidar et al.  Quantum error correction  
US6578018B1 (en)  System and method for control using quantum soft computing  
Kohavi et al.  MLC++: A machine learning library in C++  
Sipper  The emergence of cellular computing  
Sudbery  On local invariants of pure threequbit states  
Hansen et al.  Variable neighborhood search  
Bravyi et al.  Fermionic quantum computation  
Altafini et al.  Modeling and control of quantum systems: an introduction  
Barenco et al.  Elementary gates for quantum computation  
Barenco et al.  Approximate quantum Fourier transform and decoherence  
Childs et al.  Exponential algorithmic speedup by a quantum walk  
Schuch et al.  Natural twoqubit gate for quantum computation using the XY interaction  
Aaronson et al.  Improved simulation of stabilizer circuits  
Bishop et al.  VIBES: A variational inference engine for Bayesian networks  
Ventura et al.  Quantum associative memory  
Grover  Quantum computers can search rapidly by using almost any transformation  
Markov et al.  Simulating quantum computation by contracting tensor networks  
Mossel et al.  Learning nonsingular phylogenies and hidden Markov models  
Schuld et al.  The quest for a quantum neural network  
Grover  Quantum telecomputation 
Legal Events
Date  Code  Title  Description 

FPAY  Fee payment 
Year of fee payment: 12 