Content deleted Content added
Citation bot (talk | contribs) Alter: edition. Add: pages, s2cid, bibcode, arxiv, doi, isbn, volume, author pars. 1-1. Removed parameters. Formatted dashes. Some additions/deletions were actually parameter name changes. Correct ISBN10 to ISBN13. | You can use this bot yourself. Report bugs here. | Suggested by Grimes2 | Category:CS1 maint: extra text | via #UCB_Category 13/33 |
Fix cite date error |
||
Line 10:
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 computer|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 journal|last=Vazirani|first=Umesh V.|date=2002|title=A survey of quantum complexity theory|url=http://dx.doi.org/10.1090/psapm/058/1922899|journal=Proceedings of Symposia in Applied Mathematics|volume=58|pages=193–217|doi=10.1090/psapm/058/1922899|isbn=9780821820841|issn=2324-7088}}</ref><ref name=":
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=":
== Complexity Classes Overview ==
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=":
{| class="wikitable"
|+
Line 22:
|-
|P
|Promise problems for which a polynomial time deterministic Turing machine accepts all strings in <math>A_{yes}</math> and rejects all strings in <math>A_{no}</math><ref name=":
|-
|BPP
|Promise problems for which a polynomial time Probabilistic Turing machine accepts every string in <math>A_{yes}</math> with a probability of at least <math>\frac{2}{3}</math>, and accepts every string in <math>A_{no}</math> with a probability of at most <math>\frac{1}{3}</math><ref name=":
|-
|BQP
|Promise problems such that for functions <math>a,b:\mathbb {N}\rightarrow[0,1]</math>, there exists a polynomial time generated family of quantum circuits <math>Q={\{Q_n:n\in \mathbb{N}\}}</math>, where <math>Q_n</math> is a circuit which accepts <math>n</math> qubits and gives an output of one qubit. An element <math>x</math> of <math>A_{yes}</math> is accepted by <math>Q</math> with a probability greater than or equal to <math>a(\left \vert x \right \vert) </math>. An element <math>x</math> of <math>A_{no}</math> is accepted by <math>Q</math> with a probability less than or equal to <math>b(\left \vert x\right \vert)</math>.
|-
|PP
|Promise problems for which a polynomial time Probabilistic Turing machine accepts every string in <math>A_{yes}</math> with a probability greater than <math>\frac{1}{2}</math>, and accepts every string in <math>A_{no}</math> with a probability of at most <math>\frac{1}{2}</math><ref name=":
|-
|P-SPACE
|Promise problems for which a deterministic Turing machine, that runs in polynomial space, accepts every string in <math>A_{yes}</math> and rejects all strings in <math>A_{no}</math><ref name=":
|}
Line 74:
== Simulating 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"
==Quantum Query Complexity ==
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 Models of Directed Graphs ===
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 [[
==== Adjacency Matrix Model ====
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>.
==== Adjacency Array Model ====
Next, there is the slightly more complicated adjacency array model built on the idea of [[
=== Quantum Query Complexity of Certain Types of Graph Problems ===
Line 113:
|<math>\Omega(\sqrt{nm})</math>, <math>O(\sqrt{nm}log^2(n))</math>
|}
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>.
=== Other Types of Quantum Computational Queries ===
Line 121:
==== Grover's Algorithm ====
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|via=}}</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 Algorithm ====
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"
==See also==
|