这是一个关于如何表示优先级的后续问题
答案引导我将设计基于Priority Queue ADT
.
我的问题是我无法弄清楚如何为这个问题建模(我了解 a 的PQ
工作原理)。
所以使用我原来的(简单的例子)假设我有PersonA
PersonB
...... PersonY
(表示为类),它们喜欢各种菜肴Pizzas
Spaggeti
Steak
等。
我想找到一种方法来指定应该根据哪些菜肴来祝愿人Preference
(这可能是一个额外的类正如在开始问题线程的答案中的朋友也建议的那样)。
我不确定这应该如何建模。我的第一个想法是PriorityQueue
为每道菜(PizzaPQ
等SpaggetiPQ
)创建一个,在每个队列中加入所有Persons
并开始从每个队列中删除顶部(作为对该菜具有最大偏好的队列)并将其Person
从其他队列中删除。此过程按顺序遍历所有队列。
现在虽然从概念上看它似乎是正确的(但这不是最好的方法,因为我认为由于过程本身会出现差异),但我不认为我走在正确的轨道上,因为
- 从其他队列中删除是线性操作(我说的是已经在
remove(Object)
哪里提供服务并且不应该再出现在其他队列中)并且将花费 队列数量在哪里(在我看来,这增加了很多优先级队列的使用)Object
Pizza
O(N*k)
k
- 在我看来,我需要一些抽象来处理优先队列的“池”,我不确定是否真的存在这样的数据结构,我也不知道。
我想这个问题可以概括为如何分配作业或如何操作多个队列(也许?)
对于这些问题必须有一个标准的设计方法。
非常欢迎任何输入
@Thomas 回答后更新:
问题稍微复杂一些。
除了偏好之外,还可能存在其他(一个人的)属性。
例如PersonA
,PersonB
他们都喜欢牛排而不是其他任何菜肴。但PersonA
胆固醇高,PersonB
是一名运动员。以某种方式考虑这些属性,然后PersonB
应该得到牛排。也许PersonA
最终会以其他方式结束。
这就是我最初想到PQs
菜肴的原因