硬币更换的渐近性


13

给定硬币面额,其中和是在范围内均匀分布的随机数。渐近地,贪婪算法使用这组面额对硬币的哪一部分产生最优找零?c 1 = 1 c 2 < c 3 < < c n [ 2 N ]nc1=1c2<c3<..<cn[2,N]

答案以3种面额闻名; 但是一般情况呢?


2
确定4种面额的概率由Thane Plambeck提出,他还提供了3种面额的概率表达式(请参阅OP提供的链接)。OP正在询问有关此概率的渐近行为的更一般的问题。这可能更适合带有渐近标签的math.SE和MO。@Ganesh:您的TCS动机是什么,或者使用ds.algorithms标签的原因是什么?
安德拉斯·萨拉蒙

1
@ Andras,这是一个非常复杂的理论问题。例如,如果贪婪的方法在90%的时间内获得了最优解,那么我可能会忘记动态编程,而在剩下的10%的时间内解决次优的解决方案。也许这在Math。*上更合适,但动机在于TCS。最后,“正确的标签”逃脱了我-所以我认为ds.algorithms是最好的近似。
Ganesh

Answers:


9

这不是答案,但是也许这会为您或其他人指明正确的方向。

我发现D. Kozen和S. Zaks的论文名为找零问题的最佳界限”,其中给出了硬币找零实例的贪心找零算法最佳的条件。我将使用它们的符号。

给定不同硬币 的硬币更换实例 的函数表示需要做出改变硬币的最佳数量和函数表示需要贪婪地做出改变硬币的数目,则如果,则存在范围内的反例 m

(c1,c2,c3,,cm1,cm)
c1=1<c2<c3<<cm1<cm
M(x)xG(x)xM(x)G(x)
c3+1<x<cm1+cm

他们继续表明

如果对于范围中的每个, 则(即贪婪算法是最佳算法)。xc3+1<x<cm1+cm

G(x)G(xc)+1
c(c1,c2,,cm)
G(x)=M(x)

这为我们提供了“有效”(直到伪多项式时间)测试,以确定硬币找零实例是否贪婪。

使用以上内容,我进行了简短的仿真,其结果以对数-对数比例绘制在下面

在此处输入图片说明

每个点代表所显示的10000个实例创建的平均值,并且每个元素都选择为独立的,但是在范围内是随机的。[ 1 N ]m[1N]

假设我们知道,对于,贪婪算法最优的概率随,从看图我就可能会冒险猜测贪婪算法最优的概率为:8m=383N12

pm(N)N(m2)2

其中是从的范围内随机随机抽取的不同硬币是贪婪最优的概率(否则称为“规范”)。m Npm(N)mN

在大的限制中,对于任何非平凡值,贪婪解决方案最优的概率迅速变为0 。如果上述等式成立,那么很容易看到,但是可能有其他看待它的方法给出相同的结论。例如,观察Borgs,Chayes,Mertens和Nair的“ 随机能量模型”,结果表明该能量在底部过于参差不齐,无法期望局部移动(即贪婪移动)提供最佳解决方案。这当然是针对数字分配问题的,仅用于提供一些直觉,而不是确定的答案。ñmN

冒着回答您没有提出的问题的风险,我想指出,“现实世界”的硬币系统并不遵循硬币面额的统一分布。例如,美国至少有12种面额(包括纸币:)看起来不是均匀分布的。在较大的系统范围内,也许寻找其他分布来生成硬币面额可能会产生不平凡的结果。例如,幂律分布可能会产生与美国面额更为相似的硬币面额。(1,5,10,25,50,100,200,500,1000,2000,5000,10000)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.