码迷,mamicode.com
首页 > 其他好文 > 详细

Matlab实现dijkstra

时间:2018-06-23 22:37:46      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:ros   sort   tla   博客   fun   算法   col   while   function   

  这次我第一次写博客,起了一个特别中二的名字fancyaboy_(:з」∠)_。

  fancyaboy还有三天就要考算法了,今晚在复习图算法的时候,突然想到以前打建模在网上没有找到能用的dijkstra算法的matlab代码。

  就当做是复习,今晚写了一个matlab版的dijkstra。

  因为觉得matlab实现堆比较麻烦,就直接用sort来实现最小堆了,不喜忽喷_(:з」∠)_

  代码如下

function [load, w] = dijkstra(Matrix, src, dst)
Matrix(isnan(Matrix)) = inf;
N = size(Matrix, 1);
d = zeros(1, N);
pred = zeros(1, N);
for i = 1:N
   d(i) = inf; 
   color(i) = W;
end
d(src) = 0;
pred(src) = 0;
[~, index] = sort(d);
temp = repmat(B, 1, length(d));
while(~strcmp(color, temp))
    for j = 1:length(d)
        if color(index(j)) == W
            u = index(j);
            break;
        end
    end
    index(j) = [];
    for  i = 1:length(index)
        v = index(i);
        if color(v) == B
            continue;
        end
        if d(u) + Matrix(u, v) < d(v)
            d(v) = d(u) + Matrix(u, v);
            pred(v) = u;
        end
    end
    [~, index] = sort(d);
    color(u) = B;
end
w = d(dst);
i = dst;
j = 2;
Rload(1) = dst;
while(pred(i) ~= src)
    Rload(j) = pred(i);
    i = pred(i);
    j = j+1;
end
Rload(j) = pred(i);
N = size(Rload, 2);
for i = 1:N
    load(i) = Rload(N-i+1);
end

  操作系统已经凉了,fancyaboy去复习算法了o(╥﹏╥)o

Matlab实现dijkstra

标签:ros   sort   tla   博客   fun   算法   col   while   function   

原文地址:https://www.cnblogs.com/1623-1017/p/9218892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!