需要算法来为商店分配经理

问题描述

假设您有“n”个经理和“n”个商店,它们都随机分布在一个地理区域内。我需要能够将每个经理分配到一个商店。经理将每天从家中前往指定的商店。总的来说,我想尽量减少每天行驶的距离。这可以有两种解释:

  1. 最小化平均每日旅行距离(这也与最小化总旅行距离相同。

  2. 最小化单个经理的最大旅行距离

这是一个已知问题吗?有没有明显的算法来解决它?这看起来与旅行商问题很相似,但并不完全相同。

解决方法

两者都可以多项式求解

我将快速介绍定义最佳分配的两种方法,如问题中所述。请注意,我不会对旅行时间做出任何假设,例如三角不等式。当然这样的性质在实践中很可能成立,可能会有更好的算法利用这些性质。

最小化总距离

对于这种情况,我们将经理和商店视为加权完整二部图。然后我们想要一个最小化权重总和的匹配。

这称为Balanced Assignment Problem,它是最小/最大匹配的一种特殊情况。由于图是二部图,因此可以通过多项式求解。维基百科列出了解决这个问题的几种算法,最显着的是 Hungarian algorithm

最小化最大距离

如果我们希望最小化最大距离,我们可以通过二分查找找到一个解决方案。具体来说,我们在最大距离上进行二分搜索,并尝试找到不违反该最大距离的匹配项。

对于任何给定的最大距离 x,当且仅当 d(M,S)