问题:
假设上天安排了20位适合你的女孩。这些女孩都愿意作为你的伴侣,但你只能选择他们其中一个。
条件如下:
1、这20位女孩不是同时出现,而是按照时间顺序,每出现一个你都要决定留下还是拒绝。
2、如果留下她,她就会成为你的终身伴侣,你将没有权利选择后面女孩;如果拒绝,你还可以选择后面女孩,但对前面已经拒绝的女孩就没有机会。
3、假设完全随机安排各个时间段出现的女孩,即时间先后和质量完全没有关系。
那么,你应该在什么时候决定接受一位女孩,并使得被接受的那位女孩属于最好女孩的可能性最大呢?
算法分析:
方法一:后出现的10位女孩当中,第一次碰到比前10个都可爱的女孩子,立马接受。
这样的策略中,你得到最好的女孩子的概率是:(10/20)*(10/19)=0.263。这个概率已经不算太小。
1、这样的规则下,确保得到最好必然要求最好的在后10名出现 ——其概率是:10/20;
2、同时,还要求第二好的出现在前10名,其概率为:10/19——为什么?因为除了最好的,剩下人数 19个——这样就确保了你会得到最好的女孩子。
但是,得到最好的概率真的是0.263吗?
不,因为这只是第二好的女孩刚好在前10个出现的情况;实际上,即使第二好女孩子没有出现在先前的10个,但只要在最好的出现之前次好的出现在前10个,也可确保 ——也就是说,获得最好的概率实际上是超过0.263的,应是0.3594。
更好方法?或者,放弃10个是否最优?如不,应放弃几个?
方法二:
事实上,既然随机出现,那么,第k个刚好是最好的概率是1/20,而刚好把这个最好的女孩子选择到的概率是多少?
对此的考虑:
1、既然给定第k个最好,决定放弃前面n-1个,从第n个开始比较,那么——必须要求k之前中最好的那个出现前 n-1个,这样才能确保k被选中,其概率就是:(n-1)/(k-1)。
2、第k个女孩子刚好是最好的女孩子且又一定被选中的概率就是:(1 /20)*[(n-1)/(k-1)]。
3、这里,k的取值 [n,20] 中整数。所以,放弃n-1个而且会得到最优的概率:
(1/20)[(n-1)/(n-1)]+ (1/20)[(n-1)/(n)]+ (1/20)[(n-1)/(n+1)]+…+(1/20)[(n-1)/(20-1)]
当n=8时,该概率有最大值0.3842。也就是说,如果我们放弃前7个女孩子,先看一看,心里有个谱,然后只要看到比前7个女孩子中最好的女孩还要好的女孩子,那么我们就立即选择接受。而这个被接受的女孩子刚好属于最好女孩的概率是0.3842。