MATLAB 图论 Dijkstra算法以及Floyd算法

Dijkstra算法代码来源于 作者:无名小卒1990

Floyd算法,来源于 小石老师课程资源

视频学习

Dijkstra算法原理

https://www.bilibili.com/video/BV1QK411V7V4?from=search&seid=16592423916000157660

Floyd算法原理

https://www.bilibili.com/video/BV1Mt411x7CH?t=594&p=6

Dijkstra

在这里插入图片描述

例如上图,从D出发,到各点的距离:

D[5 9 inf 0 15 6 inf], (ACDEFG排序)

找出矩阵D[ ]中最小的值,离D最近的是A节点,再从A节点出发,到B节点的

距离为7,而5+7>9,所以D[5 9 inf 0 15 6 inf]不需要更新。A节点标记已经遍

历,并给其赋值为inf,即D[inf 9 inf 0 15 6 inf]。

继续重复找出矩阵D[ ]中最小值,重复上述操作,直到所有节点都遍历过。

Dijkstra源程序:

主函数 tulun1.m

weight = input('please enter the weight:');
start = input('please enter the start:');
terminal = input('please enter the terminal:');
          [dis, path]= Dijk(weight,start, terminal)

Dijkstra函数 Dijk.m

%% Dijkstra算法函数
function [ distance path] = Dijk( W,st,e )
%DIJK Summary of this function goes here
%   W  权值矩阵   st 搜索的起点   e 搜索的终点
n=length(W);%计算节点数
D = W(st,:);%记录起点到各点距离,此时,为初始时刻,
  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值