MATLAB图论合集(三)Dijkstra算法计算最短路径

news2024/9/25 13:20:50

本贴介绍最短路径的计算,实现方式为迪杰斯特拉算法;对于弗洛伊德算法,区别在于计算了所有结点之间的最短路径,考虑到MATLAB计算的便捷性,计算时只需要反复使用迪杰斯特拉即可,暂不介绍弗洛伊德的实现;此外,对于带有负权值的图,通过贝尔曼福特算法解决~


迪杰斯特拉算法的思想,通俗的归纳来说就是:从当前结点出发,寻找一个未与当前简历连接——且路径最小的点作为下一个寻找到的地址。有关结点是否建立连接,需要一个如下的矩阵来辅助记录。

 若还未建立连接,则将前驱标记为-1,距离记录为无穷~

至于Distance内,存放的是起点到当前结点的最短距离,这一距离可能会不断更新,直到寻找到最短的路径为止~

实现的具体底代码:

  • 第一种:
[P,d] = shortestpath(G, 9, 4)

如上代码中,P表示的9与4节点之间最短路径经过的结点,而d保存的是最短路径值的总和~

  • 第二种:
D = distances(G);
D(1,2);
D(9,4);

如上代码中,D是一个存储了任意两结点之间最短路径的矩阵,通过索引访问的方式,即可求出任意两点的最短路径~

此外,如下是计算求出指定节点指定距离内部的全部结点的实现方式:

[nodeIDs,dist] = nearest(G, 2, 10); 

 注意,上述几个函数从2017a版本后才能全部使用

如下是创建图并计算图的具体实现方式:

s = [9 9 1 1 2 2 2 7 7 6 6  5  5 4];
t = [1 7 7 2 8 3 5 8 6 8 5  3  4 3];
w = [4 8 3 8 2 7 4 1 6 6 2 14 10 9];
G = graph(s,t,w);
plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2) 

set( gca, 'XTick', [], 'YTick', [] );

[P,d] = shortestpath(G, 9, 4);

myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2); 
highlight(myplot, P, 'EdgeColor', 'g') ; 

结果如下,绿色即为最短路径:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/935058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搜索二叉树的算法解析与实例演示

