假设我有 10 分。我知道每个点之间的距离。
我需要找到通过所有点的最短路径。
我尝试了几种算法(Dijkstra,Floyd Warshall,...),它们都为我提供了起点和终点之间的最短路径,但它们并没有制定一条包含所有点的路线。
排列工作正常,但它们太耗费资源。
你能建议我研究什么算法来解决这个问题?或者是否有记录的方法可以使用上述算法来做到这一点?
假设我有 10 分。我知道每个点之间的距离。
我需要找到通过所有点的最短路径。
我尝试了几种算法(Dijkstra,Floyd Warshall,...),它们都为我提供了起点和终点之间的最短路径,但它们并没有制定一条包含所有点的路线。
排列工作正常,但它们太耗费资源。
你能建议我研究什么算法来解决这个问题?或者是否有记录的方法可以使用上述算法来做到这一点?
正如其他人所提到的,这是 TSP 的一个实例。我认为在乔治亚理工学院开发的Concord是当前最先进的求解器。它可以在几秒钟内处理超过 10,000 个点。它还有一个易于使用的 API。
我认为这就是你正在寻找的,实际上:
在计算机科学中,Floyd-Warshall 算法(有时称为 WFI 算法[需要澄清]、Roy-Floyd 算法或只是 Floyd 算法)是一种图分析算法,用于在加权图中(具有正边权重或负边权重)寻找最短路径)。算法的单次执行将找到所有顶点对之间最短路径的长度(总权重),尽管它不返回路径本身的详细信息
在“路径重建”小节中,它解释了存储“路径”所需的数据结构(实际上,您只需存储要访问的下一个节点,然后根据需要轻松重建所需的任何路径)。