Warm tip: This article is reproduced from serverfault.com, please click

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

(traveling salesman - Need Algorithm to Allocating Managers to Stores)

发布于 2021-01-23 22:35:25

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

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

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

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

Questioner
Steve Maughan
Viewed
11
ADdV 2021-01-24 07:30:50

两者都可以多项式求解

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

最小化总距离

对于这个例子,我们认为经理和商店是一个加权的完整二部图。然后我们想要一个最小化权重总和的匹配。

这称为平衡分配问题,它是最小/最大匹配的一种特殊情况。由于图是二部图,因此可以通过多项式求解。维基百科列出了解决这个问题的几种算法,最著名的是匈牙利算法

最小化最大距离

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

对于任何给定的最大距离 x,当且仅当 d(M, S) < x 时,我们创建二部图,该图在管理器 M 和存储 S 之间具有边。然后我们尝试使用任何二部匹配算法在这个二部图上创建一个完整的匹配,并通过成功和失败完成对允许匹配的最小 x 的二分搜索,从而最小化最大距离。