艾达否被激得起身坐直,正言道:“你知道什么是NP完全问题吗?”</p>
“知道啊。”卢赫把水瓶拧好,捏在手里心不在焉地晃着,“如果一个问题可以在多项式时间内猜出它的一个解,那它就是NP问题。如果一个NP问题可以被其它所有NP问题约化到,那么它就是一个NP完全问题。”</p>
艾达否听后,连忙竖起大拇指,“牛啤啊,你还知道多项式时间和约化?”</p>
“切。”卢赫得意地扬起下巴,“多大点事儿,当谁没编过程似的。不就是时间复杂度里的n出现在底数位置吗?非得给人重起个名叫多项式时间,故弄玄虚。”</p>
“至于约化,不就是解决不了一个问题,就绕过它,去研究一个更复杂的问题,对其进行降维打击吗?举个例子,你脑子不好使死活解不出一元一次方程,灵机一动想出了个点子:</p>
既然我解不出一元一次的,那我干脆去研究二元一次的。一旦我把二元一次的给解出来,那一元一次的就该像喝水一样简单了。”</p>
“至于你说得什么NP完全问题,那不就是以多项式时间作为上限,无限去做约化。我解不出一元一次的,我就去解更复杂的二元一次;解不出二元一次,就去解更复杂的三元一次。</p>
这样无限套娃下去,约化到一个无限复杂的问题,你拍着胸脯说:嘿,只要把这道题解出来,世界上所有问题就都难不倒我了!”</p>
卢赫说完,右手搭在艾达否肩膀上,左手指着天空:“老艾啊,哥送你一句话:仰望星空,脚踏实地。左脚蹬右脚永远都上不了天。”</p>
艾达否听后不屑地笑了笑,“你可去拉倒吧,你个思想落伍的保守分子。DNA计算机是怎么工作的你知道吗?”</p>
“怎么工作的啊?”卢赫来了兴致。</p>
艾达否一脸认真地娓娓道来:</p>
“你知道哈密顿问题吗?图论里面的最著名难题。不知道也没关系,给你简单点描述一下:</p>
假如你是一个时间管理大师,同时交往着5的女朋友,这些女朋友分布在5个不同的城市。有一天,你被老板派到另一个城市出差。好巧不巧,在那个城市你一个女朋友都没有,而你非常想念她们,想借着公费出差的机会,把这5个女朋友都见一遍。</p>
由于经费有限,你又很抠门不想多掏机票钱,所以每个城市只能去一次。同时这些城市之间又不全部都有双向直飞航线,你该怎么做呢?</p>
你可以想想,但我告诉你不论你怎么想都没用。因为这类问题的解法只有一个,那就是试!和我们暴力破解密码一样,一个一个试!</p>
进一步的,如果你不只五个女朋友,而是有50个、500个、5万个、无穷个,你该怎么办?”</p>
卢赫对着艾达否逐渐由认真转为嬉笑的脸,思索片刻,答道:“我觉得这个问题我不需要考虑。5个女朋友大眼一瞅在纸上画画也就出来了,如果再多,我肯定会先死在床上。”</p>
“你个死变态。”艾达否一脸嫌弃道:</p>
“很难对吧?这其实是一个时间复杂度为n!的问题,也就是说,如果你有n个女朋友,就要尝试n的阶乘次。如果你女朋友多达万个,就算是拥有4万个核心天河三号,也要算到你年过花甲。</p>
可这个问题对于DNA计算机来说,却是小菜一叠。它是这么算的:</p>
假如你现在刚见完1号女朋友,准备奔赴到2号的怀抱。那么你离开1号女朋友的行为,就被编码为ACAC;奔赴2号女朋友的行为,被编码为GTGT。把这两串编码合起来,ACACGTGT就代表你从1号到2号的路径。</p><div id='gc1' class='gcontent1'><script type='text/javascript'>try{ggauto();} catch(ex){}</script>