我正在尝试解决像滑雪租赁问题这样的在线算法,但问题有点不同。
问题是我有N个盒子,并且在每个盒子里都有M币,其中X< M< Y和每个不同的盒子可以不同。我可以选择一个盒子并检查硬币的数量,我必须决定选择这个盒子或跳过它(请注意,如果我跳过它,我以后就不能回到这个盒子了。)
我的目标是选择一个方框,以便最大化硬币数量。
我的算法是选择参数G,然后打开第一个框,如果硬币数大于G则选择该框,如果没有选择任何一个,我选择最后一个。
优化竞争配给与离线解决方案应该是什么?
答案 0 :(得分:1)
如果你知道你有N盒子,你可以检查第一个N / e盒子(e = 2.7 ......),并跟踪最大盒子(跳过所有盒子只是找到最大值),现在你的G =最大尺寸,之后选择比G大的第一个框或者如果没有框选择最后一个框。
正如克里斯在评论中提到的那样Secretary Problem,我提供的方式是这个问题的最佳解决方案,您可以在链接中看到更多细节,但我不知道如果我们有一个给定的算法选择G意味着什么?这取决于输入分布和一些其他信息。
答案 1 :(得分:0)
如果设置常数G,则必须假设您的数据是由知道它的对手准备的。他们可以给你一个盒子,让你选择它,然后让最后一个盒子包含Y,这样使离线算法Y / G次更有利可图。 OTOH他们可以给你一个盒子,只是让你拒绝它,然后让最后一个盒子包含X,这样使离线算法G / X次更有利可图。最不好的G似乎是sqrt(XY),在这种情况下,离线算法是sqrt(Y / X)倍更有利可图。
在接收方框之前,您是否可以随意选择G,在这种情况下,您的对手只知道其分布?基于X = 1时简单例子的有希望的行为,我会在ln X和ln Y之间随机选择ln G,但对于这种情况可能有更好的解决方案。找到它们的一种方法是仅考虑离散值 - 这可能是本例中的实际情况,然后将情况视为您和对手之间的零和游戏。