Content deleted Content added
m Task 18 (cosmetic): eval 13 templates: del empty params (7×); hyphenate params (1×); del |url-status= (1×); |
m MOS:HEAD Spelling/grammar/punctuation/typographical correction |
||
Line 14:
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 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 ==
Some important complexity classes are P, BPP, BQP, PP, and P-Space. To define these we first define a promise problem. A promise problem is a decision problem which has an input assumed to be selected from the set of all possible input strings. A promise problem is a pair <math>A=(A_{yes},A_{no})</math>. <math>A_{yes}</math> is the set of yes instances, <math>A_{no}</math> is the set of no instances, and the intersection of these sets is such that <math>A_{yes}\cap A_{no}=\emptyset</math>. All of the previous complexity classes contain promise problems.<ref name=":27">{{Cite journal|last=Watrous|first=John|date=2008-04-21|title=Quantum Computational Complexity|url=http://arxiv.org/abs/0804.3401|journal=arXiv:0804.3401 [quant-ph]|arxiv=0804.3401}}</ref>
{| class="wikitable"
Line 73:
It is also known that BQP is contained in the complexity class ''[[Sharp-P|#P]]'' (or more precisely in the associated class of decision problems ''P<sup>#P</sup>''),<ref name=BernVazi/> which is a subset of [[PSPACE]].
== 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. Which entry each of the amplitudes are correspond to the none-zero component of the component 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 journal|last1=Häner|first1=Thomas|last2=Steiger|first2=Damian S.|date=2017-11-12|title=0.5 petabyte simulation of a 45-qubit quantum circuit|url=http://dx.doi.org/10.1145/3126908.3126947|journal=Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis|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 preformed.<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 belief that <math>BBP\subseteq BQP</math>.<ref name=":27"/>
==Quantum
One major advantage of using a quantum computational system instead of a classical one, is that a quantum computer may be able to give a [[Polynomial-time algorithm|polynomial time algorithm]] for some problem for which no classical polynomial time algorithm exists, but more importantly, a quantum computer may significantly decrease the calculation time for a problem that a classical computer can already solve efficiently. Essentially, a quantum computer may be able to both determine how long it will take to solve a problem, while a classical computer may be unable to do so, and can also greatly improve the computational efficiency associated with the solution to a particular problem. Quantum query complexity refers to how complex, or how many queries to the graph associated with the solution of a particular problem, are required to solve the problem. Before we delve further into query complexity, let us consider some background regarding graphing solutions to particular problems, and the queries associated with these solutions.
=== Query
One type of problem that quantum computing can make easier to solve are graph problems. If we are to consider the amount of queries to a graph that are required to solve a given problem, let us first consider the most common types of graphs, called [[directed graph]]s, that are associated with this type of computational modelling. In brief, directed graphs are graphs where all edges between vertices are unidirectional. Directed graphs are formally defined as the graph <math>G=(N,E)</math>, where N is the set of vertices, or nodes, and E is the set of edges.<ref>{{Cite web|last=Nykamp|first=D.Q.|title=Directed Graph Definition|url=https://mathinsight.org/definition/directed_graph}}</ref>
==== Adjacency
When considering quantum computation of the solution to directed directed graph problems, there are two important query models to understand. First, there is the adjacency matrix model, where the graph of the solution is given by the adjacency matrix: <math>M \in \{0,1\}a^{n\Chi n} </math>, with <math>M_{ij}=1 </math>, if and only if <math>(v_{i},v_{j})\in E </math>.<ref name=":0">{{Cite journal|last1=Durr|first1=Christoph|last2=Heiligman|first2=Mark|last3=Hoyer|first3=Peter|last4=Mhalla|first4=Mehdi|date=January 2006|title=Quantum query complexity of some graph problems|url=http://arxiv.org/abs/quant-ph/0401091|journal=SIAM Journal on Computing|volume=35|issue=6|pages=1310–1328|doi=10.1137/050644719|arxiv=quant-ph/0401091|s2cid=27736397|issn=0097-5397}}</ref>
==== Adjacency
Next, there is the slightly more complicated adjacency array model built on the idea of [[adjacency list]]s, where every vertex, <math>u </math>'','' is associated with an array of neighboring vertices such that <math>f_i:[d_i^+]\rightarrow[n] </math>, for the out-degrees of vertices <math>d_i^+,...,d_n^+ </math>, where <math>n </math> is the minimum value of the upper bound of this model, and <math>f_i(j) </math> returns the "<math>j^{th} </math>" vertex adjacent to <math>i </math>. Additionally, the adjacency array model satisfies the simple graph condition, <math>\forall i\in[n],j,j^{'}\in[k],j\neq j^{'}: f_i(j)\neq f_i(j^{'}) </math>, meaning that there is only one edge between any pair of vertices, and the number of edges is minimized throughout the entire model (see [[Spanning tree]] model for more background).<ref name=":0" />
=== Quantum
Both of the above models can be used to determine the query complexity of particular types of graphing problems, including the [[Connectivity (graph theory)|connectivity]], [[Strongly connected component|strong connectivity]] (a directed graph version of the connectivity model), [[minimum spanning tree]], and [[Shortest path problem|single source shortest path]] models of graphs. An important caveat to consider is that the quantum complexity of a particular type of graphing problem can change based on the query model (namely either matrix or array) used to determine the solution. The following table showing the quantum query complexities of these types of graphing problems illustrates this point well.
{| class="wikitable"
Line 115:
Notice the discrepancy between the quantum query complexities associated with a particular type of problem, depending on which query model was used to determine the complexity. For example, when the matrix model is used, the quantum complexity of the connectivity model in [[Big O notation]] is <math>\Theta(n^{3/2})</math>, but when the array model is used, the complexity is <math>\Theta(n)</math>. Additionally, for brevity, we use the shorthand <math>m</math> in certain cases, where <math>m=\Theta(n^2)</math>.<ref name=":0" /> The important implication here is that the efficiency of the algorithm used to solve a graphing problem is dependent on the type of query model used to model the graph.
=== Other
In the query complexity model, the input can also be given as an oracle (black box). The algorithm gets information about the input only by querying the oracle. The algorithm starts in some fixed quantum state and the state evolves as it queries the oracle.
Similar to the case of graphing problems, the quantum query complexity of a black-box problem is the smallest number of queries to the oracle that are required in order to calculate the function. This makes the quantum query complexity a lower bound on the overall time complexity of a function.
==== Grover's
An example depicting the power of quantum computing is [[Grover's algorithm]] for searching unstructured databases. The algorithm's quantum query complexity is <math display="inline">O{\left(\sqrt{N}\right)}</math>, a quadratic improvement over the best possible classical query complexity <math>O(N)</math>, which is a [[linear search]]. While Grover's algorithm is more optimized than the best possible classical algorithm, we know that Grover's algorithm is not one hundred percent optimal.<ref>{{Cite journal|last=Ambainis|first=Andris|date=October 28, 2005|title=Polynomial degree vs. quantum query complexity|url=https://linkinghub.elsevier.com/retrieve/pii/S0022000005000899|journal=Journal of Computer and System Sciences|language=en|volume=72|issue=2|pages=220–238|doi=10.1016/j.jcss.2005.06.006}}</ref> Optimization of a query algorithm refers to how the algorithm compares to the most efficient theoretical algorithm that solves the same problem. An algorithm is said to be [[Asymptotic optimality|asymptotically optimized]] if at worst, it performs at a constant factor worse than the most efficient possible algorithm. Note that an algorithm is still considered to be optimized if it performs worse than the most efficient possible algorithm, as long as the algorithm doesn't get exponentially worse than the most efficient possible algorithm, as the number of inputs increases.
==== Deutsch-Jozsa
The Deutsch-Jozsa algorithm is a quantum algorithm designed to solve a toy problem with a smaller query complexity than is possible with a classical algorithm. The toy problem asks whether a function <math>f:\{0,1\}^n\rightarrow\{0,1\}</math> is constant or balanced, those being the only two possibilities.<ref name=":32"/> The only way to evaluate the function <math>f</math> is to consult a [[black box]] or [[Oracle machine|oracle]]. A classical [[deterministic algorithm]] will have to check more than half of the possible inputs to be sure of whether or not the function is constant or balanced. With <math>2^n</math> possible inputs, the query complexity of the most efficient classical deterministic algorithm is <math>2^{n-1}+1</math>.<ref name=":32" /> The Deutsch-Jozsa algorithm takes advantage of quantum parallelism to check all of the elements of the ___domain at once and only needs to query the oracle once. Meaning the query complexity of the Deutsch-Jozsa algorithm is <math>1</math>.<ref name=":32" />
|