IT企业推理题两例

一:某著名企业的经典推理题!
一位教授把16张扑克牌放在桌上,如下;  
黑桃 :A7Q    
梅花: 3.4.7.9.J.Q    
红心: 2.3.5.Q.K    
方块: A.5         
教授从中选出一张,把这张牌的数告诉了他的学生"
把花色告诉了"
然后教授问""你知道是哪一张牌吗?           
"
我不能确定是哪张牌           
"
我知道你会这样说           
"
现在我知道了           
"
现在我也知道了
教授高兴的点点头.甲乙二人都是很有强的逻辑推理能力的人,并且都说了实话.        
根据以上信息,通过你的推理告诉我这张牌
分析过程:

首先所有牌是甲乙都知道的。甲乙每人说一句,就得到一定的信息。最后确定出牌的花色和点数。

甲说不知道是哪张牌,那这张牌肯定是所有牌里面有重复的(不重复就一张的甲就不会这么说了),因为甲只有点数这一信息,所以排除了2,4,9,J,K。于是剩3,5,7,A,Q。

然后乙说我知道你会这么说。我们知道乙指掌握花色这一信息。我们假设乙分别是四个中的每一个。黑桃有可能,因为黑桃中的每个点数都有重复,所以乙就知道单单靠点数是无法知道是哪张牌的。梅花不可能,因为梅花中有只有一个的点数,如果乙拿梅花,他就不能这么说了。以此类推,可得乙拿的花色只能是黑桃和方块。

接着甲说现在我知道了。甲这么就知道了呢?在有了前面的对话,现在结果是:方块: A,5。黑桃 :A、7、Q。同样的记住甲只知道点数,于是看点数,就只能是5,7,Q。

最后乙说我也知道了。同样回到花色,如果是花色黑桃,那么有可能是7也有可能是Q。乙就不会说我知道了。所以只剩下方块了。

于是最后得到结论只能是方块5。

二:“天堂与地狱的守卫”

你来到两道门口,一道是天堂之门,一道是地狱之门
门口都有一个守卫,只知道守卫一个只说假话,一个只说真话。
现在你只有一次提问机会,只向一个守卫问一个问题,这个守卫对你的问题,只给出或者不是的答案。(对于无法给出是非的问题,守卫会直接把你砍死。。。)
请问怎么问才能准确进入天堂之门?

分析过程:

首先要知道自己的目的是为了准确进入天堂之门。

你可能首先想到的是直接问“你守的是天堂之门吗?”。当然是没有这么简单的,不管守卫回答的是或者否,你都无法得到任何信息。因为你不知道他说的真话还是假话。

你想要得到的效果应该是怎样的呢?不管你问哪个守卫只要他说是,那么他身后那扇门就是天堂之门,只要他说否那就是地狱之门。因为题目中还提供者守卫信息那么应该会想到把守卫的信息和守门情况的信息结合起来。那你假设一种最好的情况,守天堂的是真话卫士

。你问“守天堂的是真话卫士吗?”。如果是真话卫士回答你,那么说是他守就是天堂说否就是地狱。如果是假话卫士回答你,他说是,那么就是骗你,守天堂的就是假话的,就是他自己。于是你就知道他守的是天堂了。

当然这样是不够的,你需要将问题抽象成数学的形式。

假设用0,1代表你描述问题的真假。那么通过建模就可以得到解法二。

我们将守卫守门的所有情况列成如下的一个矩阵:

守卫分两种情况,第一行代表天堂守卫是诚实的情况,第二行分为天堂守卫为说谎话的情况。

而每种情况你都有2个可能,要么问到真话守卫,要么问到假话守卫。因此问题的解空间是一个2*2的矩阵。

 

这个问题难在,不管你问你是说真话的吗?还是问你守卫的门是天堂的吗?,都无法得到满意信息。

如下图,如果你问你守卫的门是天堂的吗?,所有的情况如下图所示:

 

红色的勾表示如果你问这个守卫(勾连接的那个画圈的守卫)问题,他会说表示说

看到这个图你就明白为什么问不出答案了。因为无论是上下哪种情况,天堂的守卫既有可能说,也有可能说不是

 

 

解法1:通过解空间反求问题x

我们的目的是找出天堂之门。也就是说,需要设计一个问题,将解空间按照天堂和地狱来进行分离

也就是说,我们需要设计一个问题,将解空间分解为如下情况:

这样解空间按照天堂和地狱分开了。只要回答是,该守卫就是天堂守卫。反之就是地狱守卫。

如何寻找这样的问题呢?

 

容易知道,为得到天堂地狱相关的信息,我们问的问题一定是描述当前守卫守门状况的一个描述。(例如你问1+1=2吗,真话守卫说是,假话守卫说否,这样只能区分出守卫真假,但是无法区分天堂和地狱)

如果我们把这个状态当做函数的输入x,守卫对该问题的回答的解空间当做y,那么这个函数可以写作:

Y = f(X)

由于yx2*2的矩阵。那么可把上式写成:

那么f函数执行的是什么操作呢?

我们知道,x表示的是一个描述在四种守卫情况中的真值表,真值表是客观存在的,所以一定是为真的。真话守卫不会修改这个真值,而谎话守卫一定会给出相反结果。那么,这个f可以表示为:

由于f只做了反转操作,显然f操作是可逆的。

要让天堂守卫都说,地狱守卫都说,就是说y应该是:y1=y3=1, y2=y4=0

既然我们已经知道我们需要什么样的y了。因此,已知y反求x,如下:

这个x就是我们可以拿出来问守卫的问题。

还记得我们对矩阵的定义吗?

因此,把上面的x代入该矩阵定义,得到如下的守卫状态

守天堂的真话守卫;    守地狱的假话守卫;

守天堂的不是假话守卫;守地狱的不是真话守卫;

 

这实际上是一个状态的四个等价描述的。因此,这个状态就是满足输出y的问题x

因此,只要向任意一个守卫问上面的任意一个问题即可。只要回答是,该守卫就是天堂守卫。反之就是地狱守卫。

 

解法2:构造高阶逻辑表达式

假设说真话的守卫对问题的回答为f=T(x),假话的为f=F(x),那么有:

T(0) = 0, T(1) = 1;

F(0) = 1, F(1) = 0;

注意到:

T(F(0)) = 1; T(F(1))=0;

F(T(0)) = 1; F(T(1))=0;

这说明通过一个问题x经过FT的两次加工,最后的答案是一样的也即

T(F(x)) = F(T(x)) = !x

因此,我们可以构造如下问题:

另外那个守卫会告诉我你是天堂守卫吗?

得到的回答一定和你是天堂守卫相反。也就是说,他说,那他就是地狱守卫;他说不是,那他就是天堂守卫。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值