Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Quantum logic gate
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Basic circuit in quantum computing}} {{redirect-distinguish|Quantum gate|Quantum Gate (video game)|Quantum Gate (album)}} [[File:Quantum Logic Gates.png|thumb|right|upright=2 |Common quantum logic gates by name (including abbreviation), circuit form(s) and the corresponding unitary matrices]] {{Use American English|date=April 2019}} In [[quantum computing]] and specifically the [[quantum circuit]] [[model of computation]], a '''quantum logic gate''' (or simply '''quantum gate''') is a basic quantum circuit operating on a small number of [[qubit]]s. Quantum logic gates are the building blocks of quantum circuits, like classical [[logic gate]]s are for conventional digital circuits. Unlike many classical logic gates, quantum logic gates are [[reversible computing|reversible]]. It is possible to perform classical computing using only reversible gates. For example, the reversible [[Toffoli gate]] can implement all [[Boolean function]]s, often at the cost of having to use [[ancilla bit]]s. The Toffoli gate has a direct quantum equivalent, showing that quantum circuits can perform all operations performed by classical circuits. Quantum gates are [[unitary operators]], and are described as [[unitary matrix|unitary matrices]] relative to some [[orthonormal]] [[Basis (linear algebra)|basis]]. Usually the ''computational basis'' is used, which unless comparing it with something, just means that for a ''d''-level quantum system (such as a [[qubit]], a [[quantum register]], or [[qutrit]]s and [[qudit]]s){{r|Williams|pages=22–23}} the [[orthonormal basis]] [[Vector space|vector]]s are labeled {{nowrap|<math>|0\rangle, |1\rangle, \dots, |d-1\rangle</math>,}} or use [[Binary number|binary notation]]. == History == The current notation for quantum gates was developed by many of the founders of [[quantum information science]] including Adriano Barenco, [[Charles H. Bennett (physicist)|Charles Bennett]], [[Richard Cleve]], [[David P. DiVincenzo]], [[Norman Margolus]], [[Peter Shor]], Tycho Sleator, [[John A. Smolin]], and Harald Weinfurter,<ref name="Barenco">{{cite journal | last1=Barenco | first1=Adriano | last2=Bennett | first2=Charles H. | last3=Cleve | first3=Richard | last4=DiVincenzo | first4=David P. | last5=Margolus | first5=Norman | last6=Shor | first6=Peter | last7=Sleator | first7=Tycho | last8=Smolin | first8=John A. | last9=Weinfurter | first9=Harald | title=Elementary gates for quantum computation | journal=[[Physical Review A]] | publisher=American Physical Society (APS) | volume=52 | issue=5 | date=1995-11-01 | issn=1050-2947 | doi=10.1103/physreva.52.3457 | pages=3457–3467| pmid=9912645 |arxiv=quant-ph/9503016| bibcode=1995PhRvA..52.3457B | s2cid=8764584 }}</ref> building on notation introduced by [[Richard Feynman]] in 1986.<ref name="Feynman-QMC">{{cite journal | last=Feynman | first=Richard P. | title=Quantum mechanical computers | journal=[[Foundations of Physics]] | publisher=Springer Science and Business Media LLC | volume=16 | issue=6 | year=1986 | issn=0015-9018 | doi=10.1007/bf01886518 | pages=507–531| bibcode=1986FoPh...16..507F | s2cid=122076550 }}</ref> == Representation == [[File:Bloch_sphere.svg|thumb|upright=1|Single [[qubit]] states that are not [[Quantum entanglement|entangled]] and lack [[List of quantum logic gates#Identity gate and global phase|global phase]] can be represented as points on the surface of the '''[[Bloch sphere]]''', written as <math>|\psi\rangle = \cos\left(\theta /2\right)|0 \rangle + e^{i\varphi}\sin\left(\theta /2\right) |1\rangle.</math><br>Rotations about the {{math|x, y, z}} axes of the Bloch sphere are represented by the [[List of quantum logic gates#Rotation operator gates|rotation operator gates]].]] Quantum logic gates are represented by [[unitary matrix|unitary matrices]]. A gate that acts on <math>n</math> [[qubit]]s (a [[quantum register|register]]) is represented by a <math>2^n \times 2^n</math> unitary matrix, and the [[Set (mathematics)|set]] of all such gates with the group operation of [[matrix multiplication]]{{efn|Matrix multiplication of quantum gates is defined as [[#Serially wired gates|series circuits]].}} is the [[unitary group]] U(2<sup>''n''</sup>).<ref name="Barenco"/> The [[quantum state]]s that the gates act upon are [[unit vector]]s in <math>2^n</math> [[complex number|complex]] dimensions, with the [[Norm (mathematics)#Euclidean norm of complex numbers|complex Euclidean norm]] (the [[Norm (mathematics)#p-norm|2-norm]]).{{r|Nielsen-Chuang|page=66}}{{r|Yanofsky-Mannucci|pages=56,65}} The [[basis vectors]] (sometimes called ''[[eigenstate]]s'') are the possible outcomes if the state of the qubits is [[Quantum measurement|measured]], and a quantum state is a [[linear combination]] of these outcomes. The most common quantum gates operate on [[vector space]]s of one or two qubits, just like the common [[Logic gate|classical logic gate]]s operate on one or two [[bit]]s. Even though the quantum logic gates belong to [[continuous symmetry|continuous symmetry group]]s, real [[computer hardware|hardware]] is inexact and thus limited in precision. The application of gates typically introduces errors, and the [[Fidelity of quantum states|quantum states' fidelities]] decrease over time. If [[Quantum error correction|error correction]] is used, the usable gates are further restricted to a finite set.{{r|Nielsen-Chuang|pages=ch. 10}}{{r|Williams|pages=ch. 14}} Later in this article, this is ignored as the focus is on the ideal quantum gates' properties. Quantum states are typically represented by "kets", from a notation known as [[Bra–ket notation|bra–ket]]. The vector representation of a single [[qubit]] is :<math>|a\rangle = v_0 | 0 \rangle + v_1 | 1 \rangle \rightarrow \begin{bmatrix} v_0 \\ v_1 \end{bmatrix} .</math> Here, <math>v_0</math> and <math>v_1</math> are the complex [[probability amplitude]]s of the qubit. These values determine the probability of measuring a 0 or a 1, when measuring the state of the qubit. See [[#Measurement|measurement]] below for details. The value zero is represented by the ket {{nowrap|<math>|0\rangle = \begin{bmatrix} 1 \\ 0 \end{bmatrix}</math>,}} and the value one is represented by the ket {{nowrap|<math>|1\rangle = \begin{bmatrix} 0 \\ 1\end{bmatrix}</math>.}} The [[tensor product]] (or [[Kronecker product]]) is used to combine quantum states. The combined state for a [[quantum register|qubit register]] is the tensor product of the constituent qubits. The tensor product is denoted by the symbol {{nowrap|<math>\otimes</math>.}} The vector representation of two qubits is:<ref name="Preskill">{{cite arXiv|last=Preskill|first=John|title=Quantum computing 40 years later|eprint=2106.10522|class=quant-ph|date=2021-06-06|pages=10–15}}</ref> :<math>| \psi \rangle = v_{00} | 00 \rangle + v_{01} | 0 1 \rangle + v_{10} | 1 0 \rangle + v_{11} | 1 1 \rangle \rightarrow \begin{bmatrix} v_{00} \\ v_{01} \\ v_{10} \\ v_{11} \end{bmatrix}.</math> The action of the gate on a specific quantum state is found by [[Matrix multiplication|multiplying]] the vector <math>|\psi_1\rangle</math>, which represents the state by the matrix <math>U</math> representing the gate. The result is a new quantum state {{nowrap|<math>|\psi_2\rangle</math>:}} :<math>U|\psi_1\rangle = |\psi_2\rangle.</math> === Relation to the time evolution operator === The [[Schrödinger equation]] describes how quantum systems that are not [[Measurement in quantum mechanics|observed]] evolve over time, and is <math>i\hbar\frac{d}{dt}|\Psi\rangle = \hat{H}|\Psi\rangle.</math> When the system is in a stable environment, so it has a constant [[Hamiltonian (quantum mechanics)|Hamiltonian]], the solution to this equation is <math>U(t) = e^{-i\hat{H}t/\hbar}.</math>{{r|Williams|pages=24–25}} If the time <math>t</math> is always the same it may be omitted for simplicity, and the way quantum states evolve can be described as <math>U|\psi_1\rangle = |\psi_2\rangle,</math> just as in the above section. That is, a quantum gate is how a quantum system that is not observed evolves over some specific time, or equivalently, a gate is the unitary [[time evolution]] operator <math>U</math> acting on a quantum state for a specific duration. == Notable examples == {{Main|List of quantum logic gates}} There exists an [[Uncountable set|uncountably infinite]] number of gates. Some of them have been named by various authors,<ref name="Williams">{{cite book|author=Colin P. Williams |year=2011 |title=Explorations in Quantum Computing |publisher=[[Springer Science+Business Media|Springer]] |isbn=978-1-84628-887-6}}</ref><ref name="Barenco"/><ref name="Nielsen-Chuang">{{Cite book|title=Quantum Computation and Quantum Information|last1=Nielsen|first1=Michael A.|last2=Chuang|first2=Isaac|date=2010|publisher=[[Cambridge University Press]]|isbn=978-1-10700-217-3|location=Cambridge|oclc=43641333|author-link=Michael Nielsen|author-link2=Isaac Chuang|url=https://www.cambridge.org/9781107002173}}</ref><ref name="Yanofsky-Mannucci">{{Cite book|title=Quantum computing for computer scientists|last1=Yanofsky|first1=Noson S.|last2=Mannucci|first2=Mirco|date=2013|publisher=[[Cambridge University Press]]|isbn=978-0-521-87996-5}}</ref><ref>{{cite web|url=https://qiskit.org/documentation/apidoc/circuit_library.html|title=Circuit Library|publisher=IBM ([[Qiskit]])}}</ref><ref name="inspire">{{cite web|url=https://www.quantum-inspire.com/kbase/cqasm-qubit-gate-operations/|title=cQASM: Qubit gate operations|publisher=QuTech}}</ref><ref>{{cite web |url=https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.intrinsic |title=Microsoft.Quantum.Intrinsic namespace |date=28 July 2023 |publisher=Microsoft ([[Q Sharp|Q#]])}}</ref> and below follow some of those most often used in the literature. === Identity gate === The identity gate is the [[identity matrix]], usually written as ''I'', and is defined for a single qubit as :<math> I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} ,</math> where ''I'' is basis independent and does not modify the quantum state. The identity gate is most useful when describing mathematically the result of various gate operations or when discussing multi-qubit circuits. {{Anchor|Pauli X|Not|X|X gate|Not gate}} {{Anchor|Pauli Z|Z|Z gate}} === Pauli gates (''X'',''Y'',''Z'') === {{Further|Clifford gates|Pauli group}} {{Multiple image | image1 = Qcircuit I.svg | image2 = Qcircuit NOT.svg | image3 = Qcircuit Y.svg | total_width = 120 | footer = Quantum gates (from top to bottom): Identity gate, NOT gate, Pauli Y, Pauli Z | direction = vertical | image4 = Qcircuit Z.svg }} The Pauli gates <math>(X,Y,Z)</math> are the three [[Pauli matrices]] <math>(\sigma_x,\sigma_y,\sigma_z)</math> and act on a single qubit. The Pauli ''X'', ''Y'' and ''Z'' equate, respectively, to a rotation around the ''x'', ''y'' and ''z'' axes of the [[Bloch sphere]] by <math>\pi</math> radians.{{efn|Note, here a full rotation about the Bloch sphere is <math>2 \pi</math> radians, as opposed to the [[List of quantum logic gates#Rotation operator gates|rotation operator gates]] where a full turn is <math>4 \pi.</math>}} The Pauli-''X'' gate is the quantum equivalent of the [[NOT gate]] for classical computers with respect to the standard basis {{nowrap|<math>|0\rangle</math>, <math>|1\rangle</math>,}} which distinguishes the ''z'' axis on the [[Bloch sphere]]. It is sometimes called a bit-flip as it maps <math>|0\rangle</math> to <math>|1\rangle</math> and <math>|1\rangle</math> to <math>|0\rangle</math>. Similarly, the Pauli-''Y'' maps <math>|0\rangle</math> to <math>i|1\rangle</math> and <math>|1\rangle</math> to {{nowrap|<math>-i|0\rangle</math>}}. Pauli ''Z'' leaves the basis state <math>|0\rangle</math> unchanged and maps <math>|1\rangle</math> to {{nowrap|<math>-|1\rangle</math>.}} Due to this nature, Pauli ''Z'' is sometimes called phase-flip. These matrices are usually represented as :<math> X = \sigma_x =\operatorname{NOT} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} ,</math> :<math> Y = \sigma_y = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}, </math> :<math> Z = \sigma_z = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}.</math> The Pauli matrices are [[Involutory matrix|involutory]], meaning that the square of a Pauli matrix is the [[identity matrix]]. :<math>I^2 = X^2 = Y^2 = Z^2 = -iXYZ = I</math> The Pauli matrices also [[Anticommutative property|anti-commute]], for example <math>ZX=iY=-XZ.</math> The [[matrix exponential]] of a Pauli matrix <math>\sigma_j</math> is a [[List of quantum logic gates#Rotation operator gates|rotation operator]], often written as <math>e^{-i\sigma_j\theta/2}.</math> {{anchor|squares}} {{Anchor|CX|CY|CZ|controlled gate|Controlled gates|Controlled|CNOT}} === Controlled gates === {{Further|Controlled NOT gate}} [[Image:Controlled gate.svg|upright=0.6|thumb|Circuit representation of controlled-''U'' gate]] Controlled gates act on 2 or more qubits, where one or more qubits act as a control for some operation.<ref name="Barenco" /> For example, the [[controlled NOT gate]] (or CNOT or CX) acts on 2 qubits, and performs the NOT operation on the second qubit only when the first qubit is {{nowrap|<math>|1\rangle</math>,}} and otherwise leaves it unchanged. With respect to the basis {{nowrap|<math>|00\rangle</math>,}} {{nowrap|<math>|01\rangle</math>,}} {{nowrap|<math>|10\rangle</math>,}} {{nowrap|<math>|11\rangle</math>,}} it is represented by the [[Hermitian matrix|Hermitian]] [[Unitary matrix|unitary]] matrix: :<math> \mbox{CNOT} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} . </math> The CNOT (or controlled Pauli-''X'') gate can be described as the gate that maps the basis states <math>|a,b\rangle \mapsto |a,a \oplus b\rangle</math>, where <math>\oplus</math> is [[Exclusive or|XOR]]. The CNOT can be expressed in the [[Pauli matrices|Pauli basis]] as: :<math> \mbox{CNOT} = e^{i\frac{\pi}{4}(I-Z_1)(I-X_2)}=e^{-i\frac{\pi}{4}(I-Z_1)(I-X_2)}. </math> Being a Hermitian unitary operator, CNOT [[Sylvester's formula|has the property]] that <math> e^{i\theta U}=(\cos \theta)I+(i\sin \theta) U</math> and <math> U =e^{i\frac{\pi}{2}(I-U)}=e^{-i\frac{\pi}{2}(I-U)}</math>, and is [[Involutory matrix|involutory]]. More generally if ''U'' is a gate that operates on a single qubit with matrix representation :<math> U = \begin{bmatrix} u_{00} & u_{01} \\ u_{10} & u_{11} \end{bmatrix} , </math> then the ''controlled-U gate'' is a gate that operates on two qubits in such a way that the first qubit serves as a control. It maps the basis states as follows.{{Multiple image | image1 = Qcircuit_CNOT.svg | image2 = Qcircuit_CY.svg | image3 = Qcircuit CC.svg | total_width = 400 | footer = Circuit diagrams of controlled Pauli gates (from left to right): CNOT (or controlled-X), controlled-Y and controlled-Z. }} :<math> | 0 0 \rangle \mapsto | 0 0 \rangle </math> :<math> | 0 1 \rangle \mapsto | 0 1 \rangle </math> :<math> | 1 0 \rangle \mapsto | 1 \rangle \otimes U |0 \rangle = | 1 \rangle \otimes (u_{00} |0 \rangle + u_{10} |1 \rangle) </math> :<math> | 1 1 \rangle \mapsto | 1 \rangle \otimes U |1 \rangle = | 1 \rangle \otimes (u_{01} |0 \rangle + u_{11} |1 \rangle) </math> The matrix representing the controlled ''U'' is :<math> \mbox{C}U = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & u_{00} & u_{01} \\ 0 & 0 & u_{10} & u_{11} \end{bmatrix}.</math> When ''U'' is one of the Pauli operators, ''X'',''Y'', ''Z'', the respective terms "controlled-''X''", "controlled-''Y''", or "controlled-''Z''" are sometimes used.{{r|Nielsen-Chuang|pages=177–185}} Sometimes this is shortened to just C''X'', C''Y'' and C''Z''. In general, any single qubit [[Unitary matrix#Properties|unitary gate]] can be expressed as <math> U = e^{iH} </math>, where ''H'' is a [[Hermitian matrix]], and then the controlled ''U'' is <math> CU = e^{i\frac{1}{2}(I-Z_1)H_2}.</math> Control can be extended to gates with arbitrary number of qubits<ref name="Barenco" /> and functions in programming languages.<ref name="adjoint-controlled-qsharp"/> Functions can be conditioned on superposition states.<ref name="Oemer-structured-programming">{{cite web|title=Structured Quantum Programming|last=Ömer|first=Bernhard|url=http://tph.tuwien.ac.at/~oemer/doc/structquprog.pdf|pages=72, 92–107|date=2 September 2009|publisher=Institute for Theoretical Physics, Vienna University of Technology|archive-url=https://web.archive.org/web/20220327170025/tph.tuwien.ac.at/~oemer/doc/structquprog.pdf|archive-date=March 27, 2022}}</ref><ref name="Oemer2"/> ==== Classical control ==== {{Further|Deferred measurement principle}} [[File:Example for classic controlled quantum gate.png|thumb|upright=0.8|'''Example:''' The qubit <math>\phi</math> is [[#Measurement|measured]], and the result of this measurement is a [[Boolean data type|Boolean]] value, which is consumed by the classical computer. If <math>\phi</math> measures to 1, then the classical computer tells the quantum computer to apply the U gate on <math>\psi</math>.<br>In circuit diagrams, single lines are [[qubit]]s, and doubled lines are [[bit]]s.]] Gates can also be controlled by classical logic. A quantum computer is controlled by a [[classical computing|classical computer]], and behaves like a [[coprocessor]] that receives instructions from the classical computer about what gates to execute on which qubits.{{r|Oemer|pages=42–43}}<ref name="cryo-controller"/> Classical control is simply the inclusion, or omission, of gates in the instruction sequence for the quantum computer.{{r|Nielsen-Chuang|pages=26–28}}{{r|Williams|pages=87–88}} {{anchor|Phase shift|Phase shift gates|Phase shift gate|Phase gate}} === Phase shift gates === The phase shift is a family of single-qubit gates that map the basis states <math>|0\rangle \mapsto |0\rangle</math> and <math>|1\rangle \mapsto e^{i\varphi}|1\rangle</math>. The probability of measuring a <math>|0\rangle</math> or <math>|1\rangle</math> is unchanged after applying this gate, however it modifies the phase of the quantum state. This is equivalent to tracing a horizontal circle (a line of constant latitude), or a rotation about the z-axis on the [[Bloch sphere]] by <math>\varphi</math> radians. The phase shift gate is represented by the matrix: :<math>P(\varphi) = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \varphi} \end{bmatrix}</math> where <math>\varphi</math> is the ''phase shift'' with the [[Periodic function|period]] {{math|2π}}. Some common examples are the ''T'' gate where <math display="inline">\varphi = \frac{\pi}{4}</math> (historically known as the <math>\pi /8</math> gate), the phase gate (also known as the S gate, written as ''S'', though ''S'' is sometimes used for SWAP gates) where <math display="inline">\varphi= \frac{\pi}{2}</math> and the [[#Z|Pauli-''Z'' gate]] where <math>\varphi = \pi.</math> The phase shift gates are related to each other as follows: :<math> Z = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \pi} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} = P\left(\pi\right)</math> :<math> S = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \frac{\pi}{2}} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix} = P\left(\frac{\pi}{2}\right)=\sqrt{Z}</math> :<math> T = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \frac{\pi}{4}} \end{bmatrix} =P\left(\frac{\pi}{4}\right) = \sqrt{S} = \sqrt[4]{Z}</math> Note that the phase gate <math>P(\varphi)</math> is not [[Hermitian matrix|Hermitian]] (except for all <math>\varphi = n\pi, n \in \mathbb{Z}</math>). These gates are different from their Hermitian conjugates: <math>P^\dagger(\varphi)=P(-\varphi)</math>. The two [[Hermitian adjoint|adjoint]] (or [[conjugate transpose]]) gates <math>S^\dagger</math> and <math>T^\dagger</math> are sometimes included in instruction sets.<ref>{{cite web|url=https://qiskit.org/documentation/stubs/qiskit.circuit.library.TdgGate.html#qiskit.circuit.library.TdgGate|title=TdgGate}} [[Qiskit]] online documentation.</ref><ref>{{cite web|url=https://www.quantum-inspire.com/kbase/t-dagger-gate/|title=T dagger Gate}} cQASM online documentation.</ref> {{anchor|Hadamard|Hadamard gate|H gate}} === Hadamard gate === {{further|Hadamard transform#Quantum computing applications|Hadamard matrix}}The Hadamard or Walsh-Hadamard gate, named after [[Jacques Hadamard]] ({{IPA|fr|adamaʁ|lang}}) and [[Joseph L. Walsh]], acts on a single qubit. It maps the basis states <math display="inline">|0\rangle \mapsto \frac{|0\rangle + |1\rangle}{\sqrt{2}}</math> and <math display="inline">|1\rangle \mapsto \frac{|0\rangle - |1\rangle}{\sqrt{2}}</math> (it creates an equal superposition state if given a computational basis state). The two states <math>(|0\rangle + |1\rangle)/\sqrt{2}</math> and <math>(|0\rangle - |1\rangle)/\sqrt{2}</math> are sometimes written <math>|+\rangle</math> and <math>|-\rangle</math> respectively. The Hadamard gate performs a rotation of <math>\pi</math> about the axis <math>(\hat{x}+\hat{z})/\sqrt{2}</math> at the [[Bloch sphere]], and is therefore [[Involutory matrix|involutory]]. It is represented by the [[Hadamard matrix]]: [[Image:Hadamard gate.svg|upright=0.8|thumb|Circuit representation of Hadamard gate]] :<math> H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} .</math> If the [[Hermitian matrix|Hermitian]] (so <math>H^{\dagger}=H^{-1}=H</math>) Hadamard gate is used to perform a [[Change of basis#Endomorphisms|change of basis]], it flips <math>\hat{x}</math> and <math>\hat{z}</math>. For example, <math>HZH=X</math> and <math>H\sqrt{X}\;H=\sqrt{Z}=S.</math> {{Anchor|Swap|SWAP|Swap gate}} === Swap gate === {{Further|List of quantum logic gates#Non-Clifford swap gates}} [[Image:Swap gate.svg|upright=0.6|thumb|Circuit representation of SWAP gate]] The swap gate swaps two qubits. With respect to the basis <math>|00\rangle</math>, <math>|01\rangle</math>, <math>|10\rangle</math>, <math>|11\rangle</math>, it is represented by the matrix :<math> \mbox{SWAP} = \begin{bmatrix} 1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\end{bmatrix} . </math> The swap gate can be decomposed into summation form: :<math>\mbox{SWAP}=\frac{I\otimes I +X\otimes X+Y\otimes Y+Z\otimes Z}{2}</math> {{Anchor|Toffoli gate|Toffoli|CCNOT}} === Toffoli (CCNOT) gate === {{Main|Toffoli gate}} [[Image:Toffoli gate.svg|upright=0.6|thumb|Circuit representation of Toffoli gate]] The Toffoli gate, named after [[Tommaso Toffoli]] and also called the CCNOT gate or [[#Deutsch gate|Deutsch gate]] <math>D(\pi/2)</math>, is a 3-bit gate that is [[Functional completeness|universal]] for classical computation but not for quantum computation. The quantum Toffoli gate is the same gate, defined for 3 qubits. If we limit ourselves to only accepting input qubits that are <math>|0\rangle</math> and {{nowrap|<math>|1\rangle</math>,}} then if the first two bits are in the state <math>|1\rangle</math> it applies a Pauli-''X'' (or NOT) on the third bit, else it does nothing. It is an example of a CC-U (controlled-controlled Unitary) gate. Since it is the quantum analog of a classical gate, it is completely specified by its truth table. The Toffoli gate is universal when combined with the single qubit Hadamard gate.<ref name="Aharonov">{{cite arXiv|last=Aharonov|first=Dorit|date=2003-01-09|title=A Simple Proof that Toffoli and Hadamard are Quantum Universal|eprint=quant-ph/0301040}}</ref> {| |- ! Truth table !! Matrix form |- | {| class="wikitable" |- ! colspan="3" | Input ! colspan="3" | Output |- style="text-align:center;" | 0 || 0 || 0 || 0 || 0 || 0 |- style="text-align:center;" | 0 || 0 || 1 || 0 || 0 || 1 |- style="text-align:center;" | 0 || 1 || 0 || 0 || 1 || 0 |- style="text-align:center;" | 0 || 1 || 1 || 0 || 1 || 1 |- style="text-align:center;" | 1 || 0 || 0 || 1 || 0 || 0 |- style="text-align:center;" | 1 || 0 || 1 || 1 || 0 || 1 |- style="text-align:center;" | 1 || 1 || 0 || 1 || 1 || 1 |- style="text-align:center;" | 1 || 1 || 1 || 1 || 1 || 0 |} | <math> \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ \end{bmatrix} </math> |} The Toffoli gate is related to the classical [[Logical conjunction|AND]] (<math>\land</math>) and [[exclusive or|XOR]] (<math>\oplus</math>) operations as it performs the mapping <math>|a, b, c\rangle \mapsto |a, b, c\oplus (a \land b)\rangle</math> on states in the computational basis. The Toffoli gate can be expressed using [[Pauli matrices]] as :<math> \mbox{Toff} = e^{i\frac{\pi}{8}(I-Z_1)(I-Z_2)(I-X_3)}= e^{-i\frac{\pi}{8}(I-Z_1)(I-Z_2)(I-X_3)}. </math> == Universal quantum gates == [[Image:Qcircuit CNOTsqrtSWAP2.svg|upright=1.5|thumb|Both CNOT and <math>\sqrt{\mbox{SWAP}}</math> are universal two-qubit gates and can be transformed into each other.]] A set of '''universal quantum gates''' is any set of gates to which any operation possible on a quantum computer can be reduced, that is, any other unitary operation can be expressed as a finite sequence of gates from the set. Technically, this is impossible with anything less than an [[uncountable]] set of gates since the number of possible quantum gates is uncountable, whereas the number of finite sequences from a finite set is [[countable]]. To solve this problem, we only require that any quantum operation can be approximated by a sequence of gates from this finite set. Moreover, for [[Unitary transformation (quantum mechanics)|unitaries]] on a constant number of qubits, the [[Solovay–Kitaev theorem]] guarantees that this can be done efficiently. Checking if a set of quantum gates is universal can be done using [[group theory]] methods<ref>{{Cite journal |last1=Sawicki |first1=Adam |last2=Karnas |first2=Katarzyna |date=2017-11-01 |title=Universality of Single-Qudit Gates |url=https://doi.org/10.1007/s00023-017-0604-z |journal=[[Annales Henri Poincaré]] |language=en |volume=18 |issue=11 |pages=3515–3552 |doi=10.1007/s00023-017-0604-z |arxiv=1609.05780 |bibcode=2017AnHP...18.3515S |s2cid=253594045 |issn=1424-0661}}</ref> and/or relation to (approximate) [[Quantum t-design|unitary t-designs]]<ref>{{Cite journal |last1=Sawicki |first1=Adam |last2=Mattioli |first2=Lorenzo |last3=Zimborás |first3=Zoltán |date=2022-05-12 |title=Universality verification for a set of quantum gates |url=https://link.aps.org/doi/10.1103/PhysRevA.105.052602 |journal=[[Physical Review A]] |volume=105 |issue=5 |pages=052602 |doi=10.1103/PhysRevA.105.052602|arxiv=2111.03862 |bibcode=2022PhRvA.105e2602S |s2cid=248761038 }}</ref> Some universal quantum gate sets include: * The [[List of quantum logic gates#Rotation operator gates|rotation operators]] {{Math|''R<sub>x</sub>''(''θ'')}}, {{Math|''R<sub>y</sub>''(''θ'')}}, {{Math|''R<sub>z</sub>''(''θ'')}}, the [[#Phase shift gates|phase shift gate]] {{Math|''P''(''φ'')}}{{efn|Either the {{math|''P''}} or [[List of quantum logic gates#Identity gate and global phase|{{math|Ph}}]] gate can be used, as <math>R_z(\delta)\operatorname{Ph}(\delta/2)=P(\delta)</math>{{r|Barenco|page=11}}{{r|Williams|pages=76–83}}}} and [[#CNOT|CNOT]] are commonly used to form a universal quantum gate set.<ref name=":0">{{Citation |last=Williams |first=Colin P. |title=Quantum Gates |date=2011 |url=https://doi.org/10.1007/978-1-84628-887-6_2 |work=Explorations in Quantum Computing |pages=51–122 |editor-last=Williams |editor-first=Colin P. |series=Texts in Computer Science |place=London |publisher=Springer |language=en |doi=10.1007/978-1-84628-887-6_2 |isbn=978-1-84628-887-6 |access-date=2021-05-14|url-access=subscription }}</ref>{{efn|This set generates every possible unitary gate exactly. However as the global phase is irrelevant in the measurement output, universal quantum subsets can be constructed e.g. the set containing {{Math|''R<sub>y</sub>''(''θ'')}},{{Math|''R<sub>z</sub>''(''θ'')}} and CNOT only spans all unitaries with determinant ±1 but it is sufficient for quantum computation.}} * The [[Clifford gates|Clifford]] set {CNOT, ''H'', ''S''} + ''T'' gate. The Clifford set alone is not a universal quantum gate set, as it can be efficiently simulated classically according to the [[Gottesman–Knill theorem]]. * The [[Toffoli gate]] + Hadamard gate.<ref name="Aharonov" /> The Toffoli gate alone forms a set of universal gates for reversible [[Boolean algebra]]ic logic circuits, which encompasses all classical computation. === Deutsch gate === A single-gate set of universal quantum gates can also be formulated using the parametrized three-qubit Deutsch gate <math>D(\theta)</math>,<ref>{{Citation |last=Deutsch |first=David |title=Quantum computational networks |date=September 8, 1989 |journal=[[Proc. R. Soc. Lond. A]] |volume=425 |issue=1989 |pages=73–90 |bibcode=1989RSPSA.425...73D |doi=10.1098/rspa.1989.0099 |author-link=David Deutsch |s2cid=123073680}}</ref> named after physicist [[David Deutsch]]. It is a general case of ''CC-U'', or ''controlled-controlled-unitary'' gate, and is defined as : <math>|a, b, c\rangle \mapsto \begin{cases} i \cos(\theta) |a, b , c\rangle + \sin(\theta) |a, b, 1 - c\rangle & \text{for}\ a = b = 1, \\ |a, b, c\rangle & \text{otherwise}. \end{cases}</math> Unfortunately, a working Deutsch gate has remained out of reach, due to lack of a protocol. There are some proposals to realize a Deutsch gate with dipole–dipole interaction in neutral atoms.<ref>{{Cite journal |last=Shi |first=Xiao-Feng |date=2018-05-22 |title=Deutsch, Toffoli, and cnot Gates via Rydberg Blockade of Neutral Atoms |url=https://link.aps.org/doi/10.1103/PhysRevApplied.9.051001 |journal=Physical Review Applied |language=en |volume=9 |issue=5 |pages=051001 |arxiv=1710.01859 |bibcode=2018PhRvP...9e1001S |doi=10.1103/PhysRevApplied.9.051001 |issn=2331-7019 |s2cid=118909059}}</ref> {{anchor|Universal gates|Deutsch gate}} A universal logic gate for reversible classical computing, the Toffoli gate, is reducible to the Deutsch gate <math>D(\pi/2)</math>, thus showing that all reversible classical logic operations can be performed on a universal quantum computer. There also exist single two-qubit gates sufficient for universality. In 1996, Adriano Barenco showed that the Deutsch gate can be decomposed using only a single two-qubit gate ([[List of quantum logic gates#Barenco|Barenco gate]]), but it is hard to realize experimentally.{{r|Williams|pages=93}} This feature is exclusive to quantum circuits, as there is no classical two-bit gate that is both reversible and universal.{{r|Williams|pages=93}} Universal two-qubit gates could be implemented to improve classical reversible circuits in fast low-power microprocessors.{{r|Williams|pages=93}} == Circuit composition == === Serially wired gates === [[File:Serially_wired_quantum_logic_gates.png|thumb|right|upright=2|Two gates ''Y'' and ''X'' in series. The order in which they appear on the wire is reversed when multiplying them together.]]Assume that we have two gates ''A'' and ''B'' that both act on <math>n</math> qubits. When ''B'' is put after ''A'' in a series circuit, then the effect of the two gates can be described as a single gate ''C''. : <math>C = B \cdot A</math> where <math>\cdot</math> is [[Matrix multiplication#Definition|matrix multiplication]]. The resulting gate ''C'' will have the same dimensions as ''A'' and ''B''. The order in which the gates would appear in a circuit diagram is reversed when multiplying them together.{{r|Nielsen-Chuang|p=17–18,22–23,62–64}}{{r|Yanofsky-Mannucci|p=147–169}} For example, putting the Pauli ''X'' gate after the Pauli ''Y'' gate, both of which act on a single qubit, can be described as a single combined gate ''C'': : <math>C = X \cdot Y = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} = \begin{bmatrix} i & 0 \\ 0 & -i \end{bmatrix} = iZ</math> The product symbol (<math>\cdot</math>) is often omitted. ==== Exponents of quantum gates ==== All [[real number|real]] exponents of [[unitary matrix|unitary matrices]] are also unitary matrices, and all quantum gates are unitary matrices. Positive integer exponents are equivalent to sequences of serially wired gates (e.g. {{nowrap|<math>X^3 = X \cdot X \cdot X</math>),}} and the real exponents is a generalization of the series circuit. For example, <math>X^\pi</math> and <math>\sqrt{X}=X^{1/2}</math> are both valid quantum gates. <math>U^0=I</math> for any unitary matrix <math>U</math>. The [[identity matrix]] (<math>I</math>) behaves like a [[NOP (code)|NOP]]<ref>{{cite web|url=https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.intrinsic.i|title=I operation|website=docs.microsoft.com|date=28 July 2023 }}</ref><ref>{{cite web|url=https://qiskit.org/documentation/stubs/qiskit.circuit.library.IGate.html#qiskit.circuit.library.IGate|title=IGate|website=qiskit.org}} [[Qiskit]] online documentation.</ref> and can be represented as bare wire in quantum circuits, or not shown at all. All gates are unitary matrices, so that <math>U^\dagger U = UU^\dagger = I</math> and {{nowrap|<math>U^\dagger = U^{-1}</math>,}} where <math>\dagger</math> is the [[conjugate transpose]]. This means that negative exponents of gates are [[#Unitary inversion of gates|unitary inverses]] of their positively exponentiated counterparts: {{nowrap|<math>U^{-n} = (U^n)^{\dagger}</math>.}} For example, some negative exponents of the [[#Phase gate|phase shift gates]] are <math>T^{-1}=T^{\dagger}</math> and {{nowrap|<math>T^{-2}=(T^2)^{\dagger}=S^{\dagger}</math>.}} Note that for a [[Hermitian matrix]] <math>H^\dagger=H,</math> and because of unitarity, <math>HH^\dagger=I,</math> so <math>H^2 = I</math> for all Hermitian gates. They are [[Involutory matrix|involutory]]. Examples of Hermitian gates are the [[#X|Pauli gates]], [[#Hadamard gate|Hadamard]], [[#Controlled gates|CNOT]], [[#Swap gate|SWAP]] and [[#Toffoli|Toffoli]]. Each Hermitian unitary matrix <math>H</math> [[Sylvester's formula#Special case|has the property]] that <math>e^{i\theta H}=(\cos \theta)I+(i\sin \theta) H</math> where <math>H=e^{i\frac{\pi}{2}(I-H)}=e^{-i\frac{\pi}{2}(I-H)}.</math> The exponent of a gate is a multiple of the duration of time that the [[#Relation to the time evolution operator|time evolution operator]] is applied to a quantum state. E.g. in a [[spin qubit quantum computer]] the <math>\sqrt{\mathrm{SWAP}}</math> gate could be realized via [[exchange interaction]] on the [[Spin (physics)|spin]] of two [[electron]]s for half the duration of a full exchange interaction.<ref name="Loss-DiVincenzo"/> === Parallel gates === [[File:Parallel_quantum_logic_gates.png|thumb|upright=1.8|right|Two gates <math>Y</math> and <math>X</math> in parallel is equivalent to the gate <math>Y \otimes X</math>.]] The [[Tensor product#Tensor product of linear maps|tensor product]] (or [[Kronecker product]]) of two quantum gates is the gate that is equal to the two gates in parallel.{{r|Nielsen-Chuang|pages=71–75}}{{r|Yanofsky-Mannucci|pages=148}} If we, as in the picture, combine the Pauli-''Y'' gate with the Pauli-''X'' gate in parallel, then this can be written as: : <math>C = Y \otimes X = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \otimes \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix} 0 \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} & -i \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \\ i \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} & 0 \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}\end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 & -i \\ 0 & 0 & -i & 0 \\ 0 & i & 0 & 0 \\ i & 0 & 0 & 0 \end{bmatrix}</math> Both the Pauli-''X'' and the Pauli-''Y'' gate act on a single qubit. The resulting gate <math>C</math> act on two qubits. Sometimes the tensor product symbol is omitted, and indexes are used for the operators instead.<ref name="Loss-DiVincenzo">{{cite journal | last1=Loss | first1=Daniel | last2=DiVincenzo | first2=David P. | title=Quantum computation with quantum dots | journal=Physical Review A | volume=57 | issue=1 | date=1998-01-01 | issn=1050-2947 | doi=10.1103/physreva.57.120 | pages=120–126|doi-access=free|arxiv=cond-mat/9701055| bibcode=1998PhRvA..57..120L }} Example in eq. 2.</ref> ==== Hadamard transform ==== {{Further|Hadamard transform}} The gate <math>H_2 = H \otimes H</math> is the [[#Hadamard gate|Hadamard gate]] {{nowrap|(<math>H</math>)}} applied in parallel on 2 qubits. It can be written as: :<math>H_2 = H \otimes H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \otimes \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix}</math> This "two-qubit parallel Hadamard gate" will, when applied to, for example, the two-qubit zero-vector {{nowrap|(<math>|00\rangle</math>),}} create a quantum state that has equal probability of being observed in any of its four possible outcomes; {{nowrap|<math>|00\rangle</math>,}} {{nowrap|<math>|01\rangle</math>,}} {{nowrap|<math>|10\rangle</math>,}} and {{nowrap|<math>|11\rangle</math>.}} We can write this operation as: :<math>H_2 |00\rangle = \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \end{bmatrix} = \frac{1}{2} |00\rangle + \frac{1}{2} |01\rangle +\frac{1}{2} |10\rangle +\frac{1}{2} |11\rangle = \frac{|00\rangle + |01\rangle + |10\rangle + |11\rangle}{2}</math> [[File:Hadamard transform on 3 qubits.png|thumb|right|upright=2|'''Example:''' The Hadamard transform on a 3-[[qubit]] [[quantum register|register]] {{nowrap|<math>|\psi\rangle</math>.}}]] Here the amplitude for each measurable state is {{frac|1|2}}. The probability to observe any state is the square of the absolute value of the measurable states amplitude, which in the above example means that there is one in four that we observe any one of the individual four cases. See [[#Measurement|measurement]] for details. <math>H_2</math> performs the [[Hadamard transform]] on two qubits. Similarly the gate <math>\underbrace{ H \otimes H \otimes \dots \otimes H }_{n\text{ times}} = \bigotimes_{i=0}^{n-1} H = H^{\otimes n} = H_n</math> performs a Hadamard transform on a [[quantum register|register]] of <math>n</math> qubits. When applied to a register of <math>n</math> qubits all initialized to {{nowrap|<math>|0\rangle</math>,}} the Hadamard transform puts the quantum register into a superposition with equal probability of being measured in any of its <math>2^n</math> possible states: :<math>\bigotimes_{i=0}^{n-1}(H|0\rangle) = \frac{1}{\sqrt{2^n}} \begin{bmatrix} 1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} = \frac{1}{\sqrt{2^n}} \Big( |0\rangle + |1\rangle + \dots + |2^n-1\rangle \Big)= \frac{1}{\sqrt{2^n}}\sum_{i=0}^{2^{n}-1}|i\rangle</math> This state is a ''uniform superposition'' and it is generated as the first step in some search algorithms, for example in [[amplitude amplification]] and [[Quantum phase estimation algorithm|phase estimation]]. [[#Measurement|Measuring]] this state results in a [[Random number generation|random number]] between <math>|0\rangle</math> and {{nowrap|<math>|2^n-1\rangle</math>.}}{{efn|name="stochastic-interpretations"|If this actually is a [[stochastic]] effect depends on which [[Interpretations of quantum mechanics|interpretation of quantum mechanics]] that is correct (and if any interpretation can be correct). For example, [[De Broglie–Bohm theory]] and the [[many-worlds interpretation]] asserts [[determinism]]. (In the many-worlds interpretation, a quantum computer is a machine that runs programs ([[quantum circuit]]s) that selects a reality where the probability of it having the solution states of a [[computational problem|problem]] is large. That is, the machine more often than not ends up in a reality where it gives the correct answer. Because ''all'' outcomes are realized in separate universes according to the many-worlds interpretation, the total outcome is deterministic. This ''interpretation'' does however not change the [[quantum mechanics|mechanics]] by which the machine operates.)}} How random the number is depends on the [[Quantum fidelity|fidelity]] of the logic gates. If not measured, it is a quantum state with equal [[probability amplitude]] <math>\frac{1}{\sqrt{2^n}}</math> for each of its possible states. The Hadamard transform acts on a register <math>|\psi\rangle</math> with <math>n</math> qubits such that <math display="inline">|\psi\rangle = \bigotimes_{i=0}^{n-1} |\psi_i\rangle</math> as follows: :<math>\bigotimes_{i=0}^{n-1}H|\psi\rangle = \bigotimes_{i=0}^{n-1}\frac{|0\rangle + (-1)^{\psi_i}|1\rangle}{\sqrt{2}} = \frac{1}{\sqrt{2^n}}\bigotimes_{i=0}^{n-1}\Big(|0\rangle + (-1)^{\psi_i}|1\rangle\Big) = H|\psi_0\rangle \otimes H|\psi_1\rangle \otimes \cdots \otimes H|\psi_{n-1}\rangle</math> ==== Application on entangled states ==== If two or more qubits are viewed as a single quantum state, this combined state is equal to the tensor product of the constituent qubits. Any state that can be written as a tensor product from the constituent subsystems are called ''[[separable states]]''. On the other hand, an ''[[Quantum entanglement|entangled state]]'' is any state that cannot be tensor-factorized, or in other words: ''An entangled state can not be written as a tensor product of its constituent qubits states.'' Special care must be taken when applying gates to constituent qubits that make up entangled states. If we have a set of ''N'' qubits that are entangled and wish to apply a quantum gate on ''M'' < ''N'' qubits in the set, we will have to extend the gate to take ''N'' qubits. This application can be done by combining the gate with an [[identity matrix]] such that their tensor product becomes a gate that act on ''N'' qubits. The identity matrix {{nowrap|(<math>I</math>)}} is a representation of the gate that maps every state to itself (i.e., does nothing at all). In a circuit diagram the identity gate or matrix will often appear as just a bare wire. [[File:Shows_the_application_of_a_hadamard_gate_on_a_state_that_span_two_qubits.png|thumb|right|upright=1.8|The example given in the text. The Hadamard gate <math>H</math> only act on 1 qubit, but <math>|\psi\rangle</math> is an entangled quantum state that spans 2 qubits. In our example, <math>|\psi\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}</math>.]] For example, the Hadamard gate {{nowrap|(<math>H</math>)}} acts on a single qubit, but if we feed it the first of the two qubits that constitute the [[quantum entanglement|entangled]] [[Bell state]] {{nowrap|<math>\frac{|00\rangle + |11\rangle}{\sqrt{2}}</math>,}} we cannot write that operation easily. We need to extend the Hadamard gate <math>H</math> with the identity gate <math>I</math> so that we can act on quantum states that span ''two'' qubits: :<math>K = H \otimes I = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \otimes \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1\end{bmatrix}</math> The gate <math>K</math> can now be applied to any two-qubit state, entangled or otherwise. The gate <math>K</math> will leave the second qubit untouched and apply the Hadamard transform to the first qubit. If applied to the Bell state in our example, we may write that as: :<math>K \frac{|00\rangle + |11\rangle}{\sqrt{2}} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1\end{bmatrix} \frac{1}{\sqrt{2}} \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 \\ 1 \\ 1 \\ -1 \end{bmatrix} = \frac{|00\rangle + |01\rangle + |10\rangle - |11\rangle}{2}</math> ==== Computational complexity and the tensor product ==== The [[Computational complexity of matrix multiplication|time complexity for multiplying]] two <math>n \times n</math>-matrices is at least {{nowrap|<math>\Omega(n^2 \log n)</math>,<ref>{{cite book | last1 = Raz | first1 = Ran | title = Proceedings of the thiry-fourth annual [[ACM Symposium on Theory of Computing]] | chapter = On the complexity of matrix product | author-link = Ran Raz | year = 2002| pages = 144–151 | doi = 10.1145/509907.509932 | isbn = 1581134959 | s2cid = 9582328 }}</ref>}} if using a classical machine. Because the size of a gate that operates on <math>q</math> qubits is <math>2^q \times 2^q</math> it means that the time for simulating a step in a quantum circuit (by means of multiplying the gates) that operates on generic entangled states is {{nowrap|<math>\Omega({2^q}^2 \log({2^q}))</math>.}} For this reason it is believed to be [[Computational complexity theory#Intractability|intractable]] to simulate large entangled quantum systems using classical computers. Subsets of the gates, such as the [[Clifford gates]], or the trivial case of circuits that only implement classical Boolean functions (e.g. combinations of [[#X|X]], [[#CNOT|CNOT]], [[#Toffoli|Toffoli]]), can however be efficiently simulated on classical computers. The state vector of a [[quantum register]] with <math>n</math> qubits is <math>2^n</math> complex entries. Storing the [[probability amplitude]]s as a list of [[Floating-point arithmetic|floating point]] values is not tractable for large <math>n</math>. === Unitary inversion of gates === [[File:The_unitary_inverse_of_hadamard-cnot.png|thumb|right|upright=0.6|'''Example:''' The unitary inverse of the Hadamard-CNOT product. The three gates {{nowrap|<math>H</math>,}} <math>I</math> and <math>\mathrm{CNOT}</math> are their own unitary inverses.]]Because all quantum logical gates are [[reversible computing|reversible]], any composition of multiple gates is also reversible. All products and tensor products (i.e. [[#Serially wired gates|series]] and [[#Parallel gates|parallel]] combinations) of [[unitary matrix|unitary matrices]] are also unitary matrices. This means that it is possible to construct an inverse of all algorithms and functions, as long as they contain only gates. Initialization, measurement, [[Input/Output|I/O]] and spontaneous [[quantum decoherence|decoherence]] are [[Side effect (computer science)|side effects]] in quantum computers. Gates however are [[pure function|purely functional]] and [[bijective]]. If <math>U</math> is a [[unitary matrix]], then <math>U^\dagger U = UU^\dagger = I</math> and {{nowrap|<math>U^\dagger = U^{-1}</math>.}} The dagger (<math>\dagger</math>) denotes the [[conjugate transpose]]. It is also called the [[Hermitian adjoint]]. If a function <math>F</math> is a product of <math>m</math> gates, {{nowrap|<math>F = A_1 \cdot A_2 \cdot \dots \cdot A_m</math>,}} the unitary inverse of the function <math>F^\dagger</math> can be constructed: Because <math>(UV)^\dagger = V^\dagger U^\dagger</math> we have, after repeated application on itself :<math>F^\dagger = \left(\prod_{i=1}^{m} A_i\right)^\dagger = \prod_{i=m}^{1} A^\dagger_{i} = A_m^\dagger \cdot \dots \cdot A_2^\dagger \cdot A_1^\dagger</math> Similarly if the function <math>G</math> consists of two gates <math>A</math> and <math>B</math> in parallel, then <math>G=A\otimes B</math> and {{nowrap|<math>G^\dagger = (A \otimes B)^\dagger = A^\dagger \otimes B^\dagger</math>.}} Gates that are their own unitary inverses are called [[Hermitian matrix|Hermitian]] or [[self-adjoint operator]]s. Some elementary gates such as the [[#Hadamard|Hadamard]] (''H'') and the [[Pauli matrices|Pauli gates]] (''I'', ''X'', ''Y'', ''Z'') are Hermitian operators, while others like the [[#Phase shift|phase shift]] (''S'', ''T'', ''P'', [[List of quantum logic gates#Relative phase gates|CPhase]]) gates generally are not. For example, an algorithm for addition can be used for subtraction, if it is being "run in reverse", as its unitary inverse. The [[Quantum Fourier transform#Unitarity|inverse quantum Fourier transform]] is the unitary inverse. Unitary inverses can also be used for [[uncomputation]]. Programming languages for quantum computers, such as [[Microsoft]]'s [[Q Sharp|Q#]],<ref name="adjoint-controlled-qsharp">[https://docs.microsoft.com/en-us/quantum/user-guide/using-qsharp/operations-functions?view=qsharp-preview#controlled-and-adjoint-operations Operations and Functions (Q# documentation)]</ref> Bernhard Ömer's [[Quantum Computation Language|QCL]],{{r|Oemer|page=61}} and [[IBM]]'s [[Qiskit]],<ref>{{cite web|url=https://docs.quantum.ibm.com/api/qiskit/qiskit.circuit.library.UnitaryGate#adjoint|title=UnitaryGate § UnitaryGate adjoint()|website=docs.quantum.ibm.com}}</ref> contain function inversion as programming concepts. == Measurement == {{Further|Measurement in quantum mechanics|Deferred measurement principle}} [[Image:Qcircuit measure-arrow.svg|upright=0.6|thumb|Circuit representation of measurement. The two lines on the right hand side represent a classical bit, and the single line on the left hand side represents a qubit.]] Measurement (sometimes called ''observation'') is irreversible and therefore not a quantum gate, because it assigns the observed quantum state to a single value. Measurement takes a quantum state and projects it to one of the [[basis vector]]s, with a likelihood equal to the square of the vector's length (in the [[Norm (mathematics)#p-norm|2-norm]]{{r|Nielsen-Chuang|page=66}}{{r|Yanofsky-Mannucci|pages=56,65}}) along that basis vector.{{r|Williams|pages=15–17}}<ref>{{cite book|author=Griffiths, D.J. |author-link=David J. Griffiths |pages=115–121, 126 |year=2008 |title=Introduction to Elementary Particles (2nd ed.) |publisher=[[John Wiley & Sons]] |isbn=978-3-527-40601-2}}</ref><ref>{{cite book|author=David Albert |pages=35 |year=1994 |title=Quantum mechanics and experience |publisher=[[Harvard University Press]] |isbn=0-674-74113-7}}</ref><ref>{{cite book|author=[[Sean M. Carroll]] |pages=376–394 |year=2019 |title=Spacetime and geometry: An introduction to general relativity |publisher=[[Cambridge University Press]] |isbn=978-1-108-48839-6}}</ref> This is known as the [[Born rule]] and appears{{efn|name="stochastic-interpretations"}} as a [[stochastic]] non-reversible operation as it probabilistically sets the quantum state equal to the basis vector that represents the measured state. At the instant of measurement, the state is said to "[[Wave function collapse|collapse]]" to the definite single value that was measured. Why and how, or even if<ref>{{cite book|author=[[David Wallace (physicist)|David Wallace]] |year=2012 |title=The emergent multiverse: Quantum theory according to the Everett Interpretation |publisher=[[Oxford University Press]] |isbn=9780199546961}}</ref><ref>{{cite book|author=[[Sean M. Carroll]] |year=2019 |title=Something deeply hidden: Quantum worlds and the emergence of spacetime |publisher=[[Penguin Random House]] |isbn=9781524743017}}</ref> the quantum state collapses at measurement, is called the [[measurement problem]]. The probability of measuring a value with [[probability amplitude]] <math>\phi</math> is {{nowrap|<math>1 \ge |\phi|^2 \ge 0</math>,}} where <math>|\cdot|</math> is the [[Absolute value#Complex numbers|modulus]]. Measuring a single qubit, whose quantum state is represented by the vector {{nowrap|<math>a|0\rangle + b|1\rangle = \begin{bmatrix} a \\ b \end{bmatrix}</math>,}} will result in <math>|0\rangle</math> with probability {{nowrap|<math>|a|^2</math>,}} and in {{nowrap|<math>|1\rangle</math> with probability <math>|b|^2</math>.}} For example, measuring a qubit with the quantum state <math>\frac{|0\rangle -i|1\rangle }{\sqrt{2}} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ -i \end{bmatrix}</math> will yield with equal probability either <math>|0\rangle</math> or {{nowrap|<math>|1\rangle</math>.}} [[Image:Qubit state with sin and cos.png|upright=0.8|thumb |For a single qubit, we have a unit sphere in <math>\mathbb C^2</math> with the quantum state <math>a|0\rangle + b|1\rangle</math> such that {{nowrap|<math>|a|^2 + |b|^2 = 1</math>.}} The state can be re-written as {{nowrap|<math>|\cos \theta|^2 + |\sin \theta|^2 = 1</math>,}} [[Pythagorean trigonometric identity|or]] <math>|a|^2 = \cos^2 \theta</math> and {{nowrap|<math>|b|^2 = \sin^2 \theta</math>.}}<br>Note: <math>|a|^2</math> is the probability of measuring <math>|0\rangle</math> and <math>|b|^2</math> is the probability of measuring {{nowrap|<math>|1\rangle</math>.}}]] A quantum state <math>|\Psi\rangle</math> that spans {{mvar|n}} qubits can be written as a vector in <math>2^n</math> [[Complex number|complex]] dimensions: {{nowrap|<math>|\Psi\rangle \in \mathbb C^{2^n}</math>.}} This is because the tensor product of {{mvar|n}} qubits is a vector in <math>2^n</math> dimensions. This way, a [[quantum register|register]] of {{mvar|n}} qubits can be measured to <math>2^n</math> distinct states, similar to how a register of {{mvar|n}} classical [[bit]]s can hold <math>2^n</math> distinct states. Unlike with the bits of classical computers, quantum states can have non-zero probability amplitudes in multiple measurable values simultaneously. This is called ''superposition''. The sum of all probabilities for all outcomes must always be equal to {{val|1}}.{{efn|See [[Probability axioms#Second axiom|Probability axioms § Second axiom]]}} Another way to say this is that the [[Pythagorean theorem]] generalized to <math>\mathbb C^{2^n}</math> has that all quantum states <math>|\Psi\rangle</math> with {{mvar|n}} qubits must satisfy <math display="inline">1 = \sum_{x=0}^{2^n-1}|a_x|^2,</math>{{efn|The [[hypotenuse]] has length 1 because the probabilities sum to 1, so the quantum state vector is a [[unit vector]].}} where <math>a_x</math> is the probability amplitude for measurable state {{nowrap|<math>|x\rangle</math>.}} A geometric interpretation of this is that the possible [[State space|value-space]] of a quantum state <math>|\Psi\rangle</math> with {{mvar|n}} qubits is the surface of the [[unit sphere]] in <math>\mathbb C^{2^n}</math> and that the [[Unitary transformation|unitary transform]]s (i.e. quantum logic gates) applied to it are rotations on the sphere. The rotations that the gates perform form the [[symmetry group]] [[unitary group|U(2<sup>n</sup>)]]. Measurement is then a probabilistic projection of the points at the surface of this [[complex number|complex]] sphere onto the [[basis vector]]s that span the space (and labels the outcomes). In many cases the space is represented as a [[Hilbert space]] <math>\mathcal{H}</math> rather than some specific {{nowrap|<math>2^n</math>-dimensional}} complex space. The number of dimensions (defined by the basis vectors, and thus also the possible outcomes from measurement) is then often implied by the operands, for example as the required [[state space]] for solving a [[Computational problem|problem]]. In [[Grover's algorithm#Applications|Grover's algorithm]], [[Lov Grover|Grover]] named this generic basis vector set ''"the database"''. The selection of basis vectors against which to measure a quantum state will influence the outcome of the measurement.{{r|Williams|pages=30–35}}{{r|Nielsen-Chuang|pages=22,84–85,185–188}}<ref>[https://docs.microsoft.com/en-us/quantum/concepts/pauli-measurements Q# Online manual: Measurement]</ref> See [[Change of basis#Endomorphisms|change of basis]] and [[Von Neumann entropy]] for details. In this article, we always use the ''computational [[Basis (linear algebra)|basis]]'', which means that we have labeled the <math>2^n</math> basis vectors of an {{mvar|n}}-qubit [[quantum register|register]] {{nowrap|<math>|0\rangle, |1\rangle, |2\rangle, \cdots, |2^n-1\rangle</math>,}} or use the [[Binary number#Counting in binary|binary representation]] {{nowrap|<math>|0_{10}\rangle = |0\dots 00_{2}\rangle, |1_{10}\rangle = |0\dots01_{2}\rangle, |2_{10}\rangle = |0\dots10_{2}\rangle, \cdots, |2^n-1\rangle = |111\dots1_{2}\rangle</math>.}} In [[quantum mechanics]], the basis vectors constitute an [[orthonormal basis]]. An example of usage of an alternative measurement basis is in the [[BB84]] cipher. === The effect of measurement on entangled states === [[File:The_Hadamard-CNOT_transform_on_the_zero-state.png|thumb|right|upright=1.3|The [[#Hadamard|Hadamard]]-[[#CNOT|CNOT]] gate, which when given the input <math>|00\rangle</math> produces a [[Bell state]]]] If two [[quantum state]]s (i.e. [[qubit]]s, or [[quantum register|register]]s) are [[quantum entanglement|entangled]] (meaning that their combined state cannot be expressed as a [[tensor product]]), measurement of one register affects or reveals the state of the other register by partially or entirely collapsing its state too. This effect can be used for computation, and is used in many algorithms. The Hadamard-CNOT combination acts on the zero-state as follows: :<math>\operatorname{CNOT}(H \otimes I)|00\rangle = \left( \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \left( \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \otimes \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \right) \right) \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix} = \frac{|00\rangle + |11\rangle}{\sqrt{2}}</math> [[Image:Used for geometric description of the Bell state.png|upright=0.8|thumb|The Bell state in the text is <math>|\Psi\rangle = a|00\rangle + b|01\rangle + c|10\rangle + d|11\rangle</math> where <math>a = d = \frac{1}{\sqrt{2}}</math> and {{nowrap|<math>b = c = 0</math>.}} Therefore, it can be described by the [[Plane (geometry)|plane]] spanned by the [[basis vector]]s <math>|00\rangle</math> and {{nowrap|<math>|11\rangle</math>,}} as in the picture. The [[unit sphere]] {{nowrap|(in <math>\mathbb C^{4}</math>)}} that represent the possible [[state space|value-space]] of the 2-qubit system intersects the plane and <math>|\Psi\rangle</math> lies on the unit spheres surface. Because {{nowrap|<math>|a|^2 = |d|^2 = 1/2</math>,}} there is equal probability of measuring this state to <math>|00\rangle</math> or {{nowrap|<math>|11\rangle</math>,}} and because <math>b=c=0</math> there is zero probability of measuring it to <math>|01\rangle</math> or {{nowrap|<math>|10\rangle</math>.}}]] This resulting state is the [[Bell state]] {{nowrap|<math>\frac{|00\rangle + |11\rangle}{\sqrt{2}} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 0 \\ 0 \\ 1\end{bmatrix}</math>.}} It cannot be described as a tensor product of two qubits. There is no solution for :<math>\begin{bmatrix} x \\ y \end{bmatrix} \otimes \begin{bmatrix} w \\ z \end{bmatrix} = \begin{bmatrix} xw \\ xz \\ yw \\ yz \end{bmatrix} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix},</math> because for example {{mvar|w}} needs to be both non-zero and zero in the case of {{mvar|xw}} and {{mvar|yw}}. The quantum state ''spans'' the two qubits. This is called ''entanglement''. Measuring one of the two qubits that make up this Bell state will result in that the other qubit logically must have the same value, both must be the same: Either it will be found in the state {{nowrap|<math>|00\rangle</math>,}} or in the state {{nowrap|<math>|11\rangle</math>.}} If we measure one of the qubits to be for example {{nowrap|<math>|1\rangle</math>,}} then the other qubit must also be {{nowrap|<math>|1\rangle</math>,}} because their combined state ''became'' {{nowrap|<math>|11\rangle</math>.}} Measurement of one of the qubits collapses the entire quantum state, that span the two qubits. The [[Greenberger–Horne–Zeilinger state|GHZ state]] is a similar entangled quantum state that spans three or more qubits. This type of value-assignment occurs ''instantaneously over any distance'' and this has as of 2018 been experimentally verified by [[Quantum Experiments at Space Scale|QUESS]] for distances of up to 1200 kilometers.<ref>{{cite journal |title=Satellite-based entanglement distribution over 1200 kilometers |author1=Juan Yin |author2=Yuan Cao |author3=Yu-Huai Li |author4=Sheng-Kai Liao |author5=Liang Zhang |author6=Ji-Gang Ren |author7=Wen-Qi Cai |author8=Wei-Yue Liu |author9=Bo Li |author10=Hui Dai |author11=Guang-Bing Li |author12=Qi-Ming Lu |author13=Yun-Hong Gong |author14=Yu Xu |author15=Shuang-Lin Li |author16=Feng-Zhi Li |author17=Ya-Yun Yin |author18=Zi-Qing Jiang |author19=Ming Li |author20=Jian-Jun Jia |author21=Ge Ren |author22=Dong He |author23=Yi-Lin Zhou |author24=Xiao-Xiang Zhang |author25=Na Wang |author26=Xiang Chang |author27=Zhen-Cai Zhu |author28=Nai-Le Liu |author29=Yu-Ao Chen |author30=Chao-Yang Lu |author31=Rong Shu |author32=Cheng-Zhi Peng |author33=Jian-Yu Wang |author34=[[Jian-Wei Pan]] |journal=Quantum Optics |year=2017 |volume=356 |issue=6343 |pages=1140–1144 |pmid=28619937 |arxiv=1707.01339 |doi=10.1126/science.aan3211 |s2cid=5206894}}</ref><ref>{{cite web |url=https://www.scientificamerican.com/article/china-shatters-ldquo-spooky-action-at-a-distance-rdquo-record-preps-for-quantum-internet/ |title=China Shatters "Spooky Action at a Distance" Record, Preps for Quantum Internet |first=Lee |last=Billings |website=Scientific American|date=23 April 2020 }}</ref><ref>{{cite web |last1=Popkin |first1=Gabriel |date=15 June 2017 |title=China's quantum satellite achieves 'spooky action' at record distance |url=https://www.science.org/content/article/china-s-quantum-satellite-achieves-spooky-action-record-distance |website=Science – AAAS}}</ref> That the phenomena appears to happen instantaneously as opposed to the time it would take to traverse the distance separating the qubits at the speed of light is called the [[EPR paradox]], and it is an open question in physics how to resolve this. Originally it was solved by giving up the assumption of [[local realism]], but other [[Interpretations of quantum mechanics|interpretations]] have also emerged. For more information see the [[Bell test experiments]]. The [[no-communication theorem]] proves that this phenomenon cannot be used for faster-than-light communication of [[Entropy (information theory)|classical information]]. === Measurement on registers with pairwise entangled qubits === [[File:The_effect_of_unitary_transforms_on_registers_with_pairwise_entangled_qubits.png|thumb|upright=1.8|right|The effect of a unitary transform F on a register A that is in a superposition of <math>2^n</math> states and pairwise entangled with the register B. Here, {{mvar|n}} is 3 (each register has 3 qubits).]] Take a [[Quantum register|register]] A with {{mvar|n}} qubits all initialized to {{nowrap|<math>|0\rangle</math>,}} and feed it through a [[#Hadamard transform|parallel Hadamard gate]] {{nowrap|<math display="inline">H^{\otimes n}</math>.}} Register A will then enter the state <math display="inline">\frac{1}{\sqrt{2^n}} \sum_{k=0}^{2^{n}-1} |k\rangle</math> that have equal probability of when measured to be in any of its <math>2^n</math> possible states; <math>|0\rangle</math> to {{nowrap|<math>|2^n-1\rangle</math>.}} Take a second register B, also with {{mvar|n}} qubits initialized to <math>|0\rangle</math> and pairwise [[#CNOT|CNOT]] its qubits with the qubits in register A, such that for each {{mvar|p}} the qubits <math>A_{p}</math> and <math>B_{p}</math> forms the state {{nowrap|<math>|A_{p}B_{p}\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}</math>.}} If we now measure the qubits in register A, then register B will be found to contain the same value as A. If we however instead apply a quantum logic gate {{mvar|F}} on A and then measure, then {{nowrap|<math>|A\rangle = F|B\rangle \iff F^\dagger|A\rangle = |B\rangle</math>,}} where <math>F^\dagger</math> is the [[Unitary matrix|unitary inverse]] of {{mvar|F}}. Because of how [[#Unitary inversion of gates|unitary inverses of gates]] act, {{nowrap|<math>F^\dagger |A\rangle = F^{-1}(|A\rangle) = |B\rangle</math>.}} For example, say <math>F(x)=x+3 \pmod{2^n}</math>, then {{nowrap|<math>|B\rangle = |A - 3 \pmod{2^n}\rangle</math>.}} The equality will hold no matter in which order measurement is performed (on the registers A or B), assuming that {{mvar|F}} has run to completion. Measurement can even be randomly and concurrently interleaved qubit by qubit, since the measurements assignment of one qubit will limit the possible value-space from the other entangled qubits. Even though the equalities holds, the probabilities for measuring the possible outcomes may change as a result of applying {{mvar|F}}, as may be the intent in a quantum search algorithm. This effect of value-sharing via entanglement is used in [[Shor's algorithm]], [[Quantum phase estimation|phase estimation]] and in [[Quantum counting algorithm|quantum counting]]. Using the [[Quantum Fourier transform|Fourier transform]] to amplify the probability amplitudes of the solution states for some [[Computational problem|problem]] is a generic method known as "[[Quantum algorithm#Fourier fishing and Fourier checking|Fourier fishing]]".<ref>{{Cite arXiv|last = Aaronson|first = Scott|year = 2009|title=BQP and the Polynomial Hierarchy|class=quant-ph|eprint=0910.4698}}</ref> == Logic function synthesis == [[File:Quantum Full Adder.png|upright=1.5|thumb|A quantum [[full adder]], given by Feynman in 1986.<ref name="Feynman-QMC"/> It consists of only [[#Toffoli|Toffoli]] and [[#CNOT|CNOT]] gates. The gate that is surrounded by the dotted square in this picture can be omitted if [[uncomputation]] to restore the ''B output'' is not required.]] Functions and routines that only use gates can themselves be described as matrices, just like the smaller gates. The matrix that represents a quantum function acting on <math>q</math> qubits has size {{nowrap|<math>2^q \times 2^q</math>.}} For example, a function that acts on a "qubyte" (a [[Quantum register|register]] of 8 qubits) would be represented by a matrix with <math>2^8 \times 2^8 = 256 \times 256</math> elements. Unitary transformations that are not in the set of gates natively available at the quantum computer (the primitive gates) can be synthesised, or approximated, by combining the available primitive gates in a [[quantum circuit|circuit]]. One way to do this is to factor the matrix that encodes the unitary transformation into a product of tensor products (i.e. [[#Serially wired gates|series]] and [[#Parallel gates|parallel]] circuits) of the available primitive gates. The [[Group (mathematics)|group]] [[Unitary group|U(2<sup>''q''</sup>)]] is the [[symmetry group]] for the gates that act on <math>q</math> qubits.<ref name="Barenco"/> Factorization is then the [[Computational problem|problem]] of finding a path in U(2<sup>''q''</sup>) from the [[Generating set of a group|generating set]] of primitive gates. The [[Solovay–Kitaev theorem]] shows that given a sufficient set of primitive gates, there exist an efficient approximate for any gate. For the general case with a large number of qubits this direct approach to circuit synthesis is [[Computational complexity theory#Intractability|intractable]].<ref>{{Cite journal|last1=Dawson|first1=Christopher M.|last2=Nielsen|first2=Michael|date=2006-01-01|title=The Solovay-Kitaev algorithm|at=Section 5.1, equation 23|url=https://dl.acm.org/doi/abs/10.5555/2011679.2011685|journal=Quantum Information and Computation|volume=6|issue=1|doi=10.26421/QIC6.1-6|language=EN|arxiv=quant-ph/0505030}}</ref><ref>{{Cite journal|last1=Matteo|first1=Olivia Di|title=Parallelizing quantum circuit synthesis|journal=Quantum Science and Technology|year=2016|url=http://dx.doi.org/10.1088/2058-9565/1/1/015003|volume=1|issue=1|page=015003|doi=10.1088/2058-9565/1/1/015003|arxiv=1606.07413|bibcode=2016QS&T....1a5003D|s2cid=62819073}}</ref> This puts a limit on how large functions can be brute-force factorized into primitive quantum gates. Typically quantum programs are instead built using relatively small and simple quantum functions, similar to normal classical programming. Because of the gates [[unitary matrix|unitary]] nature, all functions must be [[reversible computing|reversible]] and always be [[bijective]] mappings of input to output. There must always exist a function <math>F^{-1}</math> such that {{nowrap|<math>F^{-1}(F(|\psi\rangle)) = |\psi\rangle</math>.}} Functions that are not invertible can be made invertible by adding [[Ancilla bit|ancilla qubits]] to the input or the output, or both. After the function has run to completion, the ancilla qubits can then either be [[Uncomputation|uncomputed]] or left untouched. Measuring or otherwise collapsing the quantum state of an ancilla qubit (e.g. by re-initializing the value of it, or by its spontaneous [[Quantum decoherence|decoherence]]) that have not been uncomputed may result in errors,<ref>{{Cite journal|arxiv=quant-ph/0209060|last1=Aaronson|first1=Scott|title=Quantum Lower Bound for Recursive Fourier Sampling|journal=Quantum Information and Computation|volume=3|issue=2|pages=165–174|year=2002|doi=10.26421/QIC3.2-7|bibcode=2002quant.ph..9060A}}</ref><ref>[https://docs.microsoft.com/en-us/quantum/user-guide/language/statements/quantummemorymanagement?view=qsharp-preview Q# online manual: Quantum Memory Management]</ref> as their state may be entangled with the qubits that are still being used in computations. Logically irreversible operations, for example addition modulo <math>2^n</math> of two <math>n</math>-qubit registers ''a'' and ''b'', {{nowrap|<math>F(a, b) = a+b \pmod{2^n}</math>,}}{{efn|The input is <math>2n</math> qubits, but the output is just <math>n</math> qubits. Information erasure is not a reversible (or [[Unitarity (physics)|unitary]]) operation, and therefore not allowed. See also [[Landauer's principle]].}} can be made logically reversible by adding information to the output, so that the input can be computed from the output (i.e. there exists a function {{nowrap|<math>F^{-1}</math>).}} In our example, this can be done by passing on one of the input registers to the output: {{nowrap|<math>F(|a\rangle \otimes |b\rangle) = |a+b \pmod{2^n}\rangle \otimes |a\rangle</math>.}} The output can then be used to compute the input (i.e. given the output <math>a+b</math> and {{nowrap|<math>a</math>,}} we can easily find the input; <math>a</math> is given and {{nowrap|<math>(a+b) - a = b</math>)}} and the function is made bijective. All [[Boolean algebra]]ic expressions can be encoded as unitary transforms (quantum logic gates), for example by using combinations of the [[#Pauli X|Pauli-X]], [[#CNOT|CNOT]] and [[#CCNOT|Toffoli]] gates. These gates are [[Functional completeness|functionally complete]] in the Boolean logic domain. There are many unitary transforms available in the libraries of [[Q Sharp|Q#]], [[Quantum Computation Language|QCL]], [[Qiskit]], and other [[quantum programming]] languages. It also appears in the literature.<ref>{{Cite journal |title=Quantum circuit for the fast Fourier transform |journal=Quantum Information Processing |volume=19 |issue=277 |year=2020 |first1=Asaka |last1=Ryo |first2=Sakai |last2=Kazumitsu |first3=Yahagi |last3=Ryoko |page=277|doi=10.1007/s11128-020-02776-5 |arxiv=1911.03055 |bibcode=2020QuIP...19..277A |s2cid=207847474 |url=https://link.springer.com/article/10.1007/s11128-020-02776-5}}</ref><ref>{{Cite journal |last1=Montaser |first1=Rasha |title=New Design of Reversible Full Adder/Subtractor using R gate |journal=[[International Journal of Theoretical Physics]] |year=2019 |volume=58 |issue=1 |pages=167–183 |doi=10.1007/s10773-018-3921-1 |arxiv=1708.00306 |bibcode=2019IJTP...58..167M |s2cid=24590164}}</ref> For example, <math>\mathrm{inc}(|x\rangle) = |x + 1 \pmod{2^{x_\text{length}}}\rangle</math>, where <math>x_\text{length}</math> is the number of qubits that constitutes the [[Quantum register|register]] {{nowrap|<math>x</math>,}} is implemented as the following in QCL:<ref>[http://tph.tuwien.ac.at/~oemer/tgz/qcl-0.6.4.tgz QCL 0.6.4 source code, the file "lib/examples.qcl"]</ref><ref name="Oemer">{{cite thesis|last=Ömer |first=Bernhard |date=2000-01-20 |title=Quantum Programming in QCL |publisher=Institute for Theoretical Physics, Vienna University of Technology |url=http://tph.tuwien.ac.at/~oemer/doc/quprog.pdf |access-date=2021-05-24 |archive-url=https://web.archive.org/web/20220601141903/http://tph.tuwien.ac.at/~oemer/doc/quprog.pdf |archive-date=June 1, 2022}}</ref><ref name="Oemer2">{{cite journal |last=Ömer |first=Bernhard |title=Classical Concepts in Quantum Programming |journal=International Journal of Theoretical Physics |date=29 Apr 2003 |volume=44 |issue=7 |pages=943–955 |doi=10.1007/s10773-005-7071-x |arxiv=quant-ph/0211100 |s2cid=119373370}}</ref> <syntaxhighlight lang="Verilog"> cond qufunct inc(qureg x) { // increment register int i; for i = #x-1 to 0 step -1 { CNot(x[i], x[0::i]); // apply controlled-not from } // MSB to LSB } </syntaxhighlight> [[File:Increment_with_one_on_four_qubits_using_controlled_Pauli_X_gates_only.png|upright=1.6|thumb|right|The generated circuit, when {{nowrap|<math>x_{\text{length}}=4</math>}}. The symbols <math>\oplus</math>, <math>\land</math> and <math>\neg</math> denotes [[Exclusive or|XOR]], [[Logical conjunction|AND]] and [[Negation|NOT]] respectively, and comes from the Boolean representation of Pauli-''X'' with zero or more control qubits when applied to states that are in the computational basis.]] In QCL, decrement is done by "undoing" increment. The prefix <code>!</code> is used to instead run the [[#Unitary inversion of gates|unitary inverse]] of the function. <code>!inc(x)</code> is the inverse of <code>inc(x)</code> and instead performs the operation {{nowrap|<math>\mathrm{inc}^\dagger |x\rangle = \mathrm{inc}^{-1}(|x\rangle) = |x - 1 \pmod{2^{x_\text{length}}}\rangle</math>.}} The <code>cond</code> keyword means that the function can be [[#Controlled gates|conditional]].<ref name="Oemer-structured-programming"/> In the [[model of computation]] used in this article (the [[quantum circuit]] model), a classic computer generates the gate composition for the quantum computer, and the quantum computer behaves as a [[coprocessor]] that receives instructions from the classical computer about which primitive gates to apply to which qubits.{{r|Oemer|pages=36–43}}<ref name="cryo-controller">{{cite journal |vauthors=Pauka SJ, Das W, Kalra R, Moini A, Yang Y, Trainer M, Bousquet A, Cantaloube C, Dick N, Gardner GC, Manfra MJ, Reilly DJ|journal=[[Nature Electronics]]|title=A cryogenic CMOS chip for generating control signals for multiple qubits |year=2021 |volume=4 |issue=4 |pages=64–70 |doi=10.1038/s41928-020-00528-y |arxiv=1912.01299 |s2cid=231715555}}</ref> Measurement of quantum registers results in binary values that the classical computer can use in its computations. [[Quantum algorithm]]s often contain both a classical and a quantum part. Unmeasured [[Input/output|I/O]] (sending qubits to remote computers without collapsing their quantum states) can be used to create [[Quantum network|networks of quantum computers]]. [[Quantum teleportation#Entanglement swapping|Entanglement swapping]] can then be used to realize [[distributed algorithms]] with quantum computers that are not directly connected. Examples of distributed algorithms that only require the use of a handful of quantum logic gates are [[superdense coding]], the [[quantum Byzantine agreement]] and the [[BB84]] [[Quantum key distribution|cipherkey exchange protocol]]. == See also == {{Further|List of quantum logic gates}} {{div col|colwidth=18em}} * [[Adiabatic quantum computation]] * [[BQP]] * [[Cellular automaton]] * [[Cloud-based quantum computing]] * [[Counterfactual definiteness]] * [[Counterfactual quantum computation]] * [[Landauer's principle]] * [[Logical connective]] * [[One-way quantum computer]] * [[Quantum algorithm]] * [[Quantum cellular automaton]] * [[Quantum channel]] * [[Quantum finite automaton]] * [[Quantum logic]] * [[Quantum memory]] * [[Quantum network]] * [[Quantum Zeno effect]] * [[Reversible computing]] * [[Unitary transformation (quantum mechanics)]] {{div col end}} ==Notes== {{notelist}} == References == <references/> === Sources === * {{Cite book|title=Quantum Computation and Quantum Information|last1=Nielsen|first1=Michael A.|last2=Chuang|first2=Isaac|date=2000|publisher=[[Cambridge University Press]]|isbn=0521632358|location=Cambridge|oclc=43641333|author-link=Michael Nielsen|author-link2=Isaac Chuang}} * {{cite book |author=Williams |first=Colin P. |year=2011 |title=Explorations in Quantum Computing |publisher=[[Springer Science+Business Media|Springer]] |isbn=978-1-84628-887-6 |language=en}} * {{Cite book|title=Quantum computing for computer scientists|last1=Yanofsky|first1=Noson S.|last2=Mannucci|first2=Mirco|date=2013|publisher=[[Cambridge University Press]]|isbn=978-0-521-87996-5}} {{Quantum computing}} {{emerging technologies|quantum=yes|other=yes}} {{DEFAULTSORT:Quantum Gate}} [[Category:Quantum gates| ]] [[Category:Quantum information science]] [[Category:Logic gates]] [[Category:Australian inventions]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Anchor
(
edit
)
Template:Citation
(
edit
)
Template:Cite arXiv
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite thesis
(
edit
)
Template:Cite web
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Efn
(
edit
)
Template:Emerging technologies
(
edit
)
Template:Frac
(
edit
)
Template:Further
(
edit
)
Template:IPA
(
edit
)
Template:Main
(
edit
)
Template:Math
(
edit
)
Template:Multiple image
(
edit
)
Template:Mvar
(
edit
)
Template:Notelist
(
edit
)
Template:Nowrap
(
edit
)
Template:Quantum computing
(
edit
)
Template:R
(
edit
)
Template:Redirect-distinguish
(
edit
)
Template:Short description
(
edit
)
Template:Use American English
(
edit
)
Template:Val
(
edit
)