我正在处理一个看似分配问题变体的问题。有些任务需要分配给服务器。需要最小化服务器上的成本总和。以下条件成立:
任务可能不会在多个服务器之间分配。任务必须由一台服务器处理。
服务器对可分配给它的最大任务数有限制。
任务分配的成本函数是阶梯函数。服务器产生最低成本'a'。对于服务器处理的每个任务,成本增加1.如果分配给特定服务器的任务数量超过其容量的一半,则服务器的成本会增加等于正数“d”。
我感觉这是一个NP-Hard问题,但我似乎无法找到NP-Complete问题来映射它。我已经尝试了Bin Packing,Assignment问题,Multiple Knapsacks,二分图匹配,但这些问题都没有我的问题的所有关键特征。你能否提出一些映射到它的问题?
谢谢和最好的问候
Saqib
答案 0 :(得分:0)
您是否尝试过将set partitioning problem缩减为您的?
SET-PART
(代表"设置分区")决策问题询问是否存在给定集合S
的分区为两组S1
和S2
,以便S1
中元素的总和等于S2
中元素的总和。已知这个问题是NP完全的。
您的问题似乎与m-PROCESSOR
决策问题有关。如果A
个n>0
任务{a1,a2,...,an}
设置为空t1,t2,...,tn
,处理时间为m-PROCESSOR
,则m
问题会询问您是否可以在k>0
之间安排任务相同的处理器,以便所有任务在最多SET-PART
个时间步骤完成。 (处理时间是(正)自然数。)
将m-PROCESSOR
缩减为m=2
非常简单:首先表明m-PROCESSOR
的特殊情况是NP完全的;然后使用它来表明m>=2
对所有m-PROCESSOR
都是NP完全的。 (A reduction in Slovene。)
希望这会有所帮助。
编辑1:哎呀,这个{{1}}似乎非常类似于assignment problem。