Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 算法:通过m个不同节点的最短路径_Algorithm_Complexity Theory - Fatal编程技术网

Algorithm 算法:通过m个不同节点的最短路径

Algorithm 算法:通过m个不同节点的最短路径,algorithm,complexity-theory,Algorithm,Complexity Theory,假设我有一个有n个顶点的加权图,并且给出了起点。最短路径定义为权重之和最小的路径 如何找出通过m个不同顶点的最短路径?(每个顶点可以访问一次或多次。也就是说,在已访问的顶点集中有m个顶点,但每个顶点可能已访问多次。) 请注意,数字m已给出,但具体的m个顶点未给出。(这些m个顶点是通过算法选择的) 这是一个NP难问题吗?我们可以减少(HPP)解决您的问题:哈密顿路径是有向未加权图中的一条路径,它恰好访问每个顶点一次。若要解决HPP实例,请将该图转换为每边权重为1的加权图,将m设置为|V |,然后解

假设我有一个有n个顶点的加权图,并且给出了起点。最短路径定义为权重之和最小的路径

如何找出通过m个不同顶点的最短路径?(每个顶点可以访问一次或多次。也就是说,在已访问的顶点集中有m个顶点,但每个顶点可能已访问多次。)

请注意,数字m已给出,但具体的m个顶点未给出。(这些m个顶点是通过算法选择的)

这是一个NP难问题吗?

我们可以减少(HPP)解决您的问题:哈密顿路径是有向未加权图中的一条路径,它恰好访问每个顶点一次。若要解决HPP实例,请将该图转换为每边权重为1的加权图,将
m
设置为
|V |
,然后解决您的问题。这是一条路径,因此您的问题是NP难的,因为HPP是NP完全的


它也是NP完全的,因为它显然是在NP中。因此,从您的问题到任何其他NP完全问题都有多项式时间的缩减。解决旅行推销员问题的算法可能最适合您:请参见此处。

这感觉应该是关于如何“最短”的定义?我投票结束这个问题,因为感觉它应该在@MoB上。每条边都有一个权重,最短路径被定义为权重之和最小的路径。在已访问的节点集中,正好有m个节点,但每个节点可能已访问多次。这是tr的推广avelling-Saleser问题(其中m=n),这意味着它是np难的。