{"id":275,"date":"2007-01-16T11:08:15","date_gmt":"2007-01-16T11:08:15","guid":{"rendered":"http:\/\/scientopia.org\/blogs\/goodmath\/2007\/01\/16\/quantum-computation-complexity-bqp\/"},"modified":"2007-01-16T11:08:15","modified_gmt":"2007-01-16T11:08:15","slug":"quantum-computation-complexity-bqp","status":"publish","type":"post","link":"http:\/\/www.goodmath.org\/blog\/2007\/01\/16\/quantum-computation-complexity-bqp\/","title":{"rendered":"Quantum Computation Complexity: BQP"},"content":{"rendered":"<p> What started me on this whole complexity theory series was a question in<br \/>\nthe comments about the difference between quantum computers and classical<br \/>\ncomputers. Taking the broadest possible view, in theory, a quantum computer<br \/>\nis a kind of non-deterministic machine &#8211; so in the best possible case,<br \/>\na quantum machine can solve NP-complete problems in polynomial time. The set<br \/>\nof things computable on a quantum machine is not different from the set of<br \/>\nthings computable on a classical machine &#8211; but the things that are <em>tractable<\/em> (solvable in a reasonable amount of time) on a quantum<br \/>\ncomputer may be different.<\/p>\n<p><!--more--><\/p>\n<p> The current proposed designs for quantum computers fall well short of being general non-deterministic machines &#8211; so the set of problems that are<br \/>\ntractable on a quantum automaton (QA) may not be as large as the set of problems tractable on a general non-deterministic automaton (NDA). <\/p>\n<p> To try to understand what we can do with a QA, there&#8217;s a complexity class<br \/>\nBQP &#8211; bounded probability quantum polynomial &#8211; to represent the things<br \/>\ncomputable in polynomial time using a quantum computer. BQP is basically the equivalent of P for conventional computers &#8211; it is part of the nature of the quantum machine that its programs are <em>always<\/em> probabilistic.<\/p>\n<p> To really understand what BQP means, we need to take a moment to look at what a quantum computer is, in contrast to a conventional computer. The canonical example of a conventional computer for the purposes of computation theory is the turing machine. To make the contrast between the quantum automaton and the turing machine clearer, we&#8217;ll use a restricted definition of the Turing machine called a binary Turing machine. (The binary Turing machine is equivalent in power to the general Turing machine; in fact, some people use this restricted definition as the canonical definition of a TM.) <\/p>\n<p> A binary Turing machine consists of:<\/p>\n<ol>\n<li> A <em>tape<\/em>, which is an unbounded sequence of numbered cells,<br \/>\neach of which may contain either a one or a zero.<\/li>\n<li> A <em>tape head<\/em>, which is positioned over some tape cell at any<br \/>\npoint in time, and in any computation step, can read the value of a cell, write a new value into the cell, and move one step in either direction. <\/li>\n<li> A <em>state<\/em> consisting of a finite set of binary registers r<sub>1<\/sub>,&#8230;,r<sub>n<\/sub>.\n<li> A <em>state transition function<\/em> &lambda; : (r<sub>1<\/sub>&#8230;r<sub>n<\/sub>) &times; (0|1) &rarr; (r&#8217;<sub>1<\/sub>&#8230;r&#8217;<sub>n<\/sub>) &times; (0|1) &times; (left|right), which takes the current state and the symbol under the tape head as input, and produces a new state, a symbol to be written to the tape cell, and a direction to move the head. <\/li>\n<\/ol>\n<p> A computation starts with some input written onto the tape, with the tape head positioned at cell zero. Each step, it invokes the transition function,<br \/>\nand updates the state, tape cell value, and head position based on the result. It continues to do this until it enters the state where all registers contain the value 0, at which point it halts. When the machine halts, the <em>result<\/em> of the computation is the value on the tape.<\/p>\n<p> A basic quantum machine is very similar &#8211; it also has a tape, a register<br \/>\nset, and a transition function &#8211; but they&#8217;re all probabilistic. Instead of a<br \/>\nquantum register\/tape cell containing a specific value of one or zero, it contains a probability function describing the quantum state of the register &#8211; effectively specifying the probability of seeing a <em>one<\/em> when the value of the tape cell\/register is <em>observed<\/em>; and instead of the transition function specifying a transition from a fixed state to a fixed state, it specifies how the <em>probability function<\/em> for the registers\/tape cell varies.<\/p>\n<p> The result is something <em>similar<\/em> to BPP, but not quite the same. In BPP, you get to flip a coin to choose a path. But once you&#8217;ve chosen a path, you&#8217;re committed to that path. If that path turns out to be a dead end, there&#8217;s no way to get back the time you spent on the dead end. You&#8217;re committed to it, and you&#8217;ve already paid for it. In contrast, on a quantum machine, everything is happening in a sort of probability haze &#8211; until the end of the computation when you observe the result, it&#8217;s not committed to a <em>single<\/em> path. It doesn&#8217;t have to set the value of a register to zero; it can effectively just change the probability function associated with that register; if a computation is a dead end, its contribution to the probability function will <em>fade out<\/em> of the quantum state of the register.<\/p>\n<p> But it&#8217;s not all good news for the quantum machine. Unfortunately, here&#8217;s where the direct correspondence between the quantum machine and the classical turing machine breaks down. In general, a quantum machine is effectively <em>linear<\/em>. You don&#8217;t get to do something like a conditional in a quantum computation: at least for the technologies we&#8217;re looking at so far, they execute a <em>linear<\/em> set of instructions. So you can&#8217;t branch. If you want to explore multiple paths, you need to encode the paths together in the probability functions. So effectively, the while the quantum transition function does get to alter the state and the tape cell, it does <em>not<\/em> have a single fixed transition function: each transition function has a specific successor, and no matter what happens to the tape and the registers,<br \/>\nthe transition function has to go through a specific sequence of values for the computation. So instead of a single transition function &lambda;, the quantum machine has a sequence of functions {&lambda;<sub>1<\/sub>,&#8230;,&lambda;<sub>n<\/sub>}, which must all be used in sequence during the computation. So, effectively, you can do small local<br \/>\nbranches &#8211; that is, choices within the duration of a single transition function; but you can&#8217;t make choices the way you could with a non-quantum machine.<\/p>\n<p> So what&#8217;s the difference between BPP and BQP? BQP allows the <em>limited<\/em> exploration of multiple paths, instead of requiring an<br \/>\na priori commitment to one of them.<\/p>\n<p> In terms of the complexity hierarchy, P &sube; BPP &sube; BQP &sube; PP. So BQP is <em>at least<\/em> as powerful as BPP, and possibly better &#8211; but it&#8217;s bounded from above by PP. And in fact, PP is sufficiently different from BQP that being able to get the solution to a BQP problem in <em>constant<\/em> time doesn&#8217;t grant <em>any<\/em> additional capability to PP. (In fact, according to wikipedia, being able to solve BQP problems in <em>zero<\/em> time doesn&#8217;t give any additional capability to PP; but I haven&#8217;t seen the proof of that.) So from what we know, BQP is very close to BPP; if P!=NP (as many of us expect), then BQP may be slighty larger that BPP, but no larger than PP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What started me on this whole complexity theory series was a question in the comments about the difference between quantum computers and classical computers. Taking the broadest possible view, in theory, a quantum computer is a kind of non-deterministic machine &#8211; so in the best possible case, a quantum machine can solve NP-complete problems in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[80],"tags":[],"class_list":["post-275","post","type-post","status-publish","format-standard","hentry","category-computational-complexity"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4lzZS-4r","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":0,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/275\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/media?parent=275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/categories?post=275"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/tags?post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}