05-“人工智能之父”如何终结战争?
你好,我是悦创。
在上一讲的结尾,我说到了人工智能领域大名鼎鼎的图灵和图灵机。虽然图灵提出了图灵机的设想,但其实他并没有真的造出过图灵机。不过,图灵造了另一台很厉害的机器,而且挽救了无数人的生命。那台机器是用来破译密码的。

你可能觉得,“破解密码”这种事听起来就像是侦探小说里的情节,能和编程有什么关系呢?其实,关系大着呢。听我说完图灵的故事,你就明白了。
故事要从1939年说起。那一年,纳粹德国入侵了邻国波兰。第二次世界大战爆发了!弱小的波兰根本没办法抵抗强大的德国,很快就沦陷了。
英国人开始担心起来:德国这灭了波兰,那接下来还会往哪里打呢,战火会不会烧到自己身上啊?
于是,整个国家又是动员军队,又是赶快制造武器,还有人在报纸上大骂德国,上上下下一片忙乱。
这时候,在伦敦乡下的一个庄园里,悄悄地住进来一群数学家。他们难道是来度假吗?当然不是,他们接受了政府的秘密任务,在这里破译德军的密码。外人不知道,甚至这些数学家也不知道,他们将会创造奇迹,改变历史的走向。图灵就是这一批数学家当中的佼佼者。
诶,打仗不是要靠将军和士兵吗?怎么会轮到图灵和他的数学家同事们来改变历史呢?

因为打仗可不只是将军和士兵们打打杀杀,还有好多其他的事情。比如,军队和军队之间,需要联络吧,前线的信息,要往后方传递吧?古代打仗的时候,都是让人骑着马,八百里加急传送军令。
到了二战时期呢,当时已经有了无线电,可以用无线电传递军令。那速度可比骑马不知道快了多少倍。不过,无线电虽然很快,却有一个致命的弱点。它就像是一个大喇叭,发出的信号朝着所有方向传播。不光自己的军队能接到信息,敌军也可以。
那怎么办呢?就需要进行“加密”。简单来说,就是靠密码,用一套特殊的规则改造语言,别人截获了信息,看到的都是乱七八糟的字母。而自己人知道破解规则,就可以看懂。
其实,在有无线电之前,人们已经开始给信息加密了——虽然骑马传递信息并不会出现“大喇叭”那样的效果,但传递信息的人有可能会被敌人抓住啊,对吧。所以,早在2000多年前,古罗马的恺撒大帝就使用了加密法来给军队下命令。
恺撒的做法很简单,他把单词里头的每个字母,都改写成在它后边第三位的字母。比如:把A写成D,把B写成E。到了X呢,就顺延下去写成A,Y和Z就写成B和C。这样,每个字母都被新的密码字母替代了。

