想象一下,你有3个顶点:S,A和B. 现在,假设我们需要找到从S到A和B的最短路径。最简单的方法是找到哪个点更接近于S:A或B.如果您的图实际上有一些空间数据,则可以使用顶点的坐标来近似此值,否则,您将不得不从S到每个目的地获得最短路径。选择最近的目的地,在这种情况下,让我们说这是A,然后在那里旅行。现在你唯一要去的地方是B.计算A到B的最短路径,然后去那里。
现在,在多于2个目的地的情况下,您可以递归执行此操作。我不知道C++,但这里的一些伪代码,可以让你开始
function pathThrough(startNode,destinationNodes[])
closestNode = getClosestNode(startNode,destinationNodes)
newDestinations = removeFromArray(destinationNodes,closestNode)
return joinPaths(getShortestPath(startNode,closestNode),pathThrough(closestNode,newDestinations.))
的closestNode和getShortestPath功能,你可以使用任何搜索算法适合您的图表中,A *,Dijkstra算法,...
是的,正如我所说我知道如何使它成为TSP问题,但我无法理解如何将concrode的求解器集成到我的C++程序中(如果可能的话)。也AFAIK concrode是一个确切的求解器,而不是一个启发式解算器,我认为... – GalDude33