最短路dijkstra算法的matlab代码
时间: 2023-10-20 15:46:47 浏览: 150
当然可以!以下是使用Dijkstra算法求解最短路径的MATLAB代码示例:
```matlab
function [dist, path] = dijkstra(adjMatrix, startNode)
numNodes = size(adjMatrix, 1);
% 初始化距离数组
dist = inf(1, numNodes);
dist(startNode) = 0;
% 初始化路径数组
path = cell(1, numNodes);
path{startNode} = startNode;
% 创建一个标记数组,用于记录节点是否已被访问
visited = false(1, numNodes);
% 运行Dijkstra算法
for i = 1:numNodes-1
% 找到当前距离最小的节点
[~, currentNode] = min(dist .* ~visited);
visited(currentNode) = true;
% 更新与当前节点相邻的节点的距离
neighbors = find(adjMatrix(currentNode, :));
for j = neighbors
if ~visited(j) && dist(currentNode) + adjMatrix(currentNode, j) < dist(j)
dist(j) = dist(currentNode) + adjMatrix(currentNode, j);
path{j} = [path{currentNode}, j];
end
end
end
end
```
使用示例:
```matlab
% 定义一个邻接矩阵表示图的连接关系
adjMatrix = [
0 3 0 4 0;
3 0 5 0 0;
0 5 0 2 6;
4 0 2 0 1;
0 0 6 1 0
];
% 调用Dijkstra算法求解最短路径
[startNode, endNode] = deal(1, 5);
[dist, path] = dijkstra(adjMatrix, startNode);
% 输出结果
disp(['从节点', num2str(startNode), '到节点', num2str(endNode), '的最短距离为:', num2str(dist(endNode))]);
disp(['最短路径为:', num2str(path{endNode})]);
```
这段代码实现了Dijkstra算法的逻辑,并且可以根据输入的邻接矩阵和起始节点,求解出最短路径的距离和路径。希望能对你有所帮助!
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![text/plain](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)