MATLAB·迪杰斯特拉(Dijkstra)算法-权值矩阵实现,运行的时候有问题,谁帮我看下哪里错了

function [distance, path] = Dijk(w,start,aim)

% w-权值矩阵,start-起点,aim-终点

n=length(w);% 节点数

D=w(start,:);

visit=ones(1:n); visit(start)=0;

parent =zeros(1,n);% 记录每个节点的上一个节点

path=[];

for i=1:n-1;

    temp=[];

    for j=1:n

        if visit(j)

            temp =[temp inf];

        end

    end

    [value,index]=min(temp);

    visit(index)=0;

    for k=1:n;

        if D(k)>D(index)+ w(index,k)

            D(k)=D(index)+ w(index,k);

            parent(k)=index;

        end

    end

end

distance=D(aim);

t=aim;

while t~=start && t>0

    path =[t,path];

    p=parent(t);t=p;

end

path =[start,path];

end

    原文作者:Dijkstra算法
    原文地址: https://blog.csdn.net/weixin_42640980/article/details/80960659
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