假设我有一个加权无向连通图,每个顶点都有M
个商品,需要N
个商品。
对于某些顶点,M >= N
以便它们可以满足其要求。对于其他顶点,我们必须将货物从“富”顶点运输到它们,因为必须满足要求。
然而,运输成本。成本等于边缘的重量乘以运输的货物数量。
假设所有顶点所拥有的商品数量大于所有顶点所需的商品数量。我需要一个能够以最低成本使所有顶点满足其需求的运输计划。
对此有何想法?谢谢你的时间!
更新:
为了使这个问题更简单,如果顶点是地图中的某个位置,则2个顶点之间的边不是地图中2个位置之间的道路,而是这两个位置之间的最短路径。因此图表变成了完整的图表。
然后,不需要在“丰富”顶点之间和“池”顶点之间进行传输。我们可以将此图视为二分图。
答案 0 :(得分:0)
您可以使用最小成本流算法来获得最佳解决方案:
图表是二分图:第一组是“丰富”顶点。第二组用于可以接收其他货物的顶点。第一组的每个顶点与第二组的每个顶点之间有一条边capacity = INF
和cost = distance between them
。
从capacity = number of goods that must be removed
和cost = 0
开始,第一组中的每个顶点都有一条边。
第二组和接收器的每个顶点都有capacity = number of goods it can receive
和cost = 0
的边缘。
答案是此图表中的最大流量成本(从源到接收器)。还可以通过查看通过每个边缘的流量来重建运输计划本身。