找到类似于旅行推销员的场景的最佳解决方案

时间:2014-10-14 10:07:55

标签: algorithm

假设我有一个加权无向连通图,每个顶点都有M个商品,需要N个商品。

对于某些顶点,M >= N以便它们可以满足其要求。对于其他顶点,我们必须将货物从“富”顶点运输到它们,因为必须满足要求。

然而,运输成本。成本等于边缘的重量乘以运输的货物数量。

假设所有顶点所拥有的商品数量大于所有顶点所需的商品数量。我需要一个能够以最低成本使所有顶点满足其需求的运输计划。

对此有何想法?谢谢你的时间!

更新:

为了使这个问题更简单,如果顶点是地图中的某个位置,则2个顶点之间的边不是地图中2个位置之间的道路,而是这两个位置之间的最短路径。因此图表变成了完整的图表。

然后,不需要在“丰富”顶点之间和“池”顶点之间进行传输。我们可以将此图视为二分图。

1 个答案:

答案 0 :(得分:0)

您可以使用最小成本流算法来获得最佳解决方案:

  1. 图表是二分图:第一组是“丰富”顶点。第二组用于可以接收其他货物的顶点。第一组的每个顶点与第二组的每个顶点之间有一条边capacity = INFcost = distance between them

  2. capacity = number of goods that must be removedcost = 0开始,第一组中的每个顶点都有一条边。

  3. 第二组和接收器的每个顶点都有capacity = number of goods it can receivecost = 0的边缘。

  4. 答案是此图表中的最大流量成本(从源到接收器)。还可以通过查看通过每个边缘的流量来重建运输计划本身。

相关问题