Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 访问某些顶点时在加权图中寻找最短路径_Algorithm_Graph_Path Finding - Fatal编程技术网

Algorithm 访问某些顶点时在加权图中寻找最短路径

Algorithm 访问某些顶点时在加权图中寻找最短路径,algorithm,graph,path-finding,Algorithm,Graph,Path Finding,我试图在无向加权图中找到从A到Z的最短路径。但是,生成的路径也应该经过一组无序的顶点(比如B、C和D)。 我还没有找到这个确切问题的任何答案,但我遇到过类似的问题,这些问题将这个问题定义为NP难问题(因此就我所知,并不是每个图都能解) 那么,是否还有一种算法,它至少会尝试找到一条路径,该路径访问所有这些顶点和断点,以防在用尽合理数量的选项后无法找到路径 如果没有,在我的例子中,另一种方法是对这些必须访问的顶点进行排序。有没有更好的方法来找到路径,而不仅仅是将路径拆分并计算每个段(a->B、B->

我试图在无向加权图中找到从A到Z的最短路径。但是,生成的路径也应该经过一组无序的顶点(比如B、C和D)。
我还没有找到这个确切问题的任何答案,但我遇到过类似的问题,这些问题将这个问题定义为NP难问题(因此就我所知,并不是每个图都能解)

那么,是否还有一种算法,它至少会尝试找到一条路径,该路径访问所有这些顶点和断点,以防在用尽合理数量的选项后无法找到路径

如果没有,在我的例子中,另一种方法是对这些必须访问的顶点进行排序。有没有更好的方法来找到路径,而不仅仅是将路径拆分并计算每个段(a->B、B->C等)的最佳路径?

给定一组顶点S和原点垂直v,您可以使用深度优先搜索从距离v最近到最远的顺序来排序S中的顶点,即制作一个距离表

创建该表实际上会生成一个新的图,该图仅由O(nm)中的顶点S组成,其中n是图的大小,m是集S的大小

现在,您正在寻找通过此新图的所有顶点的最短路径。因此,您的问题相当于较小图上的旅行商问题

请注意,通过以下方式强制执行旅行商算法的结束点是相当简单的


现在由您选择一个应用于较小图形的选项。

应该可以。谢谢