图论相关代码(matlab)

Dijkstra算法步骤

(1)构造邻接矩阵

(2)定义起始点

(3)运行代码

Matlab 复制代码
M=[  0     5     9   Inf   Inf   Inf   Inf
   Inf     0   Inf   Inf    12   Inf   Inf
   Inf     3     0    15   Inf    23   Inf
   Inf     6   Inf     0   Inf     8     7
   Inf    12   Inf     5     0   Inf    14
   Inf   Inf   Inf   Inf   Inf     0    10
   Inf   Inf   Inf   Inf   Inf   Inf     0];
first=2;
last=4;
[m,n]=size(M);
L=zeros(1,m);
symbol=zeros(1,m);
direction=zeros(1,m);
for i=1:m
    if(i~=first)
        L(i)=inf;
    end
    direction(i)=first;
end
judge=1;
while judge
for i=1:m
    if(symbol(i)==0)
        min=L(i);
        temporary=i;
        break
    end
end
for i=1:m
    if(symbol(i)==0)
        if(L(i)<min)
            min=L(i);
            temporary=i;
        end
    end
end
k=temporary;
for j=1:m
    if(symbol(1,j)==0)
        if(M(k,j)==inf)
            continue;
        else
            if(L(k)+M(k,j)<L(j))
                L(j)=L(k)+M(k,j);
                direction(j)=k;
            end
        end
    end
end
symbol(k)=1;
num=0;
for i=1:m
    if(symbol(i)==1)
        num=num+1;
    end
end
if(num==m)
    judge=0;
end
end
p=last;
arrow=zeros(1,m);
arrow(1)=last;
i=2;
while p~=first
    arrow(1,i)=direction(p);
    i=i+1;
    p=direction(p);
end
distance=L(last);

floyd 算法代码

Matlab 复制代码
d=[inf 6 0 4 0 0 0
   0 inf 0 0 5 0 0
   4 7 inf 0 0 5 0
   0 0 4 inf 0 3 0
   0 0 2 0 inf 0 0
   0 0 0 0 4 inf 5
   0 0 0 0 6 0 inf];
[m,n]=size(d);
first=1;
last=7;
direction=zeros(m,m);
for i=1:m
    direction(:,i)=i;
end
for i=1:m
    for j=1:m
        for k=1:m
            small=min(d(i,k),d(k,j));
            if d(i,j)<small
                d(i,j)=small;
                direction(i,j)=direction(i,k);
            end
        end
    end
end
arrow=zeros(1,m);
arrow(1)=first;
i=2;
p=first;
while p~=last
    p=direction(p,last);
    arrow(i)=p;
    i=i+1;
end

生成树算法代码

Matlab 复制代码
M=[ 0 17 11 inf inf inf
    17 0 13 12 28 15
    11 13 0 inf 19 inf
    inf 12 inf 0 inf 16
    inf 28 19 inf 0 10
    inf 15 inf 16 10 0];
[m,n]=size(M);
X=zeros(m,n);
Y=zeros(m);
Z=zeros(m);
Y(1)=1;
for i=2:m
    Z(i)=i;
end
judge=1;
while judge
for i=1:m
    if(Y(i)~=0)
        for j=1:m
            if(Z(j)~=0)
                min=M(i,j);
                a=i;
                b=j;
            end
        end
    end
end
for i=1:m
    if(Y(i)~=0)
        for j=1:m
            if(Z(j)~=0)
                if(M(i,j)<min)
                    min=M(i,j);
                    a=i;
                    b=j;
                end
            end
        end
    end
end
Y(b)=b;
Z(b)=0;
X(a,b)=1;
X(b,a)=1;
c=0;
for i=1:m
    if(Y(i)~=0)
        c=c+1;
    end
end
if(c==m)
    judge=0;
end
end
相关推荐
IT科技那点事儿3 分钟前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
人工智能·安全
新智元11 分钟前
美 IT 业裁员狂飙 35%,「硅谷梦」彻底崩塌!打工人怒喷 PIP
人工智能·openai
新智元13 分钟前
乔布斯挚友去世!胰腺癌再夺硅谷天才,曾写下苹果「创世代码」
人工智能·openai
春末的南方城市16 分钟前
中山大学&美团&港科大提出首个音频驱动多人对话视频生成MultiTalk,输入一个音频和提示,即可生成对应唇部、音频交互视频。
人工智能·python·深度学习·计算机视觉·transformer
春末的南方城市19 分钟前
Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
人工智能·计算机视觉·自然语言处理·aigc·音视频
程序边界25 分钟前
全球人工智能技术大会(GAITC 2025):技术前沿与产业融合的深度交响
人工智能
OpenCSG32 分钟前
电子行业AI赋能软件开发经典案例——某金融软件公司
人工智能·算法·金融·开源
新加坡内哥谈技术38 分钟前
极客时间:在 Google Colab 上尝试 Prefix Tuning
人工智能
今天又学了啥44 分钟前
李飞飞World Labs开源革命性Web端3D渲染器Forge!3D高斯溅射技术首次实现全平台流畅运行
人工智能
极智视界1 小时前
分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
人工智能·yolo·数据集·分类算法·数据标注·classification·分类数据集