我正在寻找创建算法的指导,以最大限度地减少一组旅行者到达一组固定目的地的总旅行时间。旅行者不是都在同一个地方开始,但旅行者必须先访问每个目的地,然后才能认为情景完成(类似于TSP)。
我正在考虑生成一个矩阵,其中位于(x,y)的值将是从起始位置x到目标y的行程距离,然后执行某种矩阵运算/算法选择值,使每个行/列只从中选择一个值,并将这些值的总和最小化。有没有人有这种算法的背景?
根据评论澄清:
答案 0 :(得分:3)
查看Floyd-Warshall algorithm和Merge Sort algorithm。
鉴于要访问的位置数(顶点)是V且旅行者的数量是T,如果应用Floyd-Warshall算法,它应该为您提供图中顶点对之间的最短路径,O( V ^ 3)复杂性。
然后,您可以按升序对最短路径的长度进行排序,这将是O(V lg V)复杂度的操作。
由于您按顺序应用这些算法,因此整体复杂度仍为O(V ^ 3)。
你必须执行第二阶段K次,其中K是天花板(V / T),因为在第一次迭代中,你会访问T个顶点,但是V大于T所以你有更多的顶点要访问。在下一次迭代中,您将从计算中删除已访问的顶点,并对剩余的距离进行排序(您已在上一步中找到),然后从T旅行者的新位置继续访问它们。
您可以通过为每个顶点选择最小距离来获得更好的结果,因此您选择的下一个顶点是最接近的顶点。
因此,你的整体复杂性将开始看起来像O(V ^ 3)+ K x O(V lg V),我认为它往往接近O(V ^ 3)。
这些只是让你入门的一些想法。
答案 1 :(得分:2)
如果我理解你的问题,我怀疑旅行者的数量与快速找到解决方案有关。因此,我们通过一些启发式解决基本的旅行商问题,然后围绕该周期移动旅行者。
记录了各种构造方法和各种迭代改进方法。下面是一些例子(从学术到精彩的动画例子):
答案 2 :(得分:1)