一个关于两个国家互派间谍的问题
2015-01-20 13:31
387 查看
本文转载自 外刊IT评论
译文链接:http://www.vaikan.com/in-search-of-a-tough-problem/
原文链接:In Search of a Tough Problem
研究一个难题
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值。
相关文章推荐
- 关于创建一个输入端和两个输出端遇到问题的解决
- 关于java多线程中同步的问题(两个线程访问同一个实例类的两个同步方法,会不会互相影响)
- [全程建模]与一个朋友讨论的关于书上的两个问题
- 关于一个按钮绑定两个事件的问题,click和submit
- 【同一个Server Weblogic两个Domain CookieName冲突导致session失效问题】【关于WebLogic的Session丢失的问题】
- 学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加
- 关于用两个栈实现一个队列的小问题
- 关于GBK中的英文字符占用一个字节还是两个字节的问题
- Android-关于一个界面同级中需要两个listView时,一个ListView被嵌套在ScrollView中,ListView的适配器adapter中的getView执行次数重复问题
- 一个我很长时间才解决的关于xp与2000共享的网络问题
- 一个关于在VB.NET中应用超级解霸的问题
- 一个我很长时间才解决的关于xp与2000共享的网络问题
- 关于RICHEDIT的两个问题
- 一个关于重定向的问题研究,应该具有实用性
- 一个关于打印预览的问题
- 关于数据库备份的一个问题??
- 请教一个关于WEBFORM 调用外部EXE程序的问题
- 有关一个 iframe 的问题,关于在 iframe 内的页面内登录成功后,如何由当前页直接转到另一个页面内?
- 关于SQL的存储过程一个悬而未决的老问题
- java 中关于package的一个问题