优先级队列,其中新近度是次要优先级?

时间:2014-11-22 10:46:44

标签: algorithm data-structures

以下示例说明了我的需求。说它下雨了,我在镇上放了一些桶来收集水。我不确切地知道他们填充的速度,他们收集水的速度各不相同。我不想要一个人溢出,因为那时我失去了水。因此,如果我来到一个桶,它已经满了,我想很快再次访问它,因为它明显地获得了更多的水。如果我来一桶并且它不是很饱满,我不想访问它一段时间,但我最终会这样做。

所以,当我访问一个桶时,我会得到两条信息。它是多么充实(在0和1之间)和当前时间(自POSIX纪元以来的时间)。

我没有寻找最佳答案(最佳解决方案,而不是算法)。我只是在寻找一个简单的解决方案,可能是基于堆的,这比在重新访问之前每次访问每个桶一样好。我想重新访问更频繁填充的桶。

我也不想无限期地忽视缓慢填充的桶,同时过度注入快速灌装桶。

由于

1 个答案:

答案 0 :(得分:2)

保留一个包含每个桶的优先级队列,其中桶的优先级是它将被填充的估计时间。用最早的估计填充时间反复弹出桶,访问它,然后重新插入新的估计值。

有许多可以想象的估算方法。一个简单的方法是记住最后两次访问桶和最后一个收集量并线性推断。