目录 一.搜索二叉树的特性与实现1.特点2.实现二.搜索二叉树的性能 一.搜索二叉树的特性与实现 1.特点 二叉搜索树是特殊的二叉树,它有着更严格的数据结构特点: (1)非空左子树的所有键值小于其根结点的键值。 (2&…

讯飞AI-SparkDesk

网址:https://m.xfyun.cn/login?callbackaHR0cHM6Ly94aW5naHVvLnhmeXVuLmNuL2NoYXQ/aWQ9MTUzMzc1MjA&website_namesparkdesk

【C++题解】[NOIP2018]龙虎斗

P a r t Part Part 1 1 1 读题 题目描述 轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有 n n n个兵营(自左至右编号 1 − n 1-n 1−n),相邻编号的兵营之间相隔 1 1 1厘米,即棋盘…

springcloud初窥门径

一、概述 SprinfCloud组成部分 SpringCloud主流组件

【CSS】网站 网格商品展示 模块制作 ( 清除浮动需求 | 没有设置高度的盒子且内部设置了浮动 | 使用双伪元素清除浮动 )

一、清除浮动需求 ( 没有设置高度的盒子且内部设置了浮动 ) 绘制的如下模块 : 在上面的盒子中 , 没有设置高度 , 只设置了一个 1215px 的宽度 ; 在列表中每个列表项都设置了 浮动 ; /* 网格商品展示 */ .box-bd {/* 处理列表间隙导致意外换行问题一排有 5 个 228x270 的盒子…

Navisworks2020~2023安装包分享(附安装教程)

目录 一、软件介绍 二、下载地址 一、软件介绍 Navisworks是一款专业的建筑、工厂、机械和设备设计软件工具,旨在帮助项目相关方可靠地整合、分享和审阅详细的三维设计模型。它提供了一系列功能强大的工具,使设计师、工程师和建筑师能够更好地协作、沟…

代码随想录算法训练营第四十六天 | 139.单词拆分

代码随想录算法训练营第四十六天 | 139.单词拆分 139.单词拆分 139.单词拆分 题目链接 视频讲解 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 注意:不要求字典中出现的单词全部都使用,并且字典…

【效能平台】django项目中集成httprunner做接口测试补(五)

这里写目录标题 一、登录接口数据驱动测试1、定义登录api:api/login_api_form.yml2、定义login_testcases.yaml3、定义login_testcases.yaml4、debugtalk.py文件5、执行测试用例6、测试报告7、优先级:二、将httprunner集成到测试平台中一、登录接口数据驱动测试 1、定义登录a…

电脑视频编辑软件前十名 电脑视频编辑器怎么剪辑视频

对于大多数创作者而言,视频后期工作基本都是在剪辑软件上进行的。一款适合自己的视频剪辑软件,能够节省出大量的时间和金钱成本,让剪辑师省钱又省心。那么有关电脑视频编辑软件前十名,电脑视频编辑器怎么剪辑视频的相关问题&#…

【Python从入门到进阶】33、使用bs4获取星巴克产品信息

接上篇《32、bs4的基本使用》 上一篇我们介绍了BeautifulSoup的基本概念,以及bs4的基本使用,本篇我们来使用bs4来解析星巴克网站,获取其产品信息。 一、星巴克网站介绍 星巴克官网是星巴克公司的官方网站,用于提供关于星巴克咖啡…

收费文章怎么复制

1.复制这篇文章发现收费 2.电脑登录一个qq,截图找到这个屏幕视图 3.右边这个文字可以复制 4.这个只能识别一段一段复制

网卡重启,导致docker容器暴露端口都无法对外开放

公司内部网络ip冲突,重新分配了某个范围的ip后,修改网络信息(位于/etc/sysconfig/network-scripts目录下对应网卡)后,重启网卡(systemctl restart network);后面导致docker容器暴露的…

计算机网络-笔记-第三章-数据链路层

目录 三、第三章——数据链路层 1、数据链路层概述(帧) (1)封装成帧、差错检测、可靠传输(简单介绍) (2)CSMA/CD 2、封装成帧 (1)透明传输(…

JVM虚拟机:定位对象的两种方式

定位对象的方式 1、句柄池 2、直接指针 ‘句柄池 直接指针 在Java中,可以使用两种方式来定位对象:句柄池和直接指针。 1. 句柄池:在Java的句柄池模型中,Java虚拟机(JVM)会为每个对象创建一个句柄&#xff…

2022 ICPC 南京 M Drain the Water Tank(叉积 + 思维)

2022 ICPC 南京 M. Drain the Water Tank(叉积 思维) Problem - M - Codeforces 大意:给一个多边形 ,多边形充满水 , 点集逆时针给出 , 求最少的出水阀门的数量使得水可以全部流出。 思路:通过画图发现 &#xff0…

vector VS deque

1. vector与deque vector与动态数组相同,能够在插入或删除元素时自动调整自身大小,其存储由容器自动处理,vector通常占用多于静态数组的空间,因为要分配更多的内存以管理将来的增长,在每次插入元素的时,仅…

红外与可见光图像融合入门教学

红外与可见光图像融合入门教学 什么是红外与可见光图像融合论文DeepFuseDenseFuseRFN-NestFusionGANDDcGANAttentionFGANGANMcC 总结 博主目前马上进入研二阶段,也算是入门了红外与可将光图像领域,正好总结下,以供刚接触该领域的萌新们参考。…

ADC模块之HX711

今天,回顾了HX711模数转换模块,HX711模块经常用于电子秤的设计。 模数转换模块的输入有三种(HX711的输入为差分输入): HX711的驱动程序 #include "HX711.h"//********************************************…

自考《00058 市场营销学》2023年4月历年真题答案

自考科目列表,自考本科,题库,自学考试,历年真题。 1.某汽车制造商宣称“我们的汽车唯一的缺点就是生产得不够快”,该公司秉持的营销哲学是 A.产品导向 B.推销导向 C.顾客导向 D.生产导向 2.LM公司故意不履行和中间商合同约定的相关义务,不按时支付供货商的货款&…

Java入职第十一天,深入了解静态代理和动态代理(jdk、cglib)

一、代理模式 一个类代表另一个类去完成扩展功能,在主体类的基础上,新增一个代理类,扩展主体类功能,不影响主体,完成额外功能。比如买车票,可以去代理点买,不用去火车站,主要包括静态代理和动态代理两种模式。 代理类中包含了主体类 二、静态代理 无法根据业务扩展,…