有两个绝顶聪明,而且有无限赌资的人进行赌博,赌博规则如下:
1、每个人手里有一个硬币,每个人都能决定自己手里硬币是正面还是反面。
2、每局的结果由两人揭开各自手里的硬币的正反面组合情况决定:
如果两人的硬币都为正面,则甲给乙3元;如果都为反面,则甲给乙1元;
如果一正一反,则乙给甲2元。
问题是:有没有一个人有一种长期看来必赢的策略?
硬币正反面可以看作是完全随机的, 则
3x1/4 + 1x1/4 = 1 = 2x1/2
所以当局数趋向于无穷大的时候, 甲给乙的钱等于乙给甲的钱,
所以没有一种长期看来必赢的策略.
这是我的理解, 不知道对不对...
2010/5/21 浩 <zhangh...@163.com>:
--
Cheers,
Oliver Yang
Twitter: http://twitter.com/yangoliver
Blog: http://blog.csdn.net/yayong
--------------------------------------------------------------------
An OpenSolaris Developer
对甲来说:
甲正乙正:-3
甲正乙反:+2
甲反乙正:+2
甲反乙反:-1
甲出正的时候期望是-0.5,出反时+0.5
所以对甲来说正确的策略是一直出反。
对乙来说:
乙正甲正:+3
乙正甲反:-2
乙反甲正:-2
乙反甲反:+1
乙出正的时候期望是+0.5,出反时-0.5
所以对乙来说正确的策略是一直出正。
结果是甲反乙正。乙一次输2元
这个是博弈问题,出牌策略要根据对方的策略动态调整,而不能采用单一的静态策略。这个问题是个非线性的问题,其结果根据甲乙是所采用的策略来决定的,这个可以写一个计算机程序来模拟,在某些策略下,我断定结果会出现混沌状态。
On 5月21日, 下午12时41分, Wu Yin <wyw...@gmail.com> wrote:
> 给个参考文献出处:
> Convex Optimization - Boyd and Vandenberghe
> - 5.2 The Lagrange dual problem,
> -- 5.2.5 Mixed strategies for matrix games
>
> 有空多看看书,提高提高数学素养,比在这边拍脑袋瞎猜浪费时间强上百倍
>
> 2010/5/21 Wu Yin <wyw...@gmail.com>
>
>
>
>
>
> > 这东西叫matrix game,一个非常famous的问题。
> > 由于每个人都不知道对方的策略,所以绝对必胜的策略是不存在的。
> > 但是存在混合策略。也就是说每个人都以p_i的概率来选择策略i,最后能使得自己的期望获益最大。
>
> > 可以给你们讲讲。这个问题本质上是一个线性规划的原始对偶问题。
>
> > 以甲的观点来看,列一个矩阵A。A的第i行第j列为甲选i乙选j时的获益。设0为正1为反。
> > 比如这道题, A = [ [ -3, 2], [ 2, -1 ] ]
>
> > 现在我们先假定甲知道乙的策略。一个很明显的事实就是,这种情况下甲的最优获益不会比 不知道对方的策略
> > 要少。我先说最终结论,这种情况下,甲的获益不会有任何的增加,也就是说甲知不知道乙的策略都是无所谓的,或者换句话说,甲可以凭空推导出乙的最优策略,从而指-定自己的最优策略;对乙来说,情况也完全相同。并且二人制定出最优策略是相对应的。
>
> > 言归正传。不妨设甲知道的乙的策略为y,即乙以y[i]的概率来选择i策略。甲在这种情况下要制定一个策略x,使得自己的获益最大。对于任何一个策略i而言,甲-获益的期望为x[i]
> > * sigma( y[j] * A[i][j] )。我们要知道乙是很奸诈的,如果你有多个策略,那么乙的最优策略一定会选择
> > 甲多个策略中获益最少的那个策略,然后拼命的让你得到最少的那个获益。所以,当你选择策略x的时候,你的获益实际上是min( x[i] * sigma(
> > y[j] * A[i][j]) )。同时满足0 <= x[i] <= 1且 sigma(x[i]) =
> > 1。注意这里面,由于我们假定我们已知乙的策略y,所以这里面y是常数而不是变量,变量只有x。也就是说,对甲而言,我们要选择的,是以下问题的最优解:
> > min( x[i] * sigma( y[j] * A[i][j]) )
> > s.t.
> > 0 <= x[i] <= 1
> > sigma(x[i]) = 1
>
> > 将此约束最优化问题化为标准形式,可得
> > min t
> > s.t.
> > 0 <= x[i] <= 1
> > sigma(x[i]) = 1
> > x[i] * sigma( y[j] * A[i][j]) >= t
>
> > 对乙来说,可以做同样的分析,得到下面的结果,即乙的策略是以下问题的最优解:
> > max t
> > s.t.
> > 0 <= y[i] <= 1
> > sigma(y[i]) = 1
> > y[i] * sigma( x[j] * A[i][j]) <= t
>
> > 如果有一些数学基础的话,你会发现,第一个约束问题的对偶形式正好是第二个问题。而大家都知道,线性规划是满足强对偶性质的。也就是说,第一个问题的最优值与第-二个问题的最优值刚好相同,并且在两个问题分别的最优解处取得最优值。所以根据这个结论,我们竟然发现,不论甲乙哪一方,在知道对方策略的情况下,竟然不会有丝-毫的优势,因为对方的最优和你的最优是完全吻合的。
>
> > 而甲究竟是否有必胜策略,很简单,解一下那个约束最优化问题,看看最优值是正是负就好了。
>
> > 2010/5/21 Mikster.Z <chinamix...@gmail.com>
>
> >> 我有罪......无限误导.....
>
> >> 在 2010年5月21日 上午11:16,guihua wu <guihuawu8...@gmail.com>写道:
>
> >>> 同意,甲乙都是聪明绝顶的人时,应该排除一方出确定面
> >>> 2010/5/21 DaiZW <shinysky1...@gmail.com>
>
> >>> 同意.
>
> >>>> 既然甲乙都是聪明绝顶的人, 那么跟"甲乙都是植物人"没有区别, 所以我说可以看作完全随机的
>
> >>>> 2010/5/21 Mikster.Z <chinamix...@gmail.com>:
> >>>> > 从甲来看,出反,那么对方正反的几率各为1/2,赢2块钱的几率和输1块的几率一样大。
> >>>> > 出正则相反。这是建立在乙是随机的情形下。
> >>>> > 乙也可以有相似的逻辑。
> >>>> > 那么甲乙都是聪明绝顶的人,那么他们都知道对方会有这样的推论。也就是说任何基于逻辑的策略,对方都选择反制的方式。
>
> >>>> 变成这样的循环,我随机,对方必然选择偏向某一种决策,那么我就可以选择另一种决策,但是对方必然知道我会选择另一种决策....如此反复,无穷尽也。
> >>>> > 而且前后两次决策之间,没有后效。所以基于最大熵模型,最后博弈的结果是随机的是最符合熵增定律的。也就是说没有必胜的策略。
>
> >>>> > 楼上的假设都是基于心理学的,而不是逻辑上的。
> >>>> > @郑培祥 那么你觉得乙的策略在甲使用随机略微偏向反得策略之下会有什么结果?
> >>>> > 在 2010年5月21日 上午10:46,郑培祥 <peixiang.zh...@gmail.com>写道:
>
> >>>> >> 我觉得乙可能长期必赢
> >>>> >> 原因如下:
> >>>> >> 如果乙确定给正面,甲随机,那么长期看,甲必输
> >>>> >> 所以乙在随机的时候,稍微偏向一点正面,甲会怎么样?甲无法判断乙什么时候不随机出牌,只要乙不随机而是出正面,那么甲就输了
>
> >>>> >> 在 2010年5月21日 上午10:38,DaiZW <shinysky1...@gmail.com>写道:
>
> >>>> >>> 没有
>
> >>>> >>> 硬币正反面可以看作是完全随机的, 则
> >>>> >>> 3x1/4 + 1x1/4 = 1 = 2x1/2
> >>>> >>> 所以当局数趋向于无穷大的时候, 甲给乙的钱等于乙给甲的钱,
> >>>> >>> 所以没有一种长期看来必赢的策略.
>
> >>>> >>> 这是我的理解, 不知道对不对...
>
> >>>> >>> 2010/5/21 浩 <zhanghao.p...@163.com>:
> QQ: 346693733- 隐藏被引用文字 -
>
> - 显示引用的文字 -
2010/5/21 Wu Yin <wyw...@gmail.com>:
能在面试时间限制里答对该题的朋友们,有谁是以前没见过类似的题目的?
不管答没答对,谁在工作中碰到同样难度的问题过?
个人结论,这样的题目对招聘好程序员没有帮助。
2010/5/21 浩 <zhangh...@163.com>:
> 昨天同学面试回来,带回来一道看似"动脑筋"的题,思前想后,不得解,
> 希望牛人能指点思路:
>
> 有两个绝顶聪明,而且有无限赌资的人进行赌博,赌博规则如下:
> 1、每个人手里有一个硬币,每个人都能决定自己手里硬币是正面还是反面。
> 2、每局的结果由两人揭开各自手里的硬币的正反面组合情况决定:
> 如果两人的硬币都为正面,则甲给乙3元;如果都为反面,则甲给乙1元;
> 如果一正一反,则乙给甲2元。
>
> 问题是:有没有一个人有一种长期看来必赢的策略?
--
Wu Yongwei
URL: http://wyw.dcweb.cn/
举个例子,我在笔试题里出个编码题:请实现一个Java的线程池
你直接用ArrayList<Thread>和synchronized实现当然算对
不过呢,你如果直接用
java.util.concurrent.ThreadPoolExecutor
写个使用例子,然后在旁边写上一句“写不出好的,直接用concurrent库了”
也算对,
甚至于,你只知道concurrent库,我也认为已经点到了,可以赢得面试机会(有可能会在面试时旧事重提,如果回答圆满,也认为学习能力OK)
然后就按质量,自己写写得好的算上选,写个concurrent使用例子的算中上选,自己写写得不好的中选
Jeffrey Zhao
Blog: http://blog.zhaojie.me/
Twitter: @jeffz_cn
--------------------------------------------------
From: "Serenade" <seren...@gmail.com>
Sent: Sunday, May 30, 2010 8:31 PM
To: <pon...@googlegroups.com>
Subject: Re: [TL] 难题一道,求解
2010/5/30 Jeffrey Zhao <je...@live.com>: