访问有向完整加权图中所有顶点的最短路径

时间:2015-05-24 02:35:50

标签: algorithm matlab graph

给定:完全有向加权图。所有重量均为正值。是否有任何简单的方法(启发式?)来找到访问所有顶点的最短(在权重方面)路径?顶点数约为25。 这个问题似乎与非对称旅行推销员很接近,但我并不要求这条道路成为循环。

1 个答案:

答案 0 :(得分:2)

我会推荐K-shortest path方法:

http://www.mathworks.com/matlabcentral/fileexchange/32513-k-shortest-path-yen-s-algorithm

我认为这是你最好的选择......这是一个例子:假设你有8个节点,需要尽可能以最短的路径从节点1到节点8。假设所有节点彼此连接(即,节点1连接到节点2:8,依此类推)。您必须根据您的问题生成“成本矩阵”。

costMatrix = rand(8);
[shortestPath, cost] = dijkstra(costMatrix,1,8);

% Alternatively, return the 10 shortest paths from point 1 to 8:
[shortestPaths, costs] = kShortestPath(costMatrix,1,8,10);

成本矩阵中的位置(i,j)是从节点i到节点j的成本。如果costMatrix(i,j) = inf;节点i和节点j之间没有连接。

在研究隐藏的马尔可夫模型之后,我发现了许多潜在的问题 - 排放矩阵很难定义,并且您可能会遇到在单个“路径”中进入“状态”两次或更多次的问题。 “使用k最短路径时,不会发生此错误。