小狗的英文是D-O-G,dog,这个词用恺撒密码来写,就是grj。光看到这三个字母,谁都不会把它跟dog联系在一起。
当然了,你也可以不顺延三位,而是顺延1位、2位,或者10位、20位,都行。
在古代,本来认识字的人就不多,看到恺撒的密码,那更觉得是天书了,所以,在当时,这样的密码是非常安全的。
可如果掌握了这种规律,那破解恺撒密码就不是什么难题了。你就算不知道它改写的规则,大不了就多试试呗,花不了半小时就肯定能破解。所以,再往后,恺撒密码就不安全了。
后来人们就又想到了更高级的主意,不是简单地移动顺序,而是随便挑一个字母,替代原来的字母。比如,用X来代表A,C代表B,W代表C,等等。这样一来,加密方式就多了——如果你把这个数字写出来,它有27位那么多,念都没法念。实际上,这样加密的可能性比宇宙里所有星星的数量还多1000倍。
诶,有那么多可能性,这种密码应该是非常安全了吧。然而,道高一尺,魔高一丈啊,它还是有漏洞的。
你在写英文单词的时候,肯定已经发现了,有的字母很常用,有的字母却不常用。比如我现在正在给你写这一讲的计算机键盘吧,上面e、a、d、t这几个键都磨花了,而附近的z和q却还很新。很明显,前面那几个字母我经常会敲到,而z和q却很少用。
如果咱们截获了很多敌人加密的军令,就可以看看哪些字母出现得最频繁。比如说在一段密码里,T和Q出现得最频繁,那它们俩很可能实际上就是E和A了。把这两个字母带进去,就可以一步步尝试得到答案了!
你看,这个地方就体现了两个非常重要的编程思维原则,就是“抽象”和“问题转化”。虽然直接搞懂每个单词的意思很难,但是,我们可以把问题转化成“每个字母出现的频率”。这就把破解密码变成了一个数学问题,咱们只要让机器数一数,每个字母出现了几次,然后根据每个字母出现的频繁程度试几次,问题就能轻松解决了。
那么,就没有更好的加密方法了吗?德国人还是很聪明的。他们就想:如果每加密一个字母,就换一套新的密码表,然后再加密下一个字母。这样,字母原来的出现频率就被打破了,那岂不是就没办法靠统计频率破解了?
这个方法很厉害!但在古代的时候,这么干是不可能的。因为,每写一个字母就换一个密码表,那密码表得是一本超级厚的书,拿着不方便就算了,自己人解开密码也得花上好几个小时,可能密码还没破解完呢,仗就打完了,根本不实用。
但到了第二次世界大战的时候,情况就不一样了。那时候虽然还没有电脑,但人们已经会编程了呀,只要制造一台机器,然后告诉机器,每加密完一个字母,就换一套密码表,再加密下一个字母。这样一来,机器就能完成这件复杂的事情。而破译密码的时候呢,只要把这个过程倒过来就行了。
当时,德国人就真的造出了一种这样的机器,叫“恩尼格码机”。“恩尼格码”是德语,翻译过来就叫作“谜”,谜语的谜,所以,也有人把它翻译成谜机的。

这台机器的原理有些复杂,我就不给你细讲了。我打个比方,你就知道它有多厉害了。如果把它的所有加密方式一种一种列出来,写成一本书,每页纸上写一种。那么,光是这本书的页数,就会比银河系里的星星还多1亿倍,而且根本没办法用前面说的频率统计法破解。
在当时,图灵面对的就是这样可怕的加密方法。幸好,图灵既是一个非常聪明的天才,也是一个意志非常坚定的人。经过一次次尝试,他终于发现了德军的一个漏洞!
机器虽然是完美的,但是人性有弱点啊。图灵发现,在已经破译的密码里,德军会经常使用一些固定的话,比如德国人喜欢在每天早上6点钟发送一条天气预报,在这条电报的开头就肯定会包含德语的天气这个词,wetter。
于是,每天接到密码的时候,图灵就会先蒙一个答案:先假定,这段密码中的某一个词就是wetter。如果蒙对了,那么这6个字母就破译出来了。原来可能性比银河系里的星星还多1亿倍,现在缩减到了100万种。
但就算100万种,用人力也是破译不了的。因为德国一天就会换一套新的密码,如果花了一天以上的工夫才破译出来,那也是白搭——因为要改用新密码了嘛。
不过也别着急,机器出的题,还得机器来解。图灵跟同事们就做出了一种密码破译机叫“炸弹机”,比人力要快得多了。用这台机器破译,只需要花1个小时左右就能破译出来。

那破译了德军的密码有多大用呢?有人估计,图灵和他同事的工作让二战提前了两年多结束,他们拯救了成千上万的人。
二战结束后,为了守护国家安全,所有庄园里的人都保守着秘密。直到20多年后,人们才知道,图灵他们曾经改变了整个世界的历史走向。

这集,咱们通过问题抽象和转化的思维方式破解了密码,在下一集,我还要教你用这种思维方式帮计算机看到我们的世界。我们下集见!
更新日志
f1fff
-于