卢赫对着艾达否逐渐由认真转为嬉笑的脸,思索片刻,答道:“我觉得这个问题我不需要考虑。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不嫌多。你这么些天早出晚归的,一定也遇上什么困难了吧?”
艾达否说完,走上前把卢赫拉起来,“走走走,拜拜去。老祖宗说得好,心诚则灵。”
卢赫起身,但并没有走向雕像,而是转身面朝生科楼,楼侧里德实验室几个大字被灯带围了起来,正发着惨白的光。
他并不相信艾达否的鬼话。但如果一定让他拜一个人的话,他只想真诚地问罗伯特·里德一句话:
我尊敬的里德先生,你发明的锌指技术,曾经创造了那么多的辉煌。可又为什么在几十年后的今天,如此黯然失色?