程序员的脑力瑜伽操03-约翰麦卡锡的间谍问题

上篇:程序员的脑力瑜伽操02-谁是凶手

公布答案啦:上篇的问题比较简单,用的思想是我们常见的“二分查找”思想。询问人通过二分思路可以很快找到凶手。

试着做下面思考:

1.询问人找到中间的那个人,也就是左数或右数第7人,如果该人是凶手,根据题目,

他会说:我是凶手,ok,询问结束。

如果他说:凶手在我左边或者右边,进行第二步。

2.在左边或右边(取决于中间人的回答)剩余的7个人中找到中间的那个人,重复第一步的问话。如果是,结束,如果第三个人回答在左或者在右,继续相同的二分问话。这样最多3次询问就可以确定凶手。

我画了个简单的说明图:


数字1、2、3代表可能询问的人,根据被询问人回答情况是左或右来决定。通过图示很容易看出来。二分查找充分利用了“指数爆炸”特性,极大的简化了问题的复杂度。

----------------------------------------------------------------------------------------------------------------

03弹:约翰麦卡锡的间谍问题

我们知道大师约翰·麦卡锡是人工智能之父,他在人工智能领域的贡献无出其右。而著名的基于λ演算的函数式编程语言lisp就由他创造。

今天我们说的问题是他在计算机领域研究时提出的一个著名问题:间谍问题。

这个问题是他给拉宾(图灵奖得主,在非确定性自动机方面有杰出贡献)出的一道难题,题目是这样的:

    两个国家处于战争状态,分别向对方国家派送间谍。间谍完成任务后要返回自己的国家,但是当他们穿越边境的时候,会有被己方守卫枪击的危险。

    所以需要一套口令机制,假设间谍的素质都很高,能保守秘密。但是边境的守卫经常去酒吧喝酒聊天,因此你告诉他们什么,就等于告诉了敌方。

    问题是如何设计一套方案,既能让己方的间谍安全返回,又避免敌方利用从守卫那里得到的信息把他们的间谍混进来。

PS:程序员的脑力瑜伽操系列,基本都不属于脑筋急转弯的问题,所以大家不要带着脑筋急转弯的思想去思考哦。

讨论第第二个问题回复,加上Tag02,如   Tag02:我的评论

讨论第三个问题时候加上Tag03,如  Tag03:我的评论

热烈欢迎广大猿和媛同胞展开思路,发表看法~


转载于:https://my.oschina.net/game007/blog/118162

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值