最短路径算法的matlab代码
时间: 2023-11-08 18:49:13 浏览: 273
以下是一个使用Dijkstra算法求解最短路径的Matlab代码示例:
```matlab
function [dist, path] = Dijkstra(adjMatrix, startNode)
numNodes = size(adjMatrix, 1);
% 初始化距离数组
dist = inf(1, numNodes);
dist(startNode) = 0;
% 初始化路径数组
path = cell(1, numNodes);
% 初始化已访问节点集合
visited = false(1, numNodes);
for i = 1:numNodes
% 在未访问节点中找到距离最小的节点
[~, currNode] = min(dist .* ~visited);
visited(currNode) = true;
% 更新与当前节点相邻节点的最短距离
for j = 1:numNodes
if adjMatrix(currNode, j) > 0 && ~visited(j)
newDist = dist(currNode) + adjMatrix(currNode, j);
if newDist < dist(j)
dist(j) = newDist;
path{j} = [path{currNode}, j];
end
end
end
end
end
```
这个代码使用邻接矩阵表示图,`adjMatrix`是一个二维矩阵,其中`adjMatrix(i, j)`表示节点`i`到节点`j`的边的权重。`startNode`是起始节点的索引。
运行该函数后,将返回从起始节点到每个节点的最短距离数组`dist`和路径数组`path`。例如,`dist(3)`表示从起始节点到节点3的最短距离,`path{3}`表示从起始节点到节点3的最短路径。
请注意,这只是一个简单的实现示例,可能不适用于大规模的图。在实际应用中,可能需要对算法进行优化或使用更高效的数据结构来表示图。
阅读全文