<?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>Wandsea.com &#187; OI</title>
	<atom:link href="http://wandsea.com/blog/tag/oi/feed" rel="self" type="application/rss+xml" />
	<link>http://wandsea.com/blog</link>
	<description>好吧..大家都要加油哦～</description>
	<lastBuildDate>Wed, 08 Sep 2010 15:17:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>关于C语言,推荐这么几本不错的书</title>
		<link>http://wandsea.com/blog/460.htm</link>
		<comments>http://wandsea.com/blog/460.htm#comments</comments>
		<pubDate>Tue, 05 Jan 2010 15:18:13 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[Program Impossible]]></category>
		<category><![CDATA[OI]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://wandsea.com/blog/?p=460</guid>
		<description><![CDATA[推荐时间到了,从Noip结束后一直在学习C语言,来推荐下了.. 有点基础的呢,就去看那本&#60;The C Program Language&#62;(C程序设计语言),听了Douban上的某些评论,买了那本英文原版的,可以接受,后来又去上海... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>推荐时间到了,从Noip结束后一直在学习C语言,来推荐下了..</p>
<p>有点基础的呢,就去看那本&lt;The C Program Language&gt;(C程序设计语言),听了Douban上的某些评论,买了那本英文原版的,可以接受,后来又去上海图书馆把翻译版的借了回来,要是只论理解难易度,果然英文的好.</p>
<p>就是有一点,这是关于K&amp;R C的教材,和AnsiC还是有些细微不同的.</p>
<p>然后就是&lt;C陷阱与缺陷&gt;和&lt;C专家编程&gt;.这里面把一些容易忽略的细节整理了一下,还是满值得一读的.其中所写的K&amp;RC和ANSIC的不同点刚好可以补充前一本书.</p>
<p>再然后呢,就多切题吧.....</p>
<p>感觉与Pascal相比,其中指针的作用更加明显了,和系统底层的联系从这里也可以体现出来.</p>
<p>Bless.</p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/460.htm#comments" title="to the comments"><font color="red">加油！已经盖到9楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li><li><a href="http://wandsea.com/blog/408.htm" title="随机闲聊网站-Omegle.com">随机闲聊网站-Omegle.com</a> (25)</li><li><a href="http://wandsea.com/blog/401.htm" title="Nothing Here 09.03.30">Nothing Here 09.03.30</a> (11)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/460.htm/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>最近做的无聊事-FrozenTurtle篇</title>
		<link>http://wandsea.com/blog/449.htm</link>
		<comments>http://wandsea.com/blog/449.htm#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:16:46 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[Program Impossible]]></category>
		<category><![CDATA[NOIp]]></category>
		<category><![CDATA[OI]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[整理]]></category>

		<guid isPermaLink="false">http://wandsea.com/blog/?p=449</guid>
		<description><![CDATA[大多数是水.....部分感觉比较有特点的加*..不定期更新 线性动态规划 VOJ1355 车队过桥问题 f[i]表示前i部通过最短时间,预处理t[i,j]表示i到j的最慢速度,w[i]表示前i部车的重量和,f[i]:=min(f[k]+l/t[k+1,i]... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>大多数是水.....部分感觉比较有特点的加*..不定期更新</p>
<p>线性动态规划<br />
VOJ1355 车队过桥问题 f[i]表示前i部通过最短时间,预处理t[i,j]表示i到j的最慢速度,w[i]表示前i部车的重量和,f[i]:=min(f[k]+l/t[k+1,i])<br />
VOJ1292 火车票 f[i]:=min(f[k]+cost(k,i))<br />
*VOJ1474 雷曼兔(csapc) 排序后类似Lis<br />
VOJ1571 笨笨的导弹攻击 最长上升下降混合子序列...orz<br />
*VOJ1696 爱国者的周期 同上 判断周期用 (f[j]-1)mod(t*2)&lt;t<br />
VOJ1421 更换轮胎 f[i,j]表示第i圈用j种车胎所需最短时间,另开l[i]表示第i圈的最短时间用的车胎号码<br />
*Open09ski 滑雪 f[i,j] 表示于i时间j能力所能得到最多滑雪数 f[i,j]:=max(f[i-1,j],f[i-d[g[i]],j]+1(j&gt;=c[k]),f[i-l[k],0](0为i-l[k]时最大达到))g[i] 表示能力为i时 所能滑的最优轨道号码<br />
VOJ1331 看球的巴士 f[i]:=min(f[j]+1)(abs(s[i]-s[j])&lt;=d)or(abs(s[i]-s[j])=i-j) f[0]=0 f[1]=1<br />
Cai0715-1 一起去打cs f[i,j]:=min(f[i-1,j]+b[i],f[i-1,j-a[i]]) 状态 完成i-1件作业耗甲j时间时,所需乙最短时间 决策 第i件交给谁做<br />
VOJ1118 统计字符串 预处理g[i,j] i-j间字符串个数<br />
*VOJ1037 搭建双塔 f[i-1,j] 不放   f[i-1,j+h[i]]  放到矮塔仍为矮塔   f[i-1,h[i]-j]+j  放到矮塔变成高塔   f[i-1,j-h[i]]+h[i]  放到高塔</p>
<p>背包问题<br />
VOJ1625 精卫填海(HOI) 01背包<br />
VOJ1418 公司聚会 倒推01背包 f[p[i],j]:=max(f[p[i],j],f[p[i],j-k]+f[i,k]),最后判断职人1号是否更优.<br />
VOJ1544 GF 裸两维背包<br />
VOJ1392 拼拼图的小杉 伪01背包 f[i,j]表示前i件物品选j件,所需最小集合数,g[i,j]表示最后一个集合已填充容量<br />
VOJ1198 最佳课题选择 f[i,j] 前i种论文完成j件所需最短时间 f[i,j]:=min(f[i-1,k]+a[i]*(j-k)^b[i]) 0&lt;=k&lt;=j (分组背包也可做)<br />
*VOJ1313 金明的预算方案 有依赖背包-&gt;分组背包</p>
<p>树形动态规划<br />
*VOJ1180 选课 基础树形.f[k,t]:=max(f[r[k],t],max(f[l[k],t-1-i]+f[r[k],i]+s[k])) (i=1..t-1)</p>
<p>区间动态规划<br />
*VOJ1242 邮局问题 f[i,j] 1到i的村庄,修j个邮局的最小距离,预处理d[i,j],表示于i,j中点修建的距离和,f[i,j]:=min(f[k,j-1]+d[k+1,i])<br />
*VOJ1347 乘积最大 f[i,j]:=max(f[k,j-1]*s[k+1,i])<br />
VOJ1218 数字游戏 预处理s数组后同乘积最大 f[i,j]:=max(f[k,j-1]*s[k+1,i])</p>
<p>多进程动态规划<br />
VOJ1493 传纸条 f[i,j,k]第i步,A的x位置于j,B的x位置为k的最大值<br />
*VOJ1143 三取方格数 同上,四维,第一维可用循环数组消去.<br />
*VOJ1014 旅行商简化 f[i,j]:=min(f[j,j-1]+s[j-1,i],f[i,j-1]+s[j-1,j]) (i&gt;=j) f[i,j]=f[j,i] 避免跳过路程,必须从近的一点j进行扩展<br />
VOJ1680 距离 字符串距离  f[i,j]:=min(f[i-1,j-1]+d[i,j],f[i-1,j]+k,f[i,j-1]+k)<br />
VOJ1111 水果店 总长度-最长公共子序列</p>
<p>状态压缩<br />
*VOJ1424 炮兵阵地 把每一行状态用二进制存储于一个longint中,预处理每一行可能摆放,存于p[i,j],由于一行只与前两行有关,<br />
f[i,j,k]:=max(f[i-1,k,t]+addnum(p[i,j])) f[i,j,k] 表示到第i行,第i行摆放为p[i,j],第i-1行为p[i-1,k] 时的最多炮兵数<br />
Matrix67-0817 多米诺 类似上一题,状态压缩每一行状态,70分</p>
<p>递推<br />
VOJ1232 核电站问题 连续N个东西,不能选连续m个的选法总数<br />
VOJ1408 古韵之乞巧 f[i,k+1]:=f[i,k+1]+f[j,k] 以s[i]结尾的长为k+1的方案数</p>
<p>记忆化搜索<br />
VOJ1547 逆转，然后再见 诡异的记忆化搜索..<br />
VOJ1011 滑雪 同上</p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/449.htm#comments" title="to the comments"><font color="red">加油！已经盖到2楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li><li><a href="http://wandsea.com/blog/352.htm" title="11.15 NOIp2008">11.15 NOIp2008</a> (15)</li><li><a href="http://wandsea.com/blog/309.htm" title="OI与追MM的联系">OI与追MM的联系</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/449.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nothing Here 09.09.27</title>
		<link>http://wandsea.com/blog/433.htm</link>
		<comments>http://wandsea.com/blog/433.htm#comments</comments>
		<pubDate>Sun, 27 Sep 2009 14:21:04 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[It's My Life]]></category>
		<category><![CDATA[ACG]]></category>
		<category><![CDATA[OI]]></category>
		<category><![CDATA[动画]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[随记]]></category>

		<guid isPermaLink="false">http://wandsea.com/blog/?p=433</guid>
		<description><![CDATA[很久没更新啦...很不好..写几句.. 10.1开始正式准备NOIp..先把初赛题做完....不能免修的怨念啊....只能干这个了....&#62;_&#60; 话说...前13届的题目居然翻出一本去年打印的...一个字没写...囧..我是说... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>很久没更新啦...很不好..写几句..</p>
<p>10.1开始正式准备NOIp..先把初赛题做完....不能免修的怨念啊....只能干这个了....&gt;_&lt;</p>
<p>话说...前13届的题目居然翻出一本去年打印的...一个字没写...囧..我是说我一个字没写...恶趣味...</p>
<p>继续怨念.怨念下月考.......</p>
<p>话说..逐渐宅化中....</p>
<p>Luckystar Clannad K-On 凉宫 凉宫酱 鹤屋 零使......</p>
<p>囧掉....Clannad游戏不错..真的....</p>
<p>暑假之后收了一只铁三角CM-3,一只罗技LS-1......</p>
<p>不错是不错....有点小贵了....</p>
<p>给移动硬盘上了个ubuntu,很方便..</p>
<p>对了...OSU!很好玩....有空去磨损鼠标去.....</p>
<p>air&amp;kanon就等1=后(要是有的话)再玩了~</p>
<p>加油了..有点小期待~</p>
<p>不就四道题么...</p>
<p>~(*^__^*)~</p>
<p>吐槽怨念文结束..继续背单词去~下面呢..大牛们就帮忙看下吧=.=<span id="more-433"></span></p>
<p>那个..知识点就这么点了么.....超纲是肯定有的..有漏什么么....?</p>
<blockquote><p>二分查找 排序 KMP 进制转换 高精度 快速幂 最大公约/最小公倍 约数个数 求/判断素数 位运算优化 stirling</p>
<p>链表 线段树 hash表 并查集 二叉查找树 树的遍历(前中后转换)</p>
<p>动态规划 with单调队列</p>
<p>etc..懒得分了..自己找资料去</p>
<p>第N短路径 最小生成树 最小(大)环 (强)联通分量 二分图匹配 最近点对问题 DFS BFS Floodfill 拓扑排序 汉密尔顿回路 欧拉回路 网络流初步</p></blockquote>
<p><span style="color: #ffffff;"></span></p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/433.htm#comments" title="to the comments"><font color="red">加油！已经盖到10楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/401.htm" title="Nothing Here 09.03.30">Nothing Here 09.03.30</a> (11)</li><li><a href="http://wandsea.com/blog/471.htm" title="Ubuntu&#038;Wine運行星際爭霸2">Ubuntu&#038;Wine運行星際爭霸2</a> (9)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/433.htm/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>烟台09.7.14-09.7.23</title>
		<link>http://wandsea.com/blog/426.htm</link>
		<comments>http://wandsea.com/blog/426.htm#comments</comments>
		<pubDate>Fri, 24 Jul 2009 09:10:32 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[It's My Life]]></category>
		<category><![CDATA[OI]]></category>
		<category><![CDATA[旅行]]></category>
		<category><![CDATA[照片]]></category>

		<guid isPermaLink="false">http://wandsea.com/blog/?p=426</guid>
		<description><![CDATA[去烟台兜了一圈,主要是听课,但是呢...很明显,我不会一直呆在宿舍的.. 一共出去玩了3次,市区的一些比较好看的地方都去兜了兜吧~ 海边,烟台山,十字街教堂,广仁路. 日全食是错过了,但还有偏食... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>去烟台兜了一圈,主要是听课,但是呢...很明显,我不会一直呆在宿舍的..</p>
<p>一共出去玩了3次,市区的一些比较好看的地方都去兜了兜吧~</p>
<p>海边,烟台山,十字街教堂,广仁路.</p>
<p>日全食是错过了,但还有偏食看,观测条件相当好,云都看不到几片,就是没装备,拿了个曝光胶卷加上透明胶带,做了个滤光镜,上课前做的..WJD看着我笑了好久..囧</p>
<p>效果还可以.只是能拍,能看的等级,后来又用Gimp滤掉了一点红色,比较满意了</p>
<p>感觉烟台的节奏很缓慢,上课安排很不合理,经常空出来半个小时一个小时,集中在一起都可以去蓬莱玩一圈了&gt;_&lt;</p>
<p>本来还想最后一天去芝罘岛玩一圈,但天气不是很好,再加上寝室人都走光了,行李没地方放,无聊地去了一家上岛咖啡,还没有无线网络,伤心啊..</p>
<p>那天RP差,飞机还误点,到家晚了4个多钟头..机场的移动Wlan很方便,早知道下午也呆那里了..</p>
<p>照片用的是GooglePicasa相册,自己想办法吧~或者想看的话留言也行,其实认识我的,校内上也有不完整未修图版~^^</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="334" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FWandsea%2Falbumid%2F5361942629341396961%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" /><param name="src" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" /><embed type="application/x-shockwave-flash" width="500" height="334" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FWandsea%2Falbumid%2F5361942629341396961%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US"></embed></object></p>
<p>照片还算比较正常,loli出现次数不算很多..- -</p>
<p>特别赞一下去烟台山那天的天气,天很蓝~</p>
<p>In your life, there will at least one time that you forget yourself for someone, asking for no result, no company, no ownership nor love.^^......</p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/426.htm#comments" title="to the comments"><font color="red">加油！已经盖到9楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/360.htm" title="我又回来了－－囧&#8230;">我又回来了－－囧&#8230;</a> (8)</li><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/428.htm" title="Ubuntu下给照片批量添加EXIF信息水印">Ubuntu下给照片批量添加EXIF信息水印</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/426.htm/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>OI与追MM的联系</title>
		<link>http://wandsea.com/blog/309.htm</link>
		<comments>http://wandsea.com/blog/309.htm#comments</comments>
		<pubDate>Thu, 21 Aug 2008 12:03:33 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[It's My Life]]></category>
		<category><![CDATA[Love]]></category>
		<category><![CDATA[MM]]></category>
		<category><![CDATA[OI]]></category>

		<guid isPermaLink="false">http://动态规划你追一个MM的时候，需要对该MM身边的各闺中密友都好，这样你追MM这个问题就分解为对其MM朋友的问题，只有把这些问题都解决了，最终你才能追到MM。该方法适用于聪明的MM，懂得“看一个人，不是看他如何对你，而是看他如何对他人。”的道理，并且对付这样的MM总能得到最优解。该方法的缺点是开销较大，因为每个子问题都要好好对待。。。。--------------------------------------------------------------------贪心法你</guid>
		<description><![CDATA[动态规划 你追一个MM的时候，需要对该MM身边的各闺中密友都好，这样你追MM这个问题就分解为对其MM朋友的问题，只有把这些问题都解决了，最终你才能追到MM。 该方法适用于聪明的MM，懂得“... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>动态规划<br />
你追一个MM的时候，需要对该MM身边的各闺中密友都好，这样你追MM这个问题就分解为对其MM朋友的问题，只有把这些问题都解决了，最终你才能追到MM。<br />
该方法适用于聪明的MM，懂得“看一个人，不是看他如何对你，而是看他如何对他人。”的道理，并且对付这样的MM总能得到最优解。<br />
该方法的缺点是开销较大，因为每个子问题都要好好对待。。。。</p>
<p>--------------------------------------------------------------------</p>
<p>贪心法<br />
你追一个MM的时候，从相识到相知，每次都采用最aggressive的方式，进攻进攻再进攻！从不采用迂回战术或是欲擒故纵之法！目标是以最快的速度确立两人关系。<br />
该法优点是代价小，速度快，但缺点是不是每次都能得到最优解。。。。。</p>
<p>--------------------------------------------------------------------</p>
<p>回溯算法</p>
<p>追一个MM，但也许你还是情窦初开的新手，不知道如何才能讨得MM的欢心，于是你只好一条路一条路的试，MM不开心了，你就回溯回去换另一种方式。当然其间你也许会从某些途径得到一些经验，能够判断哪些路径不好，会剪枝（这就是分支估界了）。你也可以随机选择一些路径来实施，说不定能立杆见影（这就是回溯的优化了）但总的来说，你都需要一场持久战。。。。<br />
该算法一般也能得到最优解，因为大多数MM会感动滴！！但其缺点是开销大！除非你是非要谈一场恋爱不可，否则不推荐使用。特别是你可能还有许多其他的事情要做，比如学习，比如事业。。。。<span id="more-309"></span></p>
<p>-----------------分割线一条--------------------------------------</p>
<p>在认真研读思考之后，周MM举一反三，对深度优先和广度优先也做了总结：<br />
深度优先就是追一个mm追到底，直到失败然后换个mm继续追……<br />
广度优先就是同时追多个mm，一起发展……</p>
<p>-----------------分割线又一条------------------------------------</p>
<p>大家都开始集思广益……<br />
老马：二叉树的前序、中序和后序遍历；前序就是直接搞定MM，然后搞定她爸妈（左）和你自己爸妈（右）； 中序就是先搞定未来岳父岳父，然后搞定她，最后告诉你爸妈；后序就是，让未来的岳父岳母和自己爸妈都觉得你们合适之后，才对MM下手，这个时候就没有障碍了啊。</p>
<p>-------------------------------------------------------------------<br />
来自OIBH，原链接：<a href="http://oibh.org/bbs/thread-19204-2-1.html">http://oibh.org/bbs/thread-19204-2-1.html</a></p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/309.htm#comments" title="to the comments"><font color="red">加油！已经盖到4楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li><li><a href="http://wandsea.com/blog/212.htm" title="RP导论">RP导论</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/309.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RP导论</title>
		<link>http://wandsea.com/blog/212.htm</link>
		<comments>http://wandsea.com/blog/212.htm#comments</comments>
		<pubDate>Fri, 18 Jul 2008 22:48:01 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[Internet Vision]]></category>
		<category><![CDATA[OI]]></category>
		<category><![CDATA[RP]]></category>
		<category><![CDATA[囧]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[序——为什么要写RP导论 RP，是人品的缩写，在民间广为流传，被不少人视作真理，也有很多人将之视作迷信。 真的很早就了解到RP在信息学竞赛中举足轻重的作用了，加上前两天由于爆RP考试... ]]></description>
			<content:encoded><![CDATA[<h4>序——为什么要写RP导论</h4>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://wandsea.com/blog/wp-content/uploads/2008/07/image15.png" border="0" alt="image1" hspace="8" vspace="8" width="119" height="107" align="right" /></p>
<p>RP，是人品的缩写，在民间广为流传，被不少人视作真理，也有很多人将之视作迷信。</p>
<p>真的很早就了解到RP在信息学竞赛中举足轻重的作用了，加上前两天由于爆RP考试爆零，星际被虐，交OJ莫名其妙unac……一切的一切，让我不得不把RP的理论系统篆写于书，以供参考，防止大家重蹈我的覆辙。</p>
<p>众所周知，在信息学竞赛中，除去算法数据结构使用，程序编写调试能力之外，排在第三的对比赛有至关重要作用的便是RP了。RP高的人即使不知道算法也能用随机，贪心，搜索等RP算法得到无比多的RP分数；相反，没RP的人，有时知道正确算法也写出了正确程序，也往往会因为缺少RP而无法得分。</p>
<p>这样看来，系统研究RP的积累于损失，以及量化地分析它对比赛的结果的影响就显得十分重要了。</p>
<p>但是，目前国内外系统研究RP的论文和书籍都还很缺乏，也有很多优秀的OIer认识到了RP的重要性，但又因种种原因没能从事RP方面的研究，导致很多OIer因为对RP不了解而出现发挥失常，与奖牌失之交臂，为了让这种悲剧不再发生，我们有必要仔细研究RP。</p>
<h4>RP的定义与形成</h4>
<h5><a name="21"></a>RP的概念与意义</h5>
<p>RP是大家耳熟能详的一个词汇和概念，改革开放以来，随着市场经济的深入，竞争日益激烈，大家都在寻找在各自领域取胜的有效方法，人们考虑各种因素来提高自己成功的概率。</p>
<p>江湖难测，谁是强者，谁争一统武林的资格！</p>
<p>在这样的大背景下，便自然而然地产生了RP的概念，起初这个概念还是依附在其他因素上的一个附属品，但是当人们真正认识到它的影响时，才发现它是一个独立的体系。由于各地各文献内容对RP的定义都很模糊，也不够统一，因此笔者在此一学术的角度，客观的方式给出RP的严格定义：</p>
<p>RP：在一定时间和空间范围内独立于可见因素之外以不确定方式左右客观事物变化方式甚至规律的无形物质。<span id="more-212"></span></p>
<p>一直以来，大家觉得RP过于飘渺，不愿意研究它，这其实是由于没有真正意识到RP在客观世界物质变化规律中的重要意义，由于客观世界矛盾的普遍性存在，导致RP因素在事物发展变化的各个角落都发挥着不可忽略的决策性作用，一般来说，RP的意义主要有以下几点：</p>
<ol>
<li>对客观世界的平衡作用
<ul>
<li>物质世界总是趋于平衡的，无论是能量|物质守衡定律，还是热力学第一，第二定律，都从侧面支持这一结论。但是在事物的各个方面个体之间不可能完全平衡，而又不一定能在不多的可见主观因素中使个体之间实现平衡（这正如 背包-----双塔问题不一定有解一样），但是只要有了RP，就能很方便地对客观世界进行微调，使世界不失和谐。</li>
</ul>
</li>
<li>对主观行为的威慑作用
<ul>
<li>所谓善有善报，恶有恶报，但是很难说服一个即将做不厚道事情的人让他停止，因为我们不能具体说出他的不厚道行为到底为什么会对他自己也有害，但是现在有了最强有力的威慑武器：RP！当他做不厚道事情的时候，最需要考虑的不是别的，正是自己的RP银行。</li>
</ul>
</li>
<li>对主观行为的激励作用
<ul>
<li>与第二条相类似，RP的存在可以很大程度上激励人做积累RP的厚道事情，这里不再赘述。</li>
</ul>
</li>
</ol>
<h5><a name="22"></a>RP的形成</h5>
<p>总的来说，RP的形成是多方面因素综合形象后的结果。对于RP形成的决定性因素，学术界一直没有公认的理论，目前比较被人接受的说法是：</p>
<p>RP 的形成与平时做事的厚道程度的二次方根成正比，但是也有人质疑这种说法，原因是有时一个很厚道的人也会莫名其妙没RP，典型的案例是发生在中国四川一个学校的一个叫hj的人，平时很厚道，但是也遇到了没RP的情况，虽然这很罕见，但是不得不让人思考，因此，有学者认为：在一定时间和客观条件下，RP值与该人做事厚道程度之和的正弦函数有关，因此呈现出很让人费解的波动性图象，但是这种理论因为缺乏实验支持，目前还没有在学术界占领主导地位，但是笔者认为，这种理论应该更贴近RP形成机理的真实情况。（最新研究表明，波动正是RP趋于平衡的必然结果，由于一个人的RP太高的情况下，失去 RP相对容易，所以会从波峰逐渐跌入波谷，反之亦然）</p>
<p>另外，RP的形成是有阶段性的，也就是说，有时候RP的变化并不是立竿见影的，但是RP升降因素的积累是不会停止的，在某个时期可能表现地不明显，但是宏观上的RP积累是一定的，这也就形成了RP的波动性改变，所以大家在某个RP低迷的时期也不应该停止对RP的积累。（就像力改变的是加速度，而不会对当前的速度有立竿见影的影响，不过长期的影响是深远而持久的）</p>
<p>另外客观世界满足一个基本定律————RP守衡定律，即RP不会凭空创生，也不会凭空湮灭，只会从一个人身上转移到另%</p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/212.htm#comments" title="to the comments"><font color="red">加油！已经盖到0楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li><li><a href="http://wandsea.com/blog/309.htm" title="OI与追MM的联系">OI与追MM的联系</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/212.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>什么是P问题、NP问题和NPC问题 Matrix67原创</title>
		<link>http://wandsea.com/blog/42.htm</link>
		<comments>http://wandsea.com/blog/42.htm#comments</comments>
		<pubDate>Fri, 25 Apr 2008 13:59:53 +0000</pubDate>
		<dc:creator>Wandsea</dc:creator>
				<category><![CDATA[Program Impossible]]></category>
		<category><![CDATA[NP问题]]></category>
		<category><![CDATA[OI]]></category>

		<guid isPermaLink="false">http://这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题，NPC问题才是。好，行了，基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题，什么是NP问题，什么是NPC问题，你如果不是很感兴趣就可以不看了。接下来你可以看到，把NP问题当成是NPC问题是一个多大的错误。还是</guid>
		<description><![CDATA[这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都... ]]></description>
			<content:encoded><![CDATA[<p class='fp'>这或许是众多OIer最大的误区之一。<br />
你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题，NPC问题才是。好，行了，基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题，什么是NP问题，什么是NPC问题，你如果不是很感兴趣就可以不看了。接下来你可以看到，把NP问题当成是 NPC问题是一个多大的错误。<br />
还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间，而是当问题规模扩大后，程序需要的时间长度增长得有多快。也就是说，对于高速处理数据的计算机来说，处理某一个特定数据的效率不能衡量一个程序的好坏，而应该看当这个数据的规模变大到数百倍后，程序运行时间是否还是一样，或者也跟着慢了数百倍，或者变慢了数万倍。不管数据有多大，程序处理花的时间始终是那么多的，我们就说这个程序很好，具有O(1)的时间复杂度，也称常数级复杂度；数据规模变得有多大，花的时间也跟着变得有多长，这个程序的时间复杂度就是O(n)，比如找n个数中的最大值；而像冒泡排序、插入排序等，数据扩大2倍，时间变慢4倍的，属于O(n^2)的复杂度。还有一些穷举类的算法，所需时间长度成几何阶数上涨，这就是O(a^n)的指数级复杂度，甚至O(n!)的阶乘级复杂度。不会存在O(2*n^2)的复杂度，因为前面的那个“2”是系数，根本不会影响到整个程序的时间增长。同样地，O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。因此，我们会说，一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低，尽管在n很小的时候，前者优于后者，但后者时间随数据规模增长得慢，最终O(n^3)的复杂度将远远超过O(n^2)。我们也说，O(n^100)的复杂度小于O(1.01^n)的复杂度。     <span id="more-42"></span><br />
容易看出，前面的几类复杂度被分为两种级别，其中后者的复杂度无论如何都远远大于前者：一种是O(1), O(log(n)),O(n^a)等，我们把它叫做多项式级的复杂度，因为它的规模n出现在底数的位置；另一种是O(a^n)和O(n!)型复杂度，它是非多项式级的，其复杂度计算机往往不能承受。当我们在解决一个问题时，我们选择的算法通常都需要是多项式级的复杂度，非多项式级的复杂度需要的时间太多，往往会超时，除非是数据规模非常小。<br />
自然地，人们会想到一个问题：会不会所有的问题都可以找到复杂度为多项式级的算法呢？很遗憾，答案是否定的。有些问题甚至根本不可能找到一个正确的算法来，这称之为“不可解问题”(Undecidable Decision Problem)。<a href="http://www.matrix67.com/blog/article.asp?id=62">The Halting Problem</a>就是一个著名的不可解问题，在我的Blog上有过专门的介绍和证明。再比如，输出从1到n这n个数的全排列。不管你用什么方法，你的复杂度都是阶乘级，因为你总得用阶乘级的时间打印出结果来。有人说，这样的“问题”不是一个“正规”的问题，正规的问题是让程序解决一个问题，输出一个“YES”或“NO”（这被称为判定性问题），或者一个什么什么的最优值（这被称为最优化问题）。那么，根据这个定义，我也能举出一个不大可能会有多项式级算法的问题来： Hamilton回路。问题是这样的：给你一个图，问你能否找到一条经过每个顶点一次且恰好一次（不遗漏也不重复）最后又走回来的路（满足这个条件的路径叫做Hamilton回路）。这个问题现在还没有找到多项式级的算法。事实上，这个问题就是我们后面要说的NPC问题。<br />
下面引入 P类问题的概念：如果一个问题可以找到一个能在多项式的时间里解决它的算法，那么这个问题就属于P问题。P是英文单词多项式的第一个字母。哪些问题是P类问题呢？通常NOI和NOIP不会出不属于P类问题的题目。我们常见到的一些信息奥赛的题目都是P问题。道理很简单，一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。<br />
接下来引入NP问题的概念。这个就有点难理解了，或者说容易理解错误。在这里强调（回到我竭力想澄清的误区上），NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是，可以在多项式的时间里猜出一个解的问题。比方说，我RP很好，在程序中需要枚举时，我可以一猜一个准。现在某人拿到了一个求最短路径的问题，问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图，但怎么也算不出来，于是来问我：你看怎么选条路走得最少？我说，我RP很好，肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线，说就这条吧。那人按我指的这条把权值加起来一看，嘿，神了，路径长度98，比100小。于是答案出来了，存在比100小的路径。别人会问他这题怎么做出来的，他就可以说，因为我找到了一个比100 小的解。在这个题中，找一个解很困难，但验证一个解很容易。验证一个解只需要O(n)的时间复杂度，也就是说我可以花O(n)的时间把我猜的路径的长度加出来。那么，只要我RP好，猜得准，我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的，不满足题意的方案也不会来骗我去选它。这就是NP问题。当然有不是NP问题的问题，即你猜到了解但是没用，因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子，它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然，前面所说的Hamilton回路是NP问题，因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样：试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了，因为除非你试过所有的路，否则你不敢断定它“没有Hamilton回路”。<br />
之所以要定义NP问题，是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白，信息学中的号称最困难的问题——“NP问题”，实际上是在探讨NP问题与P类问题的关系。<br />
很显然，所有的P类问题都是NP问题。也就是说，能多项式地解决一个问题，必然能多项式地验证一个问题的解——既然正解都出来了，验证任意给定的解也只需要比较一下就可以了。关键是，人们想知道，是否所有的NP问题都是P类问题。我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中，把所有 NP问题划进另一个集合NP中，那么，显然有P属于NP。现在，所有对NP问题的研究都集中在一个问题上，即究竟是否有P=NP？通常所谓的“NP问题”，其实就一句话：证明或推翻P=NP。<br />
NP问题一直都是信息学的巅峰。巅峰，意即很引人注目但难以解决。在信息学研究中，这是一个耗费了很多时间和精力也没有解决的终极问题，好比物理学中的大统一和数学中的歌德巴赫猜想等。<br />
目前为止这个问题还“啃不动”。但是，一个总的趋势、一个大方向是有的。人们普遍认为，P=NP不成立，也就是说，多数人相信，存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的，就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题，也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在，使人们相信P≠NP。下文将花大量篇幅介绍NPC问题，你从中可以体会到NPC问题使P=NP变得多么不可思议。<br />
为了说明NPC问题，我们先引入一个概念——约化(Reducibility，有的资料上叫“归约”)。<br />
简单地说，一个问题A可以约化为问题B的含义即是，可以用问题B的解法解决问题A，或者说，问题A可以“变成”问题B。《算法导论》上举了这么一个例子。比如说，现在有两个问题：求解一个一元一次方程和求解一个一元二次方程。那么我们说，前者可以约化为后者，意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题，那么我们能找到一个“规则”，按照这个规则把解一元一次方程程序的输入数据变一下，用在解一元二次方程的程序上，两个程序总能得到一样的结果。这个规则即是：两个方程的对应项系数不变，一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题，两个问题就等价了。同样地，我们可以说，Hamilton回路可以约化为TSP问题(Travelling Salesman Problem，旅行商问题)：在Hamilton回路问题中，两点相连即这两点距离为0，两点不直接相连则令其距离为1，于是问题转化为在TSP问题中，是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。<br />
“问题A可约化为问题B”有一个重要的直观意义：B的时间复杂度高于或者等于A的时间复杂度。也就是说，问题A不比问题B难。这很容易理解。既然问题A能用问题B来解决，倘若B的时间复杂度比 A的时间复杂度还低了，那A的算法就可以改进为B的算法，两者的时间复杂度还是相同。正如解一元二次方程比解一元一次方程难，因为解决前者的方法可以用来解决后者。<br />
很显然，约化具有一项重要的性质：约化具有传递性。如果问题A可约化为问题B，问题B可约化为问题C，则问题A一定可约化为问题C。这个道理非常简单，就不必阐述了。<br />
现在再来说一下约化的标准概念就不难理解了：如果能找到这样一个变化法则，对任意一个程序A的输入，都能按这个法则变换成程序B的输入，使两程序的输出相同，那么我们说，问题A可约化为问题B。<br />
当然，我们所说的“可约化”是指的可“多项式地”约化(Polynomial-time Reducible)，即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。<br />
好了，从约化的定义中我们看到，一个问题约化为另一个问题，时间复杂度增加了，问题的应用范围也增大了。通过对某些问题的不断约化，我们能够不断寻找复杂度更高，但应用范围更广的算法来代替复杂度虽然低，但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题，联想起约化的传递性，自然地，我们会想问，如果不断地约化上去，不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题，那么最后是否有可能找到一个时间复杂度最高，并且能“通吃”所有的 NP问题的这样一个超级NP问题？答案居然是肯定的。也就是说，存在这样一个NP问题，所有的NP问题都可以约化成它。换句话说，只要解决了这个问题，那么所有的NP问题都解决了。这种问题的存在难以置信，并且更加不可思议的是，这种问题不只一个，它有很多个，它是一类问题。这一类问题就是传说中的NPC 问题，也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信，NPC问题是最复杂的问题。再次回到全文开头，我们可以看到，人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。此时，我的目的终于达到了，我已经把NP问题和NPC问题区别开了。到此为止，本文已经写了近5000字了，我佩服你还能看到这里来，同时也佩服一下自己能写到这里来。<br />
NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先，它得是一个NP问题；然后，所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题，再证明其中一个已知的NPC问题能约化到它（由约化的传递性，则NPC问题定义的第二条也得以满足；至于第一个NPC问题是怎么来的，下文将介绍），这样就可以说它是NPC问题了。<br />
既然所有的NP问题都能约化成NPC问题，那么只要任意一个NPC问题找到了一个多项式的算法，那么所有的NP问题都能用这个算法解决了，NP也就等于P 了。因此，给NPC找一个多项式算法太不可思议了。因此，前文才说，“正是NPC问题的存在，使人们相信P≠NP”。我们可以就此直观地理解，NPC问题目前没有多项式的有效算法，只能用指数级甚至阶乘级复杂度的搜索。<br />
顺便讲一下NP-Hard问题。NP-Hard问题是这样一种问题，它满足NPC问题定义的第二条但不一定要满足第一条（就是说，NP-Hard问题要比 NPC问题的范围广）。NP-Hard问题同样难以找到多项式的算法，但它不列入我们的研究范围，因为它不一定是NP问题。即使NPC问题发现了多项式级的算法，NP-Hard问题有可能仍然无法得到多项式级的算法。事实上，由于NP-Hard放宽了限定条件，它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。<br />
不要以为NPC问题是一纸空谈。NPC问题是存在的。确实有这么一个非常具体的问题属于NPC问题。下文即将介绍它。<br />
下文即将介绍逻辑电路问题。这是第一个NPC问题。其它的NPC问题都是由这个问题约化而来的。因此，逻辑电路问题是NPC类问题的“鼻祖”。<br />
逻辑电路问题是指的这样一个问题：给定一个逻辑电路，问是否存在一种输入使输出为True。<br />
什么叫做逻辑电路呢？一个逻辑电路由若干个输入，一个输出，若干“逻辑门”和密密麻麻的线组成。看下面一例，不需要解释你马上就明白了。<br />
┌───┐<br />
│输入1├─→┐   ┌──┐<br />
└───┘       └─→┤     │<br />
│ or ├→─┐<br />
┌───┐       ┌─→┤     │     │      ┌──┐<br />
│输入2├─→┤      └──┘     └─→┤     │<br />
└───┘       │                     ┌─→┤AND ├──→输出<br />
└────────┘┌→┤     │<br />
┌───┐       ┌──┐               │    └──┘<br />
│输入3├─→┤NOT├─→───┘<br />
└───┘       └──┘<br />
这是个较简单的逻辑电路，当输入1、输入2、输入3分别为True、True、False或False、True、False时，输出为True。<br />
有输出无论如何都不可能为True的逻辑电路吗？有。下面就是一个简单的例子。<br />
┌───┐<br />
│输入1 ├→─┐       ┌──┐<br />
└───┘         └─→┤     │<br />
│AND├─→┐<br />
┌─→┤     │       │<br />
│      └──┘       │    ┌──┐<br />
│                       └→┤      │<br />
┌───┐          │                             │AND├─→输出<br />
│输入2  ├→─┤   ┌──┐          ┌→┤      │<br />
└───┘         └→┤NOT├→──┘    └──┘<br />
└──┘<br />
上面这个逻辑电路中，无论输入是什么，输出都是False。我们就说，这个逻辑电路不存在使输出为True的一组输入。<br />
回到上文，给定一个逻辑电路，问是否存在一种输入使输出为True，这即逻辑电路问题。<br />
逻辑电路问题属于NPC问题。这是有严格证明的。它显然属于NP问题，并且可以直接证明所有的NP问题都可以约化到它（不要以为NP问题有无穷多个将给证明造成不可逾越的困难）。证明过程相当复杂，其大概意思是说任意一个NP问题的输入和输出都可以转换成逻辑电路的输入和输出（想想计算机内部也不过是一些 0和1的运算），因此对于一个NP问题来说，问题转化为了求出满足结果为True的一个输入（即一个可行解）。<br />
有了第一个NPC 问题后，一大堆NPC问题就出现了，因为再证明一个新的NPC问题只需要将一个已知的NPC问题约化到它就行了。后来，Hamilton 回路成了NPC问题，TSP问题也成了NPC问题。现在被证明是NPC问题的有很多，任何一个找到了多项式算法的话所有的NP问题都可以完美解决了。因此说，正是因为NPC问题的存在，P=NP变得难以置信。P=NP问题还有许多有趣的东西，有待大家自己进一步的挖掘。攀登这个信息学的巅峰是我们这一代的终极目标。现在我们需要做的，至少是不要把概念弄混淆了。<br />
Matrix67原创<br />
<a href="http://www.matrix67.com/">www.matrix67.com/</a><br />
转载请注明出处</p>
<hr/><small>Copyright &copy; 2009<br /> 本Blog采用 知识共享署名-非商业性使用-相同方式共享 许可协议进行许可 轉載請署名 <br/> </small>
<a href="http://wandsea.com/blog/42.htm#comments" title="to the comments"><font color="red">加油！已经盖到0楼啦</font></a><small> － 
<a href="http://Wandsea.com/blog/" title="http://Wandsea.com/blog/">去看看我的Blog？</a> － 
<a href="http://wandsea.com/blog/never-forget" title="http://wandsea.com/blog/never-forget">民主歌声献中华 20年</a><br/> </small></p><h3  class="related_post_title">相关日志</h3><ul class="related_post"><li><a href="http://wandsea.com/blog/460.htm" title="关于C语言,推荐这么几本不错的书">关于C语言,推荐这么几本不错的书</a> (9)</li><li><a href="http://wandsea.com/blog/449.htm" title="最近做的无聊事-FrozenTurtle篇">最近做的无聊事-FrozenTurtle篇</a> (2)</li><li><a href="http://wandsea.com/blog/433.htm" title="Nothing Here 09.09.27">Nothing Here 09.09.27</a> (10)</li><li><a href="http://wandsea.com/blog/426.htm" title="烟台09.7.14-09.7.23">烟台09.7.14-09.7.23</a> (9)</li><li><a href="http://wandsea.com/blog/309.htm" title="OI与追MM的联系">OI与追MM的联系</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wandsea.com/blog/42.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
