本人是极限挑战的粉丝,最近看了大电影《极限挑战之皇家宝藏》,对最后一关四杯酒问题有自己的见解.
最后一关,只剩王勃和孙红雷二人.他们面前有四杯酒,其中三杯毒酒,一杯无毒.
白衣人黑衣人其中一个一定说真话,另一个一定说假话,但不知道谁真谁假.
勃雷两人分别可以对白衣人黑衣人问一个问题(也就是总共可以问四个问题,王勃分别问白衣人,黑衣人一个问题,孙红雷分别问白衣人,黑衣人一个问题)
请问,如何才能分辨出哪杯酒无毒.
电影里的"大傻"孙红雷机灵了一回,第一个问题问白衣人,我是男人吗?得到了否定的答案.从而知道白衣人的回答永远假.然后就可以用剩下的三个问题决定其中三杯酒的属性.
这个场景一下使我想到了大学期间一个同学和我说的一个真假老人的问题.
有两条路,一条死路,一条生路.有两个老人,一个真老人,一个假老人.现在不知道哪条路是生路,也不知道哪个老人是真老人. 问怎么只问一个问题就确定哪条路是生路.
办法就是问其中一个老人,另一个人会说哪条路是生路. 然后选择回答的另一条路. 因为假如你问的是真老人,那么他会把假老人的话真实地告诉你,然后你得到的就是假老人的话. 如果你问的是假老人,他就会将真老人的话变假后再告诉你.所有不论怎样,获取的都是假答案,然后选另一条路即是生路.
就像程序里两个变量a,b,其中一个假一个真,两者取并后,结果一定是假.
参考上面的思路,用三个问题就可以搞定. 这样问:随便问白衣人或黑衣人,另一人会说这杯酒有毒还是无毒,得到的答案取反即可. 因为无论是白衣人还是黑衣人总有一人说真,一人说假. 所以将他们的答案综合起来后,就一定是假.
所有用这种方式后,就不需要问“我是男人”这样的问题了, 直接问酒的属性即可. 那么用三个问题即可确定三杯酒的属性,然后再用排除法确定另一杯.
能否再“极限挑战”一下,只用两个问题呢?
解决方案是用二分法.
第一个问题,同时问两杯酒是否有毒?
然后就可以同时确定两杯酒的属性
第二个问题,在没有毒的两杯中问一个即可.
最后,终极挑战,可否只用一个问题就100%获取答案... 这个估计得用到量子逻辑学了(本人臆想出来的一门未来学科).
最后的最后, 将数学和程序稍微用在其它领域就可以发挥出巨大的效能.