研究一个难题1958年的夏天,Michael Rabin 重新回到了IBM在马萨诸塞州哈得孙的Lamb Estate智囊团。John McCarthy正在努力的解决FORTRAN语言里的表处理问题,他交给了Rabin一个难题。下面就是Rabin的回忆。
复杂的乐趣Rabin 想出来了一个被称作“单向”算法的解决方案。单向算法可以转成成计算过程。从一个方向,你可以很容易的计算,但反过来却很难。我们很熟悉的算法跟这个都不 同。例如,使一个数变成三倍大就是一个双向的算法,因为你可以很简单的从y得到3倍的y。同样,你也很容易的从z得到三分之一的z。Rabin 使用的单向算法是由数学家 John von Neumann 开发出来的: 假设你有一个100位的数,X,取它的平方值。这很容易算。如果你有一个200位的数。从这200位中取出中间的100位。现在,如果你知道X,你可以算出Y。但如果你知道Y,让你算出X,这要花费你大量的时间。现在你明白其中的奥秘了吧? 我们可以给守卫一些Y值,而每个间谍都记住一个X值。 |