择优算法

问题:

        假设上天安排了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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值