想象一下随机放置 n个城市的地图。在同一张地图上,还有 m人,随机放置在地图上。 n和m没有任何限制(当然不是正整数)。您需要将每个人分配到一个城市(一个城市可以分配多个人),以便所有人组合的总距离尽可能低,并且所有城市必须至少有一个人分配给他们。如果m<n
,您需要将所有人分配到不同的城市。
最有效的算法是什么?
作为一个例子:在下图中,红线是最好的解决方案,而蓝线是次优的。
答案 0 :(得分:2)
assignment problem是这个问题的特例,其中m = n(假设距离可以是任意的)。正如用户189所指出的那样,Hungarian algorithm是分配问题的立方时间算法,尽管在实践中有一些启发式方法可能会改善HA的性能。如果m> n,然后我们可以添加m-n虚拟城市,每个人的距离是从该人到最近城市的距离。每个与假城市相匹配的人都被分配到最近的城市。如果m < n,然后我们可以在每个城市的距离0处添加n个虚拟人。在确定最终作业时,忽略了虚拟人。