算法导论附录C的一个问题

原文:http://www.nowamagic.net/algorithm/algorithm_MontyHallProblem.php

《算法导论》第二版的附录C.2概率有这么一道习题:

 一个监狱看守从三个罪犯中随机选择一个予以释放,其他两个将被处死。警卫知道哪个人是否会被释放,但是不允许给罪犯任何关于其状态的信息。让我们分别称罪犯为X,Y,Z。罪犯X私下问警卫Y或Z哪个会被处死,因为他已经知道他们中至少一个人会死,警卫不能透露任何关于他本人状态的信息。警卫告诉X,Y将被处死。X感到很高兴,因为他认为他或者Z将被释放,这意味着他被释放的概率是1/2。他正确吗?或者他的机会仍是1/3?请解释。

由于书出这道题的一节讲到了概率、条件概率和贝叶斯定理。所以我当时是这么解题的:

记事件A为:X被释放;事件B为:Y被处死。

在假定X被释放的情况下,Y被处死的条件概率是P(B|A)=1。

那么根据贝叶斯定理,在已知Y被处死的前提下,X被释放的条件概率就是

P(A|B) = P(A) * P(B|A) / P(B) = (1/3) * 1 / (2/3) = 1/2。         (1)式

直观的想,在知道了Y会死后,X与Z各有一半被释放的机会,答案似乎也应该是1/2的。 但如果换一个角度考虑:Y或者Z一定有一个会死,不管警卫告诉X是哪一个,都不会改变X会不会被释放的结果,因而X被释放的概率都是一样的,都是1/3。

当时感觉这道题有点纠结了,觉得1/3好像是对的,但1/2又是我用公式算出来的。后来由于找不到答案,我也就不了了之(网上找到的《算法导论》答案没有附录这部分的,有知道的朋友给个链接^_^)。今天碰巧在网上看到了一个讲它的帖子,才知道这道题还挺有来头的。这个问题叫蒙提霍尔问题,又叫三门问题,据说是个"悖论",还迷惑了很多人。不过原题改头换面了一下,换成了电视节目抽汽车中奖的背景。有兴趣的朋友可以看看。

按照网上的说法,问题的答案确实是1/3。我仔细想了想,觉得应该这么分析:

样本空间本身有三个基本事件:

E1:X被释放,Y死,  Z死;

E2:X死,  Y被释放,Z死;

E3:X死,  Y死,  Z被释放。

问题出在警卫身上,X问警卫的是哪一个会死,而无论是哪种基本事件,警卫总能告诉X一个会死的人。所以用概率算应该这么去算:

记事件A'为:X被释放;事件B'为:Y和Z中某人会死。求的是,在警卫告诉给X,YZ两者中某人会死的情况下,X会被释放的条件概率

P(A'|B')=P(A') * P(B'|A') / P(B') = 1/3 * 1 / 1 = 1/3.      (2)式

很多人(包括我)之所以得出(1)式的答案,是因为没分析清问题。如果题目改成:X问警卫,Y是被释放还是被处死,而警卫回答他Y会被处死,那么答案就是(1)式的1/2 了。(注意体会与问出YZ两者中会死的一个的区别)。

网上改头换面的三门问题答案的关键也在主持人身上,如果他都知道三扇门门后是什么,总是别有用心的选择背后是羊的一扇门打开给抽奖者看,那么抽奖者就该选择换门;如果主持人只是随意的打开一扇门,而门背后正好是羊,那么抽奖者可以不换。

思考这个问题得到的体会:

  • 数学是个解决现实问题的好工具;如果用语言表达或者逻辑思考解决不好一个问题、甚至引起喋喋不休的争论,不防用数学做工具解决。
  • 用数学解决问题的关键在于建立正确的模型。比如我一开始想当然的得出(1)式的答案,是因为没分析清问题的本质,没有建立正确的模型。  
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录(Table of Contents)   前言(Preface)   第一部分(Part I) 基础(Foundations)   第一章 计算中算法的角色(The Role of Algorithms in Computing)   第二章 开始(Getting Started)   第三章 函数的增长率(Growth of Functions)   第四章 递归(Recurrences)   第五章 概率分析与随机化算法(Probabilistic Analysis and Randomized Algorithms)   第二部分(Part II) 排序与顺序统计(Sorting and Order Statistics)   第六章 堆排序(Heapsort)   第七章 快速排序(Quicksort)   第八章 线性时间中的排序(Sorting in Linear Time)   第九章 中值与顺序统计(Medians and Order Statistics)   第三部分(Part III) 数据结构(Data Structures)   第十章 基本的数据结构(Elementary Data Structures)   第十一章 散列表(Hash Tables)   第十二章 二叉查找树(Binary Search Trees)   第十三章 红-黑树(Red-Black Trees)   第十四章 扩充的数据结构(Augmenting Data Structures)   第四部分(Part IV) 高级的设计与分析技术(Advanced Design and Analysis Techniques)   第十五章 动态规划(Dynamic Programming)   第十六章 贪婪算法(Greedy Algorithms)   第十七章 分摊分析(Amortized Analysis)   第五部分(Part V) 高级的数据结构(Advanced Data Structures)   第十八章 B-树(B-Trees)   第十九章 二项式堆(Binomial Heaps)   第二十章 斐波纳契堆(Fibonacci Heaps)   第二十一章 不相交集的数据结构(Data Structures for Disjoint Sets)   第六部分(Part VI) 图算法(Graph Algorithms)   第二十二章 基本的图算法(Elementary Graph Algorithms)   第二十三章 最小生成树(Minimum Spanning Trees)   第二十四章 单源最短路径(Single-Source Shortest Paths)   第二十五章 全对的最短路径(All-Pairs Shortest Paths)   第二十六章 最大流(Maximum Flow)   第七部分(Part VII) 精选的主题(Selected Topics)   第二十七章 排序网络(Sorting Networks)   第二十八章 矩阵运算(Matrix Operations)   第二十九章 线性规划(Linear Programming)   第三十章 多项式与快速傅里叶变换(Polynomials and the FFT)   第三十一章 数论算法(Number-Theoretic Algorithms)   第三十二章 字符串匹配(String Matching)   第三十三章 计算几何学(Computational Geometry)   第三十四章 NP-完备性(NP-Completeness)   第三十五章 近似算法(Approximation Algorithms)   第八部分(Part VIII) 附录:数学背景(Mathematical Background)   附录A 求和(Summations)   附录B 集合,等等。(Sets, Etc.)   附录C 计数与概率(Counting and Probability)   参考文献(Bibliography)   索引(Index)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值