首页 > 解决方案 > 优先处理不同类型的消息

问题描述

我有t不同的消息类型,可以在不同的时间到达队列q。在特定时间到达的消息数量可能会有所不同。每种类型都有一些优先级。

我需要编写一个算法,该算法将使用以下规则在优先级队列中对该消息进行排序:

示例 1:

此队列的可能状态(前 8 条消息)

q = t1,t1,t2,t1,t1,t2,t1,t3

示例 2:

在 5t2条消息到达一个空队列后,我有:

q = t2,t2,t2,t2,t2

现在如果有 10t1条消息到达,我需要以下分布:

q = t1,t1,t2,t1,t1,t2,t1,t1,t2,t1,t1,t2,t1,t1,t2

是否已经有一些算法可以实现此功能?

标签: algorithmsortingtime-complexityscheduling

解决方案


我的想法是为每个优先级保留三个不同的队列。维护每个队列中的消息数。

让 ratio1 = c1 / (c1 + c2 + c3)。在您的示例中,c1、c2、c3 分别为 5、2、1。

从第一个队列中挑选 (n1 * ratio1) 条消息,然后从第二个队列中挑选 (n2 * ratio2) 条消息,依此类推。n1、n2、n3 分别是当前队列 1、2、3 中的消息数。

我解释了我的总体想法。您可以将其扩展到任意数量的队列。

我想将上述方案命名为基于优先级的循环算法。我搜索了这个名字,我也找到了一篇相关的文章。希望能帮助到你。


推荐阅读