我正在处理一个算法问题。我有一个已知的图形算法,其中有一个中心节点。目标是通过两个运输者将货物从这个中心节点交付到其他指定节点。每个运输者每次只能携带最多一单位的货物,因此在每次节点访问后,他们会回到中心节点进行下一步操作。我应该计算完成此操作所需的最短时间。
我的方法是使用dijkstra算法来查找中心节点到所有其他节点的最短路径,考虑节点之间的不同距离。然后对于所有运输员应该去的节点(有时甚至需要多次到达特定节点),我将值加倍,因为需要往返距离。我将值分为两组,使它们的总和尽可能接近,因为有两个运输员,并打印较大的值。
然而,这个解决方案似乎并不完美。我需要增加另一项功能来完善它。如果第一位运输员知道他比预计提前8个单位结束工作,他可以在途中的某个时候为第二位运输员准备好货物,这样他就不必一直等到中央节点了,但要少一点时间。这样他们的总时间将相等,但会更短。不幸的是,这并不总是可能的(例如只有一个节点的一个交付等)。我需要将这个方面添加到我的程序中。
我的方法是使用dijkstra算法来查找中心节点到所有其他节点的最短路径,考虑节点之间的不同距离。然后对于所有运输员应该去的节点(有时甚至需要多次到达特定节点),我将值加倍,因为需要往返距离。我将值分为两组,使它们的总和尽可能接近,因为有两个运输员,并打印较大的值。
然而,这个解决方案似乎并不完美。我需要增加另一项功能来完善它。如果第一位运输员知道他比预计提前8个单位结束工作,他可以在途中的某个时候为第二位运输员准备好货物,这样他就不必一直等到中央节点了,但要少一点时间。这样他们的总时间将相等,但会更短。不幸的是,这并不总是可能的(例如只有一个节点的一个交付等)。我需要将这个方面添加到我的程序中。