matlab迪杰斯特拉算法代码
时间: 2023-11-07 18:06:16 浏览: 48
以下是Matlab实现的Dijkstra算法代码,其中graph是一个邻接矩阵,表示图的连接情况,start表示起点,end表示终点:
```matlab
function [path, dist] = dijkstra(graph, start, end)
n = size(graph, 1);
visited = false(1, n);
dist = inf(1, n);
prev = zeros(1, n);
dist(start) = 0;
for i = 1:n
u = find(!visited & (dist == min(dist)));
if (u == end)
break;
end
visited(u) = true;
for v = 1:n
if (graph(u, v) && !visited(v))
alt = dist(u) + graph(u, v);
if (alt < dist(v))
dist(v) = alt;
prev(v) = u;
end
end
end
end
path = [];
u = end;
while (prev(u) != 0)
path = [u path];
u = prev(u);
end
if (path(1) != start)
path = [];
end
if (dist(end) == inf)
dist = [];
end
end
```