酒吧问题

来自计算思维百科
跳转至: 导航搜索
酒吧问题.jpg

有一群人,比如总共有100人,每个周末均要决定是去酒吧还是待在家里。酒吧的容量是有限的,比如空间是有限的或者座位是有限的,如果人去的多了,去酒吧的人会感到不舒服,此时,他们待在家里比去酒吧更舒服。我们假定酒吧容量是60人,或者说座位是60个,如果某人预测去酒吧的人数超过60人,他的决定是不去,反之则去。这100个人如何做出去还是不去的决策呢?

解决方案

这是一个典型的动态博弈问题,由美国经济学家阿瑟提出。如果许多人预测去酒吧的人数多于60,而决定不去,那么,酒吧的人数将很少,这时预测就错了。如果一大部分人预测去酒吧的人数少于60,因而去了酒吧,则去的人也很多,多过60,此时他们的预测也错了。因而一个做出正确预测的人应该能知道其他人如何作出预测的。但是在这个问题中每个人的预测信息来源是一样的,即都是过去的历史,而每个人都不知道别人如何作出预测,因此,所谓的正确预测是不存在的。每个人只能根据以往历史“归纳地”作出预测,而无其它办法。   

因此,对于酒吧的参与者来说,问题是他如何才能归纳成出合理的行动策略。如前几周去酒吧的人数如下:44,76,23,77,45,66,78,22.不同的行动者会做出不同的预测。如预测下次的人数会是前4周的平均数(53),与前面隔一周的相同(78)了,通过大量模拟实验,阿瑟得出一个有意思的结果,不同的行动者是根据自己的归纳来行动的,并且去酒吧的人数没有固定的规律,然而,经过一段时间以后,去酒吧的平均人数很快达到60,尽管每个人不会固定地属于去或不去酒吧的行列,但这个系统的比例是不变的。预测者自组织的形成了一个稳定的系统。

运用的计算思维

酒吧问题体现的是一个混沌现象,即我们无法肯定的预测去酒吧的人数,但通过实验我们发现个人剧历史经验来预测从大群体上看是可以达到稳定的比例状态的。在计算机科学领域里,像这样的案例也不少,对于在程序编译中出现的各种bug我们都不可预知,但我们可以确定bug大致出现的范围,可以根据以往的历史经验来获得一个大致的预测范围,从而更好地进行测试。这恰恰体现了计算思维中学习的重要性,在现象中发现问题的规律,并应用到相应的问题实践中。

参考文献

[1] 《思维训练600题》