A [[complexity class]] is a collection of [[computational problem]]s that can be solved by a computational model under certain resource constraints. For instance, the complexity class [[P (complexity)|P]] is defined as the set of problems solvable by a [[Turing machine]] in [[polynomial time]]. Similarly, quantum complexity classes may be defined using quantum models of computation, such as the [[Quantum circuit|quantum circuit model]] or the equivalent [[quantum Turing machine]]. One of the main aims of quantum complexity theory is to find out how these classes relate to classical complexity classes such as [[P (complexity)|P]], [[NP (complexity)|NP]], [[BPP (complexity)|BPP]], and [[PSPACE]].
One of the reasons quantum complexity theory is studied are the implications of quantum computing for the modern [[Church–Turing thesis|Church-Turing thesis]]. In short the modern Church-Turing thesis states that any computational model can be simulated in polynomial time with a [[probabilistic Turing machine]].<ref name=":02">{{Cite journalbook|last=Vazirani|first=Umesh V.|datetitle=2002Quantum Computation |titlechapter=A survey of quantum complexity theory |url=http://dx.doi.org/10.1090/psapm/058/1922899|journalseries=Proceedings of Symposia in Applied Mathematics |date=2002 |volume=58|pages=193–217|doi=10.1090/psapm/058/1922899|isbn=9780821820841|issn=2324-7088}}</ref><ref name=":32">{{Cite book|last=Nielsen, Michael A., 1974-|url=https://www.worldcat.org/oclc/665137861|title=Quantum computation and quantum information|date=2010|publisher=Cambridge University Press|others=Chuang, Isaac L., 1968-|isbn=978-1-107-00217-3|edition=10th anniversary|___location=Cambridge|oclc=665137861}}</ref> However, questions around the Church-Turing thesis arise in the context of quantum computing. It is unclear whether the Church-Turing thesis holds for the quantum computation model. There is much evidence that the thesis does not hold. It may not be possible for a probabilistic Turing machine to simulate quantum computation models in polynomial time.<ref name=":02" />
Both quantum computational complexity of functions and classical computational complexity of functions are often expressed with [[asymptotic notation]]. Some common forms of asymptotic notion of functions are <math>O(T(n))</math>, <math>\Omega(T(n))</math>, and <math>\Theta(T(n))</math>. <math>O(T(n))</math> expresses that something is bounded above by <math>cT(n)</math> where <math>c</math> is a constant such that <math>c>0</math> and <math>T(n)</math> is a function of <math>n</math>, <math>\Omega(T(n))</math> expresses that something is bounded below by <math>cT(n)</math> where <math>c</math> is a constant such that <math>c>0</math> and <math>T(n)</math> is a function of <math>n</math>, and <math>\Theta(T(n))</math> expresses both <math>O(T(n))</math> and <math>\Omega(T(n))</math>.<ref name=":12">{{Citation|last=Cleve|first=Richard|title=An Introduction to Quantum Complexity Theory|date=2000|url=http://dx.doi.org/10.1142/9789810248185_0004|work=Quantum Computation and Quantum Information Theory|pages=103–127|publisher=WORLD SCIENTIFIC|doi=10.1142/9789810248185_0004|arxiv=quant-ph/9906111|bibcode=2000qcqi.book..103C|isbn=978-981-02-4117-9|s2cid=958695|access-date=October 10, 2020}}</ref> These notations also have their own names. <math>O(T(n))</math> is called [[Big O notation]], <math>\Omega(T(n))</math> is called Big Omega notation, and <math>\Theta(T(n))</math> is called Big Theta notation.
== Overview of complexity classes ==
|}
[[File:BQP complexity class diagram.svg|thumb|The suspected relationship of BQP to other complexity classes.<ref>Nielsen, p. 42</ref>]]
<!-- Basic definition of BQP -->
== Simulation of quantum circuits ==
There is no known way to efficiently simulate a quantum computational model with a classical computer. This means that a classical computer cannot simulate a quantum computational model in polynomial time. However, a [[quantum circuit]] of <math>S(n)</math> qubits with <math>T(n)</math> quantum gates can be simulated by a classical circuit with <math>O(2^{S(n)}T(n)^3)</math> [[Logic gate|classical gates]].<ref name=":12"/> This number of classical gates is obtained by determining how many bit operations are necessary to simulate the quantum circuit. In order to do this, first the amplitudes associated with the <math>S(n)</math> qubits must be accounted for. Each of the states of the <math>S(n)</math> qubits can be described by a two-dimensional complex vector, or a state vector. These state vectors can also be described a [[linear combination]] of its [[Euclidean vector|component vectors]] with coefficients called amplitudes. These amplitudes are complex numbers which are normalized to one, meaning the sum of the squares of the absolute values of the amplitudes must be one.<ref name=":12" /> The entries of the state vector are these amplitudes. WhichThe entryamplitudes, eachacting ofas coefficients in the amplitudeslinear arecombination description, each correspond to thea nonenon-zero component of the componentstate vector which they are the coefficients of in the linear combination description. As an equation this is described as <math>\alpha \begin{bmatrix} 1 \\ 0 \end{bmatrix} + \beta \begin{bmatrix} 0 \\ 1 \end{bmatrix} = \begin{bmatrix} \alpha \\ \beta \end{bmatrix}</math> or <math>\alpha \left \vert 1 \right \rangle + \beta \left \vert 0 \right \rangle = \begin{bmatrix} \alpha \\ \beta \end{bmatrix}</math> using [[Bra–ket notation|Dirac notation]]. The state of the entire <math>S(n)</math> qubit system can be described by a single state vector. This state vector describing the entire system is the tensor product of the state vectors describing the individual qubits in the system. The result of the tensor products of the <math>S(n)</math> qubits is a single state vector which has <math>2^{S(n)}</math> dimensions and entries that are the amplitudes associated with each basis state or component vector. Therefore, <math>2^{S(n)}</math>amplitudes must be accounted for with a <math>2^{S(n)}</math> dimensional complex vector which is the state vector for the <math>S(n)</math> qubit system.<ref>{{Cite book|last1=Häner|first1=Thomas|last2=Steiger|first2=Damian S.|title=Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis |chapter=0.5 petabyte simulation of a 45-qubit quantum circuit |date=2017-11-12|chapter-url=http://dx.doi.org/10.1145/3126908.3126947|pages=1–10|___location=New York, NY, USA|publisher=ACM|doi=10.1145/3126908.3126947|arxiv=1704.01127|isbn=978-1-4503-5114-0|s2cid=3338733}}</ref> In order to obtain an upper bound for the number of gates required to simulate a quantum circuit we need a sufficient upper bound for the amount data used to specify the information about each of the <math>2^{S(n)}</math> amplitudes. To do this <math>O(T(n))</math> bits of precision are sufficient for encoding each amplitude.<ref name=":12" /> So it takes <math>O(2^{S(n)}T(n))</math> classical bits to account for the state vector of the <math>S(n)</math> qubit system. Next the application of the <math>T(n)</math> quantum gates on <math>2^{S(n)}</math> amplitudes must be accounted for. The quantum gates can be represented as <math>2^{S(n)}\times2^{S(n)}</math> [[Sparse matrix|sparse matrices]].<ref name=":12" /> So to account for the application of each of the <math>T(n)</math> quantum gates, the state vector must be multiplied by a <math>2^{S(n)}\times2^{S(n)}</math> sparse matrix for each of the <math>T(n)</math> quantum gates. Every time the state vector is multiplied by a <math>2^{S(n)}\times2^{S(n)}</math> sparse matrix, <math>O(2^{S(n)})</math> arithmetic operations must be performed.<ref name=":12" /> Therefore, there are <math>O(2^{S(n)}T(n)^2)</math> bit operations for every quantum gate applied to the state vector. So <math>O(2^{S(n)}T(n)^2)</math> classical gate are needed to simulate <math>S(n)</math> qubit circuit with just one quantum gate. Therefore, <math>O(2^{S(n)}T(n)^3)</math> classical gates are needed to simulate a quantum circuit of <math>S(n)</math> qubits with <math>T(n)</math> quantum gates.<ref name=":12" /> While there is no known way to efficiently simulate a quantum computer with a classical computer, it is possible to efficiently simulate a classical computer with a quantum computer. This is evident from the fact that <math>\mathsf{BPP\subseteq BQP}</math>.<ref name=":27"/>
==Quantum query complexity ==
==Other theories of quantum physics==
It has been speculated that further advances in physics could lead to even faster computers. For instance, it has been shown that a non-local, but non-signaling hidden variable quantum computer based on [[De Broglie–Bohm theory|Bohmian Mechanics]] could implement a search of an {{mvar|N}}-item database in at most <math>O(\sqrt[3]{N})</math> steps, a slight speedup over [[Grover's algorithm]], which runs in <math>O(\sqrt{N})</math> steps. Note, however, that neither search method would allow quantum computers to solve [[NP-complete]] problems in polynomial time.<ref name="auto">{{cite webjournal |title=Quantum Computing and Hidden Variables |last=Aaronson |first=Scott |journal=Phys. Rev. A |volume=71 |pages=032325 |date=2005 |doi=10.1103/PhysRevA.71.032325 |arxiv=quant-ph/0408035 |url=http://www.scottaaronson.com/papers/qchvpra.pdf}}</ref> Theories of [[quantum gravity]], such as [[M-theory]] and [[loop quantum gravity]], may allow even faster computers to be built. However, defining computation in these theories is an open problem due to the [[problem of time]]; that is, within these physical theories there is currently no obvious way to describe what it means for an observer to submit input to a computer at one point in time and then receive output at a later point in time.<ref>{{Cite journal |first=Scott |last=Aaronson |title=NP-complete Problems and Physical Reality |journal=ACM SIGACT News |volume=2005 |arxiv=quant-ph/0502072 |year=2005 |bibcode=2005quant.ph..2072A |author-link=Scott Aaronson}} See section 7 "Quantum Gravity": "[...] to anyone who wants a test or benchmark for a favorite quantum gravity theory,[author's footnote: That is, one without all the bother of making numerical predictions and comparing them to observation] let me humbly propose the following: ''can you define Quantum Gravity Polynomial-Time?'' [...] until we can say what it means for a 'user' to specify an 'input' and 'later' receive an 'output'—''there is no such thing as computation, not even theoretically.''" (emphasis in original)</ref><ref>{{cite web |url=http://www.dwavesys.com/en/pressreleases.html#lm_2011 |title=D-Wave Systems sells its first Quantum Computing System to Lockheed Martin Corporation |access-date=30 May 2011 |date=25 May 2011 |publisher=D-Wave |archive-date=22 December 2020 |archive-url=https://web.archive.org/web/20201222041457/https://www.dwavesys.com/en/pressreleases.html#lm_2011 |url-status=dead }}</ref>
==See also==
|