Dijkstra算法MATLAB代码
时间: 2024-06-11 17:01:41 浏览: 18
Dijkstra算法是一种用于解决单源短路径问题的经典算法。下面是一个简单的Dijkstra算法的MATLAB代码示例:
```matlab
function [dist, path] = dijkstra(graph, start)
% 初始化距离数组
n = size(graph, 1);
dist = inf(1, n);
dist(start) = 0;
% 初始化路径数组
path = cell(1, n);
for i = 1:n
path{i} = [start];
end
% 初始化已访问节点集合
visited = false(1, n);
% 运行Dijkstra算法
for i = 1:n
% 找到当前距离最小的节点
[~, u] = min(dist .* ~visited);
% 标记该节点为已访问
visited(u) = true;
% 更新与该节点相邻节点的距离和路径
for v = 1:n
if graph(u, v) > 0 && ~visited(v)
if dist(u) + graph(u, v) < dist(v)
dist(v) = dist(u) + graph(u, v);
path{v} = [path{u}, v];
end
end
end
end
end
```
这段代码实现了Dijkstra算法,输入参数`graph`是一个邻接矩阵,表示图的连接关系;`start`是起始节点的索引。输出结果`dist`是起始节点到各个节点的最短距离数组,`path`是起始节点到各个节点的最短路径数组。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)