<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阅微堂 &#187; NP</title>
	<atom:link href="http://zhiqiang.org/blog/tag/np/feed" rel="self" type="application/rss+xml" />
	<link>http://zhiqiang.org/blog</link>
	<description>数学、金融、计算机</description>
	<lastBuildDate>Wed, 23 May 2012 08:37:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>时间机器上的计算</title>
		<link>http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html</link>
		<comments>http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html#comments</comments>
		<pubDate>Fri, 22 Aug 2008 04:12:42 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[NP]]></category>
		<category><![CDATA[PSPACE]]></category>
		<category><![CDATA[Quantum Computing Since Democritus]]></category>
		<category><![CDATA[时间机器]]></category>
		<category><![CDATA[计算]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/posts/computation-under-time-travel-machine.html</guid>
		<description><![CDATA[博客 » 计算机科学 » NP，PSPACE，Quantum Computing Since Democritus，时间机器，计算 » 来源：Scott Aaronson的Quantum Computing Since Democritus的第19次课程。Aaronson是MIT的年青教授，也是理论计算机届的Terry Tao。美国大学课程的开放性和创造性由这门课程便可看出。 注：此文不是翻译，加入作者本人之理(误)解以及大量删减；略去很多物理背景（我也不懂），有兴趣者可阅读课程笔记原文（英...]]></description>
			<content:encoded><![CDATA[<p id="breadcrumb" class="breadcrumb"><a href="http://zhiqiang.org/blog/">博客</a> » <a href="http://zhiqiang.org/blog/category/science/computer-science">计算机科学</a> » <a href="http://zhiqiang.org/blog/tag/np" rel="tag">NP</a>，<a href="http://zhiqiang.org/blog/tag/pspace" rel="tag">PSPACE</a>，<a href="http://zhiqiang.org/blog/tag/quantum-computing-since-democritus" rel="tag">Quantum Computing Since Democritus</a>，<a href="http://zhiqiang.org/blog/tag/%e6%97%b6%e9%97%b4%e6%9c%ba%e5%99%a8" rel="tag">时间机器</a>，<a href="http://zhiqiang.org/blog/tag/%e8%ae%a1%e7%ae%97" rel="tag">计算</a> » </p><blockquote><p>来源：<a href="http://www.scottaaronson.com">Scott Aaronson</a>的<strong><a href="http://www.scottaaronson.com/democritus/default.html" target="_blank">Quantum Computing Since Democritus</a></strong>的第19次课程。Aaronson是MIT的年青教授，也是理论计算机届的Terry Tao。美国大学课程的开放性和创造性由这门课程便可看出。</p>
<p>注：此文不是翻译，加入作者本人之理(误)解以及大量删减；略去很多物理背景（我也不懂），有兴趣者可阅读<a href="http://www.scottaaronson.com/democritus/lec19.html" target="_blank">课程笔记原文（英文）</a>。</p>
</blockquote>
<p>人们想知道在计算中，<a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html" target="_blank">NP问题</a>，比如哈密尔顿回路问题（判断一个图是否有圈经过每个顶点恰好一次），是否可以在多项式时间内被解决。即使引入量子计算后，这个问题也一直悬而未决，成为千禧年七大问题之首。</p>
<p>如果我们在时间本身上做手脚呢？</p>
<p>比如在相对论中，不同物体的时间流逝不一样，如果我们能让计算机在时间流逝上快很多，那我们也变相得解决了这个问题，不是么？</p>
<p>很可惜，根据相对论原理，<p style='text-align:center;'><span class='MathJax_Preview'><img src='http://zhiqiang.org/blog/wp-content/plugins/latex/cache/tex_ec1d887a5138d3cffb07a9c9216f59c9.gif' style='vertical-align: middle; border: none;' class='tex' alt="t'=\frac{t}{1-v^2}" /></span><script type='math/tex;  mode=display'>t'=\frac{t}{1-v^2}</script></p>要使计算机进行指数级的加速，必须让速度指数级接近于光速，这也意味着所需要的能量指数级增长，而因为能量密度不可能大于黑洞，这也意味着计算机的大小必须指数级增长，某种程度上来说就是EXPSPACE，这是不可取的(建造指数级数量的计算机同时计算可达到同样效果)。</p>
<p>但更进一步的，如果我们允许时间旅行呢？</p>
<p>时间旅行，时空空间的闭圈，简记为CTCs（closed timelike curves），在现有物理理论中，还是相容的。我们假设CTC是可行的（量子计算理论的研究也要大大早于真正的量子计算机的出现），我们能解决什么样的问题？</p>
<p>一个很自然的想法就是让计算机持续计算，直到算出结果后再把结果发回来。但这样并没有改变真实计算时间。这好像你透支你的信用卡的钱一样，只不过提前支取罢了。</p>
<p>所以一个不那么naive的方法是把让计算机以一段时间比如1小时为限，算满1小时后把结果和进度发回来，然后计算机接着算。这样也貌似可以解决一切问题？</p>
<p>而这个的正确性不是那么显然的。在分析这个算法之前，我们必须讨论如果CTC存在，会是什么样子。</p>
<p>时间旅行的一大悖论就是祖父悖论，想想一个人回到过去杀死自己的祖父，会发生什么？这也是时间旅行理论的最大挑战。我们这里采取<a href="http://prd.aps.org/abstract/PRD/v44/i10/p3197_1">David Deutsch</a>提出的理论。这个理论认为在量子机制框架下，CTC是自洽的。简单的解释下，就是这个世界是个概率空间，以markov过程的方式进行运作，如果每次新的概率分布和原来的一样，就可以避免祖父悖论了。</p>
<p>Deutsch在这个理论中需要<em>causal consistency</em>，在CTC的运行中，一切都将自洽(consistency)：新的概率分布总和原来保持一致。在经典理论中，这是不可能的。但在概率模型里面，markov过程的稳定分布则是一组解。在祖父模型中，如果你出生的概率是1/2，而且如果出生的话，则会去杀死祖父，那么你出生的概率仍然是1/2，没有任何矛盾。</p>
<p>接下来就是纯粹理论计算机上的结果了，记P<sub><small>CTC&nbsp; </small></sub>为允许时间旅行的多项式时间可计算的问题，BQP<sub>CTC</sub>是时间旅行机器结合量子计算机时多项式时间可计算的问题。那么有意思的是：</p>
<p align="center">P<sub>CTC</sub> = BQP<sub>CTC</sub> = PSPACE</p>
<p>也就是说它们的能力是可以被精确确定的，而且远达不到无限。</p>
<p>注：详细证明和描述见原文。</p>
<p>习题：</p>
<ul>
<li>如果有时间旅行机器的帮助，但这个机器的能力极为有限，每次只允许发回一个bit(0和1)的信息。问这台机器对于计算的帮助有多大？ 它能帮助解决NP问题吗？</li>
</ul>
<div><h4>相关文章</h4><ul><li class='currentpost'><a href="http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html">时间机器上的计算</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html">理论计算机初步：P vs NP - 问题概述</a></li><li ><a href="http://zhiqiang.org/blog/science/pi-pi-calculation-and-records.html">圆周率<span class='MathJax_Preview'><img src='http://zhiqiang.org/blog/wp-content/plugins/latex/cache/tex_4f08e3dba63dc6d40b22952c7a9dac6d.gif' style='vertical-align: middle; border: none; padding-bottom:2px;' class='tex' alt="\pi" /></span><script type='math/tex'>\pi</script>的计算及纪录</a></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2008. | <a href="http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html#comments">9 &#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>理论计算机初步：P vs NP - 问题概述</title>
		<link>http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html</link>
		<comments>http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html#comments</comments>
		<pubDate>Wed, 23 Aug 2006 14:40:08 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[NP]]></category>
		<category><![CDATA[NP完全]]></category>
		<category><![CDATA[P vs NP]]></category>
		<category><![CDATA[复杂性理论]]></category>
		<category><![CDATA[理论计算机初步]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/412.html</guid>
		<description><![CDATA[博客 » 计算机科学 » NP，NP完全，P vs NP，复杂性理论，理论计算机初步 » 系列：理论计算机初步 查看该系列所有文章 P = NP? 这个问题，作为理论计算机科学的核心问题，其声名早已经超越了这个领域。它是Clay研究所的七个百万美元大奖问题之一，在2006国际数学家大会上，它是某个1小时讲座的主题。 要说起P和NP是什么东西，得先从算法的多项式时间复杂度谈起，注意，这里...]]></description>
			<content:encoded><![CDATA[<p id="breadcrumb" class="breadcrumb"><a href="http://zhiqiang.org/blog/">博客</a> » <a href="http://zhiqiang.org/blog/category/science/computer-science">计算机科学</a> » <a href="http://zhiqiang.org/blog/tag/np" rel="tag">NP</a>，<a href="http://zhiqiang.org/blog/tag/np%e5%ae%8c%e5%85%a8" rel="tag">NP完全</a>，<a href="http://zhiqiang.org/blog/tag/p-vs-np" rel="tag">P vs NP</a>，<a href="http://zhiqiang.org/blog/tag/%e5%a4%8d%e6%9d%82%e6%80%a7%e7%90%86%e8%ae%ba" rel="tag">复杂性理论</a>，<a href="http://zhiqiang.org/blog/tag/%e7%90%86%e8%ae%ba%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%88%9d%e6%ad%a5" rel="tag">理论计算机初步</a> » </p><div class="series"><span>系列：<b>理论计算机初步</b></span><br/>
<a href="http://zhiqiang.org/blog/tag/%e7%90%86%e8%ae%ba%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%88%9d%e6%ad%a5">查看该系列所有文章</a>
<div id='series'></div>
</div>  <blockquote><p>P = NP?</p></blockquote>
<p>这个问题，作为理论计算机科学的核心问题，其声名早已经超越了这个领域。它是<a href="http://www.claymath.org/millennium/P_vs_NP/">Clay研究所的七个百万美元大奖问题之一</a>，在<a href="http://icm2006.org/" target="_blank">2006国际数学家大会</a>上，它是<a href="http://icm2006.org/v_f/web_fr.php" target="_blank" rel="ICM 2006 一小时讲座列表">某个1小时讲座</a>的<a href="http://icm2006.org/v_f/AbsDef/Invited/wigderson.pdf" target="_blank" rel="讲座的摘要">主题</a>。</p>
<p>要说起P和NP是什么东西，得先从算法的多项式时间复杂度谈起，注意，这里面的两个P都是指Polynomial。</p>
<p>一个问题的规模指的是输入的总位数，比如一个n个数的排序问题，输入规模就是n。注意，在某些时候，输入规模是要值得注意的，比如判定一个数n是否是一个质数这个问题，它的输入规模并不是n，而是log(n)，因为一个数n用大约log(n)位就能表示出来了，这也是为何枚举因子判定素数的算法并不是多项式时间算法的原因。</p>
<p>如果一个算法，它能在以输入规模为参变量的某个多项式的时间内给出答案，则称它为<strong>多项式时间算法</strong>。注意：这里的多项式时间是指算法<font color="#ff0000">运行的步数</font>。一个算法是否是多项式算法，与计算模型的具体的物理实现没有关系，虽然大多数假想的计算模型不可能有任何物理的实现。</p>
<p><strong>P</strong>指确定型图灵机上的具有多项式算法的问题集合，<strong>NP</strong>指非确定型图灵机上具有多项式算法的问题集合，这里N是Non-Deterministic的意思（图灵机的概念见<a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-algorithms-and-calculation-model.html">理论计算机初步：算法和计算模型</a>）。</p>
<p>脱离图灵机的概念，就在普通的计算机上看，P问题是指能够<font color="#ff0000">在多项式时间求解</font>的判定问题（判定问题指只需要回答是和不是的问题），而NP问题则是指那些其肯定解能够<font color="#ff0000">在给定正确信息下在多项式时间内验证</font>的判定问题。比如，要判定一个数是合数，如果给我一个约数，我们就很快判定它就是合数。所以判定一个数是合数的问题属于NP。 下面是一些NP问题的例子：</p>
<blockquote>
<h5>零子集和问题</h5>
<p>给n个整数，判断是否可以从中找到若干个数，其和为0。</p>
<h5>旅行商问题</h5>
<p>有n个城市，一个推销员要从其中某一个城市出发，不重复地走遍所有的城市，再回到他出发的城市。问这个推销员的最短路程(是否小于指定的K)。</p></blockquote>
<p>从上面的定义知道，NP包含P。P vs NP问题指<font color="#ff0000">P是否完全等于NP</font>，即确定型图灵机和非确定图灵机的性能是否一样。</p>
<p>人们为何要提出NP问题？因为，大多数遇到的自然的难解问题，最后都发现它们是NP问题。如果我们能证明NP跟P的关系，则解决了无数问题的算法复杂度问题。</p>
<p>NP里面有无数个不同的问题，我们是否要一个一个地判定它们是否属于P呢？P vs NP问题的美妙和简洁之处便在于在NP中，有一个子类，<strong>NP完全</strong>(NP Complete，简记为<strong>NPC</strong>)问题，指的是那些NP中最难的那些问题：所有其它的NP问题都可以归约到这些NP完全问题。也就是说，只要这些NP完全问题的某一个得到解决，无论是证明其存在多项式算法，还是不存在，都意味着P vs NP问题的解决。</p>
<p>而几乎所有NP里面无法确定是否属于P的问题最后都被证明为NP完全。正因为如此，多数理论计算机学家都猜测P≠NP。目前已知的NP完全问题数以千计，上面引用中的例子都是完全问题，更多NP完全问题见<a href="http://www.nada.kth.se/~viggo/problemlist/compendium.html">NP完全问题的不完全列表</a>。</p>
<p>一个很自然的想法是如果NP≠P，则NP-P里面的问题都是完全问题。至少有两个自然的问题，一个是大数分解（给出一个数的质因数分解式），另一个是图同构问题（给出两个图，它们是否同构），它们既没有被证明是P的，也没有被证明是NP-完全。但是更惊人的是还有这个定理：</p>
<blockquote><p>如果NP≠P，那么NP-P中存在非NP完全问题。</p></blockquote>
<p>当然，这种问题具体是什么样子，是无法用直观的语言表示出来，它纯粹是一个数学上的构造性证明。</p>
<p><strong>参阅</strong>：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Complexity_classes_P_and_NP">Complexity classes P and NP - Wikipedia, the free encyclopedia</a>, <a href="http://zh.wikipedia.org/wiki/P/NP%E9%97%AE%E9%A2%98">P/NP问题- Wikipedia</a></li>
<li><a href="http://en.wikipedia.org/wiki/Turing_machine">Turing machine - Wikipedia, the free encyclopedia</a>, <a href="http://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%9C%BA">图灵机- Wikipedia</a></li>
<li><a href="http://en.wikipedia.org/wiki/NP-hard">NP-hard - Wikipedia, the free encyclopedia</a>,</li>
</ul>
<p>备注：中国大陆可以通过<a href="http://browseatwork1.com">http://browseatwork1.com</a> <a href="http://www.doggystyleporn.org/sites/">访问wikipedia</a>.</p>
<div><h4>相关文章</h4><ul><li class='currentpost'><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html">理论计算机初步：P vs NP - 问题概述</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-past-present-and-future.html">理论计算机初步：P vs NP - 历史，现状和未来</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/what-if-p-np.html">What if P = NP?</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/np-hard.html">TCS：NP-hard</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/computation-under-time-travel-machine-19.html">时间机器上的计算</a></li><li ><a href="http://zhiqiang.org/blog/science/quantum-history-uncertainty-principle.html">测不准原理还是不确定性原理 - 谈量子物理史话一</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-preface.html">理论计算机初步：前言</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-approximation-algorithms-and-probability-algorithm.html">理论计算机初步：概率算法和近似算法</a></li><li ><a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-xiao-yun-wang-from-the-hash-function-to-crack-md5.html">理论计算机初步：从hash函数到王小云的MD5破解</a></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2006. | <a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html#comments">10 &#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

