第四十二章 DNA计算机
书迷正在阅读:圣手神医、从不良人开始登基称帝、这个屋里、神话纪元,我进化成了恒星级巨兽、金主小心点:巨星娇妻不好惹、斗罗:极致之光、我在成龙历险记拯救世界、木叶:灭族之夜我召唤了犬夜叉、远处星河guntang,你是人间理想、东京武圣以德服人
半个月后, 3号楼503寝室的就寝率直降为零。 因为艾达否也终于开始夜不归宿了。 易天霖本就神出鬼没。自上次外场试验失败后,便一头扎进实验室里,试图将他的烫手大肠杆菌提升一个档次,进化为烈焰大肠杆菌。 卢赫自打下了定了决心后,经常在实验室抱着锌指平台睡到后半夜,把结果做完电泳之后,再回寝室睡一个不超过3个小时的回笼觉。 于是艾达否经常独享一个二十多平米的大单间,一人霸占三张椅子,半躺着对着三个屏幕敲敲打打。有时是在世界第一程序员交友平台gayhub上攒绿格子;有时是接下了几个私活,用和他同名的小软件,反编译几个小程序,挣点零花钱;而更多的时候,则是徜徉在游戏的海洋里。 每每看到卢赫披着月光进门,或者顶着白露出门,他都要嘲讽一句: “卷王!” 而如今,他却成为了503乃至全学院的卷中卷中卷中卷。 这天,卢赫又一次披星戴月地返回寝室,半路上看见隔壁计算机学院院楼的小广场里,半人多高的茂盛万年青上,飘着一个人头。 那人头缓缓地沿着绿化带,从南飘到北,又从北飘到南。如此反复几趟,然后越飘越远,直至只露出头顶上几缕被风掀起的头发。伴随着噗通一声,人头彻底消失在视线。 卢赫连忙上前查看,发现艾达否正跪拜在花坛中央的铜制的艾伦·麦席森·图灵的全身雕像前。 他悄声走到艾达否身后,把手从衣兜里抽出,轻抚对方的肩膀,“平身。” 艾达否被惊得一得瑟,转头发现是卢赫,便立刻起身照着卢赫的屁股揣了一脚,“瞅你那揍性,竟敢占我便宜。你脑袋里有哏丘还是咋地,大半夜的不睡觉,到处瞎转。” “你脑子才有毛病。”卢赫连连躲闪,“闲得没事拜那玩意儿干啥,知道那位神死得有多惨吗?不如去拜数学院的那尊祖冲之。” “祖冲之太远了,懒得走过去。”艾达否抬脚又踢了个空,“让你侮辱我偶像。” 两人嬉闹地绕着花坛追逐了两圈,随后一同瘫在长椅上喘气发呆。 “老艾,说正经的,你最近抽什么风,怎么突然就那么卷?”卢赫从背包中掏出一瓶矿泉水,咕咚灌了一口。 艾达否仰面望着天空上的半轮月,砸了砸嘴,“我遇见难事了。DNA计算机听说过没?” “什么玩意儿?”卢赫被水呛了一口。 “DNA计算机,这是我的研究方向。”艾达否的脸上闪过一丝得意,“我告诉这东西可牛了,理论上与量子计算机比肩,可以解决NP完全问题。” “噗。”卢赫听后嘲讽道,“民科。” 艾达否被激得起身坐直,正言道:“你知道什么是NP完全问题吗?” “知道啊。”卢赫把水瓶拧好,捏在手里心不在焉地晃着,“如果一个问题可以在多项式时间内猜出它的一个解,那它就是NP问题。如果一个NP问题可以被其它所有NP问题约化到,那么它就是一个NP完全问题。” 艾达否听后,连忙竖起大拇指,“牛啤啊,你还知道多项式时间和约化?” “切。”卢赫得意地扬起下巴,“多大点事儿,当谁没编过程似的。不就是时间复杂度里的n出现在底数位置吗?非得给人重起个名叫多项式时间,故弄玄虚。” “至于约化,不就是解决不了一个问题,就绕过它,去研究一个更复杂的问题,对其进行降维打击吗?举个例子,你脑子不好使死活解不出一元一次方程,灵机一动想出了个点子: 既然我解不出一元一次的,那我干脆去研究二元一次的。一旦我把二元一次的给解出来,那一元一次的就该像喝水一样简单了。” “至于你说得什么NP完全问题,那不就是以多项式时间作为上限,无限去做约化。我解不出一元一次的,我就去解更复杂的二元一次;解不出二元一次,就去解更复杂的三元一次。 这样无限套娃下去,约化到一个无限复杂的问题,你拍着胸脯说:嘿,只要把这道题解出来,世界上所有问题就都难不倒我了!” 卢赫说完,右手搭在艾达否肩膀上,左手指着天空:“老艾啊,哥送你一句话:仰望星空,脚踏实地。左脚蹬右脚永远都上不了天。” 艾达否听后不屑地笑了笑,“你可去拉倒吧,你个思想落伍的保守分子。DNA计算机是怎么工作的你知道吗?” “怎么工作的啊?”卢赫来了兴致。 艾达否一脸认真地娓娓道来: “你知道哈密顿问题吗?图论里面的最著名难题。不知道也没关系,给你简单点描述一下: 假如你是一个时间管理大师,同时交往着5的女朋友,这些女朋友分布在5个不同的城市。有一天,你被老板派到另一个城市出差。好巧不巧,在那个城市你一个女朋友都没有,而你非常想念她们,想借着公费出差的机会,把这5个女朋友都见一遍。 由于经费有限,你又很抠门不想多掏机票钱,所以每个城市只能去一次。同时这些城市之间又不全部都有双向直飞航线,你该怎么做呢? 你可以想想,但我告诉你不论你怎么想都没用。因为这类问题的解法只有一个,那就是试!和我们暴力破解密码一样,一个一个试! 进一步的,如果你不只五个女朋友,而是有50个、500个、5万个、无穷个,你该怎么办?” 卢赫对着艾达否逐渐由认真转为嬉笑的脸,思索片刻,答道:“我觉得这个问题我不需要考虑。5个女朋友大眼一瞅在纸上画画也就出来了,如果再多,我肯定会先死在床上。” “你个死变态。”艾达否一脸嫌弃道: “很难对吧?这其实是一个时间复杂度为n!的问题,也就是说,如果你有n个女朋友,就要尝试n的阶乘次。如果你女朋友多达万个,就算是拥有4万个核心天河三号,也要算到你年过花甲。 可这个问题对于DNA计算机来说,却是小菜一叠。它是这么算的: 假如你现在刚见完1号女朋友,准备奔赴到2号的怀抱。那么你离开1号女朋友的行为,就被编码为ACAC;奔赴2号女朋友的行为,被编码为GTGT。把这两串编码合起来,ACACGTGT就代表你从1号到2号的路径。 接下来,你见完了2号女朋友,又匆匆赶往3号。这个过程可以再用编码表示为TCTCAGAG。 也就是说,8个碱基就可以用来表示你和其中一个女朋友从见面到拜拜的全过程。这个时候你肯定就要问了,我要你规划一条连续的路径,可ACACGTGT、TCTCAGAG是分离的两条链,这还怎么能玩儿的下去? 很简单嘛,碱基对是可以互补的。你再找一条CACAAGAG,不就可以跟胶水一样,把那两条毫不相关的链给粘起来了吗? 接下来的事情就更简单了。你有几个女朋友,就用几串8位编码来表示和她们的见面和拜拜的过程。然后你把你的女朋友和胶水都合成一下,扩增个几万亿条,放在一起,养蛊。 根据碱基配对原则,胶水分分钟就能发挥作用,把各种女朋友给粘起来。这个时候,你会得到几万亿条路径。这就是路径遍历的所有结果。 那你又要问,我怎么把最省钱的那一条路径给筛选出来呢? 这也很简单,你的起点和终点是固定的。只要拿起点和终点作引物,扩增一下,起终点正确的路才能被扩增,不正确的会被逐渐稀释掉。至于有些路径上,你少见了几个女朋友,或者重复多见了几个女朋友,这些链的长度肯定是不对的。 最终,你把它们电泳一下,链长的和链短的分开,挑出长度刚好的链,测个序,答案不就出来了吗?” 艾达否说完,抢过卢赫手里的水,猛灌了几口,“要知道,1克的DNA可以存储215PB的数据,相当于2亿部小电影。这还不算完,由于碱基配对的速度不慢,这215PB可以直接当作内存用,有几条链就相当于有几个线程并行运行。 有个神仙已经设计出了多项式时间的、基于DNA算法的NP完全算法,只不过减少时间复杂度的时候,牺牲掉了空间复杂度。这个算法实现起来,需要有指数数量的编码方式,和巨额的存储空间。 可这些对DNA来说都是洒洒水,刚才都说了,DNA的存储效率极高。因此,DNA解决NP完全问题,指日可待!” 卢赫听后连连拱手称赞道,“厉害,厉害。不过我有个问题,你刚才说的那个哈密顿路径算法,顶多就是个算法,它有逻辑判断能力吗?它算个哪门子计算机呦?”
艾达否拧紧瓶盖,把水瓶仍会卢赫怀里,“你还真是瞎狗端星星——死活看不出个样儿来。我就是给你举个简单的例子,至于逻辑判断,不就是几个通用逻辑门的组合吗? 与、或、非、与非、或非等通用逻辑门都已经被设计出来了。实际上,只要与非或者或非,所有的逻辑门就都可以实现。” “呵呵。”卢赫细品了一下艾达否的话,品出了他正极力掩饰的东西,幽幽开口道:“门都已经实现了,可为什么这种神仙东西却迟迟不面世?” 艾达否的气势瞬间萎了下来,“因为还有点问题。你知道链置换过程吧,两条互补链相遇就会立刻粘起来,不管两条链一不一样长,先粘起来再说。就好比你找女朋友,一见钟情一般都是很难的,肯定是遇到合适的,就先谈起来再说。 可是如果日后遇到更合适了的呢?我想以你的人品,肯定会毫不犹疑地把原来那位甩掉,然后和更合适的谈。DNA也一样,如果基链遇到了更搭配的互补链,就会通过链置换原理把当前的互补链踢掉,换成更匹配的一条。 比如与门,它的实现过程就是先给一条基链上贴上一条互补链,然后再给它两条更搭配的置换链,把原来那条互补链给挤出去。这样,两条置换链为输入真,原互补链为输出真,就形成了一个基本的计算单元:与门。” “你大爷的竟敢质疑我的人品,你不了解我,我可是很专一的一个人。”卢赫拿起怀里的水瓶,猛地砸向艾达否,“还有,你这是什么破烂与门,那输入链和输入链都是基链的一部分互补链,二者这么相似,你这计算单元计算了个寂寞啊?1+1等于1?” 艾达否揉了揉被砸疼了的肩膀,长叹了一口气,“就是啊,输入和输出都差不多,计算了个寂寞。所以我现在正在想法子,解决这个问题。” 他说完仰头长啸:“苍天啊,各位神啊,保佑我吧,赐给我一个开天辟地的灵感,拯救我于水火之中吧。下辈子我肯定给你们当牛做马。” 卢赫在一旁暗自思忖,然后发话道,“老艾,你可能要当我的马了。” 艾达否眼前一亮:“什么意思?” “没想到啊老艾,当我的马你这么激动。”卢赫笑着说:“我有一个大胆的想法。你知道发夹环吗?就是DNA上的富含GC的回文序列,转录成mRNA之后,形成的一个倒T形的长得像奶嘴一样的东西。 如果你在基链上设计两个回文序列,它们就有粘在一起的倾向,形成一个发夹环。发夹环底座上的互补链作为输入,它往底座上粘的时候会促使奶嘴两侧的回文序列越粘越紧,直至其上原本的互补链被挤下去,完成链置换。奶嘴上被挤下去的那条链,就是输出。 这样,虽然输出是固定的GC回文序列,但是输入可以是任意的,从而做到输入和输出毫不相关,你这问题不就解决了吗?” 艾达否听后立刻激动地蹦起,狠狠地拥抱了一下卢赫,然后小跑到图灵雕像前还愿: “范内瓦·布什,什爷;冯·诺依曼,冯叔;麦席森·图灵,麦伯伯;唐纳德·克努特,唐哥。”他围着雕像转了一圈后,跑回卢赫面前,鞠了一躬,“还有你,我亲爱的儿子,卢小弟。感谢你们赐予我灵感。” 卢赫一脚踹向艾达否:“你大爷的,我才是你爸爸。还说我人品不好,我看你才是个花心大萝卜,拜了这么多人。” 艾达否灵活地闪躲,“这你就不懂了,buff不嫌多。你这么些天早出晚归的,一定也遇上什么困难了吧?” 艾达否说完,走上前把卢赫拉起来,“走走走,拜拜去。老祖宗说得好,心诚则灵。” 卢赫起身,但并没有走向雕像,而是转身面朝生科楼,楼侧里德实验室几个大字被灯带围了起来,正发着惨白的光。 他并不相信艾达否的鬼话。但如果一定让他拜一个人的话,他只想真诚地问罗伯特·里德一句话: 我尊敬的里德先生,你发明的锌指技术,曾经创造了那么多的辉煌。可又为什么在几十年后的今天,如此黯然失色?