我的机器上有4个插槽,我有一个订单告诉我将某些物品放在这台机器上。让我们说100个项目,我有4个插槽,并且订单看起来像这样:
4 8 3 3 8 8 8 10 2 7.
我需要能够以最少的插槽更改来完成此订单。例如,通过上面的输入,我应该在机器上保留项目编号8,这样我就不必将其放回原处并在其中拾取另一个。
问题是我无法在实际到达之前检查下一个订单。所以这是一种猜谜游戏。任何人都有一个我可以查找并应用于该项目的算法吗?
答案 0 :(得分:0)
听起来你正在寻找像page replacement algorithms这样的东西。当您到达机器上尚未订购的订单时,它很像页面未命中。您必须逐出四个缓存页面之一,为现在需要的页面腾出空间。
有很多选择,他们都有权衡。通常,您对订单流的了解或合理假设越多,您可以接受的开销越多,避免不必要的页面未命中的可能性就越大。
在选择之前先考虑几个问题:
如果这没有用,请尝试实现LRU和Clock之类的一对,并针对实际的订单流进行测试。要评估其准确性,您可以与特定流的理论最佳操作序列进行比较。此算法称为OPT,仅在您有权访问完整流时才有效。