关于一道“智力题”的探讨(续)
【原讨论】http://blog.csdn.net/quanben/article/details/6990366
【题目出处】http://topic.csdn.net/u/20111114/00/7d943d10-9e4f-43c7-95dd-3bc5c18850e7.html
【题目原文】
小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日。 但张老师告诉他们他的生日是下列10组中的某一天:
3月,4日
3月,5日
3月,8日
6月,4日
6月,7日
9月,1日
9月,5日
12月,1日
12月,2日
12月,8日
张老师把月份告诉了小明,把日子告诉了小强,张老师问他们知道他的生日是那一天吗?
小明说:如果我不知道的话,小强肯定也不知道。
小强说:本来我也不知道,但是现在我知道了。
小明说:哦,那我也知道了。
请根据以上对话推断出张老师生日是哪一天?
【已有答案】论坛楼主在18楼提供的一个答案是基本说得过去的。很简洁,大致就是设计这题的人构造这些数字的意图体现。如下:
通过小明的第一句话,可以得知,仅知道日期是没有用的。这样就排除了6月和12月的可能。
通过小强的第二句话,确定了日期是1、4、8日中的一天。
通过第三句话,确定了是9月1日。
【上回讨论综述】
上次的讨论初步将数学化后的这类问题可能可以变成博弈论分支的问题,中间提出一个难以为继的基于某种表述图式的模型框架(情况过于复杂,定义过于含糊)。最后又以一个比较简化的模型收尾,并初现这个问题作为一个通信问题的面貌。这里将继续基于这个模型讨论,所以将这个模型的运行规则再陈述一下:
当张老师把题目出给小强以后,以回合方式征询两者的声明,每一轮征询,小明和小强必须同时给出他们的陈述,可以用瞬时投票器或者写在纸上交给张老师。这里规定陈述只能是“知道”或“不知道”,这个陈述是公开的。但如果说“知道”,必须同时将他的结论写在纸上,不公开由张老师保管,用于最后核对。
【继续讨论】
对这个最终的简化模型讨论认为4个日期以给定方式必然可以解决,并设想如果允许一些额外的信息,可能就可以确保所有的求解。但当时的倾向性意见是由小明主动发送。
那么我们这里就来做一个具体的尝试,看看究竟有没有可能及如何实现。首先先重复一下上次的能让两人呢决定4个日期的步骤。括号里前一项是小明对小强的猜测或反映,后一项是小强对小明的。如果是A表示此人宣告已经得出答案,F表示先前步骤已经得到答案,此人已经结束。
实际日期 | 第一步 | 第二步 | 第三步 | 第四步 | 第五步 |
3月 4日 | (4/5/8, 3/6) | (4/5/8, 3/6) | (4/5/8, A) | (A, F) | |
3月 5日 | (4/5/8, 3/9) | (4/5/8, 3/9) | (4/5/8, 3/9) | (5/8,3/9) | 状态不变,后同 |
3月 8日 | (4/5/8, 3/12) | (4/5/8, 3/12) | (4/5/8, 3/12) | (5/8,3/12) | 状态不变,后同 |
6月 4日 | (4/7, 3/6) | (A, 3/6) | (F, A) | ||
6月 7日 | (4/7, A) | (A, F) | |||
9月 1日 | (1/5, 9/12) | 状态不变,后同 | |||
9月 5日 | (1/5, 3/9) | 状态不变,后同 | |||
12月 1日 | (1/2/8, 9/12) | (1/2/8, 9/12) | (1/8, 9/12) | 状态不变,后同 | |
12月 2日 | (1/2/8, A) | (A, F) | |||
12月 8日 | (1/2/8, 3/12) | (1/2/8, 3/12) | (1/8, 3/12) | 状态不变,后同 |
这样结果不令人满意。但如果需要改善,应该要引入额外的交互信息。首先要讨论有没有必要引入新的符号(陈述)。当然,不引入新的符号,就必须利用这里的延时特性,例如,当一个人明明已经知道答案,他可根据他的答案故意延长一个周期提交,以区分对对方来说可能看上去相同的状况,这样确保对方(有时可能是双方)能得到结果。这实际也是一个通信的协议(当然这个协议可以是某种程度上“天然的”,于是就不需要预先的交换),建立在两人的一个协作关系基础上。但可惜至少在这个例子中,这应该是不可能的。因为双方都无从知道结果,而要知道结果都依赖于对方发出的信号,而发出信号的前提是必须要真知道,否则就违反了游戏规则。
考虑允许一个额外信号的发生,其发送方式和“知道”消息一样,设计其代号为H(意思是Hint),只是它不必然代表任何意义(至少在设计的时候)。这样经过一番尝试,发现以下这个组合有点意思。
这个互动模式的规则的关键是第一步,小明如果遇到9月或12月,就发送一个H;小强如果遇到1日或8日,也发一个H。这样,容易演绎出如下的一个过程:
实际日期 | 第一步 | 第二步 | 第三步 | 第四步 |
3月 4日 | (4/5/8, 3/6) | (4/5/6, 3/6) | (4/5/6, A) | (A, F) |
3月 5日 | (4/5/8, 3/9) | (4/5/8, A) | (A, F) | |
3月 8日 | (4/5/8, 3/12H) | (A, A) | ||
6月 4日 | (4/7, 3/6) | (A, 3/6) | (F, A) | |
6月 7日 | (4/7, A) | (A, F) | ||
9月 1日 | (1/5H, 9/12H) | (A, 9/12) | (F, A) | |
9月 5日 | (1/5H, 3/9) | (A, A) | ||
12月 1日 | (1/2/8H, 9/12H) | (1/2/8, 9/12) | (A, 9/12) | (F, A) |
12月 2日 | (1/2/8H, A) | (A, F) | ||
12月 8日 | (1/2/8H, 3/12H) | (1/2/8, A) | (A, F) |
显然这个是行得通的。但遗憾的是,这种添加H的规则(方式)不是唯一的。这就更加意味着这是需要事先协商的过程。而且这样的一个方式本质上说是将10个日期的各种情形在第一步尽可能地区分开来。
讨论到目前为止,感觉这个问题其实并未进入博弈论的范畴,因为博弈论是考虑双方在合作和不合作情况下的各种情况。而这里的讨论主要是针对如何发现一个对两者找出这个结论最有利的通信方式,而这种通信方式,最好是固有的,而不是需要约定的。