魔方吧·中文魔方俱乐部
标题:
选中最大数的策略
[打印本页]
作者:
lulijie
时间:
2009-2-28 23:35:19
标题:
选中最大数的策略
tiawing的那个关于策略的帖子,由于涉及到影响不好的东西,版主强烈要求修改,我就代tiawing修改成本贴,原著者仍归属tiawing。并把一些结论一并发表,有些虽然经电脑证实非常吻合事实,但未经证明。但因为结论非常出人意料,显示了数学的奇妙,所以公布出来,供大家分享。若有人能证明之,希望能不惜笔墨。则不胜欣喜。
---------------------------------------------------------------------------------------------------------------
有m个实数,两两不等,每次只显示一个数给你看,你可以选择获取它或放过它看下一个数。你的目标是得到最大的数。
那么如何安排策略,才能使得获取最大数的概率最高?
策略(N) :放过前面的N-1个数,从第N个数开始,若与前面的所有数相比是最大的,就选择该数,否则放过,看下一个数,一直到所看的数与前面的所有数相比是最大的为止,选择该数。若看到了最后一个数,就只能选择最后一个。
那么:
策略(N) 获取最大数的概率
P(N) =(N-1)/m * ∑ 1/i
( ∑中的 i 从N-1到 m-1)
N>1
P(N) =1/m
N=1
假设M1和M2是 最接近
(m+1)/e
的两个整数,M1<M2 其中e为自然对数,=2.718281828……
那么 结论1:使得概率P最大的N值必等于
M1或M2
。
结论2:m趋向于无穷大时,P(M1+1) 或P(M2+1)的极限等于1/e 。
也就是说m很大时,最优策略获取最大数的概率等于1/e。
---------------------------------------------------------------------------------------------------
11#已经证明:假设M1和M2是 最接近 m/e 的两个整数,M1<M2 ,结论1成立。
所以 绿字部分
(m+1)/e
修改为m/e为妥当。 若不改的话是否成立还有待证明。
M1或M2
应该为 M1+1或M2+1 即 int(m/e)+1 或 int(m/e)+2
或者 用n表示放过的数,即n=N-1, 结论1也可表示为: 使得概率P最大的n值必等于
M1或M2
。
------------------------------------------------------------------------------
最终结论应该是如下:
假设M2是 比 m/e
大的第一个整数,即M2 =int(m/e) +1 其中e为自然对数,=2.718281828……
那么 结论1:使得概率P最大的N值必等于M2或M2+1。
或者表示为
使得概率P最大的n值必等于M2或M2-1。
n=N-1 表示放过的数
结论2:m趋向于无穷大时,P(M2) 或P(M2+1)的极限等于1/e 。
也就是说m很大时,最优策略获取最大数的概率等于1/e。
----------------------------------------------------------------------------------------------
上述有些乱,我把题目,求证的结论,以及证明的过程,全部一起集中发在14楼中。
[
本帖最后由 lulijie 于 2009-3-2 20:57 编辑
]
作者:
R'cube
时间:
2009-3-1 00:04:06
沙发没人要我先拿下了~~~~~~~
作者:
lulijie
时间:
2009-3-1 01:01:22
使得概率P最大的N值可以用公式计算:
N=int[(m+1)/e] +1 公式算出的结果与正确值大部分都一致,偶尔有少数比正确值大1。
从m=3至10000中,公式与正确值不一致的总数有519个:只占5%左右。
以下为公式与正确值不一致的m值
10,29,48,67,86,97,116,135,154,173,192,203,222,241,260,279,309,328,347,366,
385,396,415,434,453,472,502,521,540,559,578,589,608,627,646,665,695,714,733,
752,771,782,801,820,839,858,888,907,926,945,964,975,994,1013,1032,1051,1081,
1100,1119,1138,1157,1168,1187,1206,1225,1244,1274,1293,1312,1331,1350,1361,1380,
1399,1418,1437,1456,1467,1486,1505,1524,1543,1573,1592,1611,1630,1649,1660,1679,
1698,1717,1736,1766,1785,1804,1823,1842,1853,1872,1891,1910,1929,1959,1978,1997,
2016,2035,2046,2065,2084,2103,2122,2152,2171,2190,2209,2228,2239,2258,2277,2296,
2315,2345,2364,2383,2402,2421,2432,2451,2470,2489,2508,2538,2557,2576,2595,2614,
2625,2644,2663,2682,2701,2731,2750,2769,2788,2807,2837,2856,2875,2894,2913,2924,
2943,2962,2981,3000,3030,3049,3068,3087,3106,3117,3136,3155,3174,3193,3223,3242,
3261,3280,3299,3310,3329,3348,3367,3386,3416,3435,3454,3473,3492,3503,3522,3541,
3560,3579,3609,3628,3647,3666,3685,3696,3715,3734,3753,3772,3802,3821,3840,3859,
3878,3889,3908,3927,3946,3965,3995,4014,4033,4052,4071,4082,4101,4120,4139,4158,
4177,4188,4207,4226,4245,4264,4294,4313,4332,4351,4370,4381,4400,4419,4438,4457,
4487,4506,4525,4544,4563,4574,4593,4612,4631,4650,4680,4699,4718,4737,4756,4767,
4786,4805,4824,4843,4873,4892,4911,4930,4949,4960,4979,4998,5017,5036,5066,5085,
5104,5123,5142,5153,5172,5191,5210,5229,5259,5278,5297,5316,5335,5346,5365,5384,
5403,5422,5452,5471,5490,5509,5528,5558,5577,5596,5615,5634,5645,5664,5683,5702,
5721,5751,5770,5789,5808,5827,5838,5857,5876,5895,5914,5944,5963,5982,6001,6020,
6031,6050,6069,6088,6107,6137,6156,6175,6194,6213,6224,6243,6262,6281,6300,6330,
6349,6368,6387,6406,6417,6436,6455,6474,6493,6523,6542,6561,6580,6599,6610,6629,
6648,6667,6686,6716,6735,6754,6773,6792,6803,6822,6841,6860,6879,6898,6909,6928,
6947,6966,6985,7015,7034,7053,7072,7091,7102,7121,7140,7159,7178,7208,7227,7246,
7265,7284,7295,7314,7333,7352,7371,7401,7420,7439,7458,7477,7488,7507,7526,7545,
7564,7594,7613,7632,7651,7670,7681,7700,7719,7738,7757,7787,7806,7825,7844,7863,
7874,7893,7912,7931,7950,7980,7999,8018,8037,8056,8067,8086,8105,8124,8143,8173,
8192,8211,8230,8249,8279,8298,8317,8336,8355,8366,8385,8404,8423,8442,8472,8491,
8510,8529,8548,8559,8578,8597,8616,8635,8665,8684,8703,8722,8741,8752,8771,8790,
8809,8828,8858,8877,8896,8915,8934,8945,8964,8983,9002,9021,9051,9070,9089,9108,
9127,9138,9157,9176,9195,9214,9244,9263,9282,9301,9320,9331,9350,9369,9388,9407,
9437,9456,9475,9494,9513,9524,9543,9562,9581,9600,9619,9630,9649,9668,9687,9706,
9736,9755,9774,9793,9812,9823,9842,9861,9880,9899,9929,9948,9967,9986,
---------------------------------------------
对于上述不一致的m值,将公式算出的N值减去1就可得到正确值。
作者:
lulijie
时间:
2009-3-1 14:28:52
策略(N) 获取最大数的概率
P(N) =(N-1)/m * ∑ 1/i
( ∑中的 i 从N-1到 m-1)
金眼睛在
http://bbs.mf8-china.com/viewthread.php?tid=22652&
;extra=page%3D1&page=9 的83楼中:
提出 但m和N较大时,
∑ 1/i
( ∑中的 i 从N-1到 m-1)
可以用
ln m/(N-1)
近似代替。
P(N) =(N-1)/m * ∑ 1/i
就相当于
P(N) =(N-1)/m *
ln m/(N-1)
然后求导,获得
m/
(N-1)=e
时P(N) 最大。
得到 N=int(m/e) +1 或附近得到最大值。
--------------------------------------------------------------
妙妙妙,确实妙。给理论上的证明,给出了很好的方向,对于m,N较大时基本上能证明。
但是我1#的结论1却是与m的大小无关,就算m很小,也成立,金眼睛的上述证明方法就不成立了。m很小又如何证明结论1成立呢?
------------------------------------------------------------------------------------
还有金眼睛给出的N计算公式 N=int(m/e) +1 与本人的计算公式 N=int[(m+1)/e] +1 有所区别:
m从3到10000,用公式计算N,金兄算出的N值与正确值相比,有3159个不相符;正确率69%。
本人的公式算出的N值与正确值相比,只有519个不相符;正确率95%。
所以本人的公式远远优于金兄的。
作者:
lulijie
时间:
2009-3-1 15:56:05
假设策略(N) 获取最大数的概率最高:
那么
N的计算公式 N=int[(m+△)/e] +1
int为取整函数。
金眼睛的计算公式 △=0,正确率68.4%
我的计算公式 △=1 ,正确率94.8%
经过计算,当 △=0.8591时算出的结果,正确率最高:
N=int[(m+△)/e] +1 △=0.8591
m<=30000, 仅m=97时,有偏差,其余均正确,正确率
9999.6%。
----------------------------------------------------------------------
红字部分出错了,应该为99.996%,谢谢骰迷和 tonylmd批评指出。
[
本帖最后由 lulijie 于 2009-3-1 23:43 编辑
]
作者:
juventus66
时间:
2009-3-1 16:41:52
学习了
作者:
lulijie
时间:
2009-3-1 17:33:43
最新的正确率最高的N值计算公式:
N=int[(m+△)/e] +1
int为取整函数。 △为修正值,e为自然对数。e=2.71828182845905
△=0.859135, 10万以内的m值,只有m=97是有偏差。
-----------------------------------------------------------------------------
以下计算公式,对于m<=100000结果均正确。
m=97,
N=int[(m+△)/e]
其他的m,
N=int[(m+△)/e] +1
作者:
kexin_xiao
时间:
2009-3-1 20:36:51
太深奥了,来学习一下,加分鼓励!
作者:
骰迷
时间:
2009-3-1 22:04:13
正确率9999.6%?比率怎可能比100%大?
作者:
tonylmd
时间:
2009-3-1 22:43:31
哈哈~笔误了
作者:
lulijie
时间:
2009-3-1 23:22:42
策略(N) 获取最大数的概率 P(N) =(N-1)/m * ∑ 1/i ( ∑中的 i 从N-1到 m-1)
那么 P(N+1) =N/m * ∑ 1/i ( ∑中的 i 从N到 m-1)
所以 △P= P(N+1)- P(N) =1/m * [ ∑ 1/i -1] ( ∑中的 i 从N到 m-1) 概率增值公式
N=1时, ∑ 1/i 大于1, N=m-1时 ∑ 1/i =1/(m-1),小于1
因为 ∑ 1/i 是个递减数列 从大于1 递减至 1/(m-1) ( i从1至m-1)
所以 △P也是递减数列,从大于0 递减至 小于0,
所以概率P(N) 先是递增数列,后变为递减数列,
所以P(N) 有个最大值,当△P第一次变为负值时的N就是所求的最大值的自变量。
那么N等于多少, △P 第一次小于0呢?
------------------------------------------------------------------------------------
第一:设 C(k)=∑ 1/i -ln(k+1) ( ∑中的 i 从1到k ) C(k)是个递增数列
K趋向无穷大时, C(k)的极限 就是欧拉常数C=0.57721566490153286060651209
那么 C(N-1)=∑ 1/i -ln(N) ( ∑中的 i 从1到N-1)
C(m-1)=∑ 1/i -ln(m) ( ∑中的 i 从1到m-1)
因为 m* △P=(∑ 1/i -1) ( ∑中的 i 从N到m-1)
所以 m* △P=C(m-1)+ln(m) -C(N-1)-ln(N)-1 =ln(m/N)-1 + C(m-1)-C(N-1)
m* △P=ln(m/Ne) + C(m-1)-C(N-1)
为C(k)是个递增数列,C(m-1)-C(N-1)大于0,
假设M是不大于m/e的最大整数,那么M<=m/e<M+1,
那么 m/Ne>=M/N
当N取M值时,m/Ne>= M/N=1
m* △P=ln(m/ne) + C(m-1)-C(N-1) >=ln1 + C(m-1)-C(N-1) >0
所以N<=M 时,△P都大于0,所以P(N)取最大值时,N 必定>=M+1 。
-----------------------------------------------------------------------------
第二:同样:
设 C'(k)=∑ 1/i -ln(k) ( ∑中的 i 从1到k ) C'(k)是个递减数列
K趋向无穷大时, C’(k)的极限 就是欧拉常数C=0.57721566490153286060651209
那么 C'(N-1)=∑ 1/i -ln(N-1) ( ∑中的 i 从1到N-1)
C’(m-1)=∑ 1/i -ln(m-1) ( ∑中的 i 从1到m-1)
因为 m* △P=(∑ 1/i -1) ( ∑中的 i 从N到m-1)
所以 m* △P=C’(m-1)+ln(m-1) -C'(N-1)-ln(N-1)-1 =ln[(m-1)/(N-1)]-1 + C'(m-1)-C'(N-1)
m* △P=ln[(m-1/(N-1)e] + C'(m-1)-C'(N)
因为C‘(k)是个递减数列,C'(m-1)-C'(N)小于0,
假设M是不大于m/e的最大整数,那么M<=m/e<M+1,
(m-1)/(N-1)e<(m-1)/m * (M+1)/(N-1)
当N取M+2值时, (m-1)/(N-1)e<(m-1)/m * (M+1)/(N-1)=(m-1)/m <1
m* △P=ln[(m-1)/ (N-1)e] + C'(m-1)-C'(N) <ln1 + C'(m-1)-C'(N)<0
所以N>=M+2 时,△P都小于0,所以P(N)取最大值时,N 必定<=M+2 。
-------------------------------------------------------------
综合第一和第二,得出,
假设M是不大于m/e的最大整数,那么M<=m/e<M+1,
那么,P(N)取最大值时,M+1<=N<=M+2
所以结论1得证。
[
本帖最后由 lulijie 于 2009-3-2 01:43 编辑
]
作者:
lulijie
时间:
2009-3-1 23:38:17
△=0.858时,计算公式可以在m<1000时,正确率达到100%,但是m再增大时,计算公式的正确率却远远不如其他修正值△。
比如m<30000时,△=0.858时,计算公式 m=2818,5539,8260,10981,13702,16423,19144,21865,23322,26043,28764,出现偏差,
所以才认为修正值0.858不如8591好。
[
本帖最后由 lulijie 于 2009-3-1 23:44 编辑
]
作者:
lulijie
时间:
2009-3-2 00:37:27
结论1证明了,结论2就好证明了。
P(M1) =(M1-1)/m * ∑ 1/i
( ∑中的 i 从M1-1到 m-1)
因为
∑ 1/i
=ln(m/(M1-1)) + C(m-1)-C(M1-1)
因为m趋向于无穷大,所以 m/e 趋向于无穷大,所以M1-1也趋向于无穷大
所以C(m-1)-C(M1-1) 趋向于C-C=0 C欧拉常数。
m/(M1-1)趋向于e,ln(m/(M1-1)) 趋向于1,
P(M1)的极限就=1/e *1=1/e。
作者:
lulijie
时间:
2009-3-2 20:54:19
题目:
有m个实数,两两不等,每次只显示一个数给你看,你可以选择获取它或放过它看下一个数。你的目标是得到最大的数。
那么如何安排策略,才能使得获取最大数的概率最高?
策略(n) :
放过前面的n个数,从第N=n+1个数开始,若与前面的所有数相比是最大的,就选择该数,否则放过,看下一个数,一直到所看的数与前面的所有数相比是最大为止,选择该数。若看到了最后一个数,就只能选择最后一个。
假设:
q是 不比 m/e 大的最大整数,即q=int(m/e) 或q<=m/e<q+1 int是取整函数, e为自然对数,=2.718281828……
那么:
结论1:
策略(n) 获取最大数的概率
P(n) =n/m * ∑ 1/i ( ∑中的 i 从n到 m-1) n>0
P(n) =1/m n=0
结论2:
使得概率P最大的n值必等于q或q+1。
结论3:
m趋向于无穷大时,P(q) 或P(q+1)的极限等于1/e 。
也就是说m很大时,最优策略获取最大数的概率等于1/e。
证明:
结论1:
最大数出现在被看的轮次是随机的,所以出现在任何轮次的概率都是1/m。
最大数若出现在前n轮次,由于策略(n)的缘故,已被放弃,所以不可能被选中了。最大数出现在n+1次以后,比如第i轮次(i>n),根据策略,被选中的条件是i-1轮次之前出现的所有i-1个数中最大的数出现在第n轮次之前(包括第n轮次),因为若出现在n轮次之后,根据策略,它必备选中,从而不可能获得最大数。所以最大数出现第i轮次且被选中的概率=1/m * n/(i-1)=n/m * 1/(i-1),所以策略(n) 获取最大数的概率
P(n)=n/m * ∑1/(i-1), (∑中的i=n+1 to m)
即 P(n)=n/m * ∑ 1/i , ( ∑中的i从n到 m-1)
所以结论1得证。
结论2 :
思路:
1.首先证明 数列P(n) 是个先递增后递减的数列。头尾的数列值相等,都等于1/m,所以中间有最大值。
前后两个数列的差值△P= P(n+1)- P(n) =1/m * [ ∑ 1/i -1] ( ∑中的 i 从n+1 到 m-1)
即 m*△P= [ ∑ 1/i -1] ( ∑中的 i 从n+1 到 m-1)
从上面式子可看出△P是个递减数列,从大于0,逐渐减至小于0. 当第一次变为负值时的n就是所求的最大值的自变量。
2.构造两个新的数列:C(k)=∑ 1/i -ln(k+1) ( ∑中的 i 从1到k ) C(k)是个递增数列
C'(k)=∑ 1/i -ln(k) ( ∑中的 i 从1到k ) C'(k)是个递减数列
这两个数列的极限值都相等,都等于欧拉常数C=0.57721566490153286060651209
3.将概率△P用C(k)或C'(k)来表示:m* △P=ln(m/(n+1)) + C(m-1)-C(n) -1
式子1
m* △P=ln[(m-1)/n] + C'(m-1)-C'(n+1) -1
式子2
当n=q-1时,用式子1判断△P>0,所以P(n)取最大值时,n 必定>=q
当n=q+1时,用式子2判断△P<0,所以P(n)取最大值时,n 必定<=q+1
所以就得出P(n)取最大值,q<=n<=q+1,结论2得证。
结论3:
P(q) =q/m * ∑ 1/i ( ∑中的 i 从q到 m-1)
因为 ∑ 1/i =ln(m/q) + C(m-1)-C(q-1)
所以 P(q) =q/m * [ln(m/q)+ C(m-1)-C(q-1)]
因为m趋向无穷大,所以q=int(m/e)也趋向无穷大,m/q趋向e, q/m 趋向1/e, C(m-1)-C(q-1)]趋向C-C=0,
所以 P(q) 趋向1/e * (lne+0)=1/e.
所以结论3得证。
-------------------------------------------------------------------
下面证明结论2
:
C(n)=∑ 1/i -ln(n+1) ( ∑中的 i 从1到n)
式子a
C(m-1)=∑ 1/i -ln(m) ( ∑中的 i 从1到m-1)
式子b
因为m*△P=[ ∑ 1/i -1] ( ∑中的 i 从n+1 到 m-1)
所以 式子b-式子a 得到 ∑ 1/i =ln m/(n+1) + C(m-1)- C(n) ( ∑中的 i 从n+1 到 m-1)
所以 m*△P=ln m/(n+1) + C(m-1)- C(n)-1
n取q-1值时,m*△P=ln m/q + C(m-1)- C(q)-1
因为q<=m/e<q+1,所以m/q>=e, 因为C(k)是个递增数列,所以C(m-1)- C(q)>0.
所以m*△P >lne+0-1>0.
因此 n取q-1值时,△P>0
-----------------------------
C'(n)=∑ 1/i -ln(n) ( ∑中的 i 从1到n)
C’(m-1)=∑ 1/i -ln(m-1) ( ∑中的 i 从1到m-1)
因为 m* △P=(∑ 1/i -1) ( ∑中的 i 从n+1到m-1)
所以 m* △P=C’(m-1)+ln(m-1) -C'(n)-ln(n)-1 =ln[(m-1)/n] + C'(m-1)-C'(n)-1
n取q+1值时,m*△P=ln (m-1)/(q+1) + C'(m-1)- C'(q+1)-1
因为q<=m/e<q+1,所以(m-1)/(q+1)< m/(q+1)<e, 因为C'(k)是个递减数列,所以C'(m-1)- C'(q+1)<0.
所以m*△P <lne+0-1<0,
因此n取q+1值时,△P<0。
所以结论2得证。
[
本帖最后由 lulijie 于 2009-3-2 21:01 编辑
]
作者:
lulijie
时间:
2009-3-2 21:36:20
模拟计算公式
N=int[(m+△)/e] +1
int为取整函数。 △为修正值,e为自然对数。e=2.71828182845905
因为放过的个数n=N-1,
所以概率取最大值时,n=int( m/e+△') 模拟计算公式 (△'=△/e)
用 △'来修正n是很有道理的。
因为 int( m/e)=q ,n不是等于q,就是等于q+1
当 0<△'<1时 q= int( m/e)<= int( m/e+△') <= int( m/e)+1=q+1
所以 int( m/e+△') 不是等于q,就是等于q+1。只要△'选的适当,完全可以用来代替n值。正确率可以很高。
若△' 等于0时,nt( m/e+△') 只能等于q, 不可能等于q+1,所以等于q+1的这部分n就不能正确求出,所以用△' 等于0,错误率很高。
△' 等于1时,nt( m/e+△') 只能等于q+1, 不可能等于q,所以等于q的这部分n就不能正确求出,所以用△' 等于1,错误率也很高。
所以,修正值△' 应该在0和1之间。
作者:
ggglgq
时间:
2009-3-6 08:29:16
嗯,楼主的题目很好,楼主 和 金眼睛 对问题的分析研究很透彻!
自然对数 e 的科学应用很广呀! 这使我想起 N 为底的对数的概率应用:
在 N 进制中,首位数为 m 的自然数的概率
( N 为大于 1 的自然数)
http://bbs.mf8-china.com/viewthread.php?tid=2153
可惜无暇去证明,不知各位高手能否抽空去证明一下呢?谢谢了!
欢迎光临 魔方吧·中文魔方俱乐部 (http://www.mf8-china.com/)
Powered by Discuz! X2