当前位置: 首页 > news >正文

数模打怪(八)之图论模型

一、作图

图的数学语言描述:

G( V(G), E(G) ),G(graph):图,V(vertex):顶点集,E(edge):边集

1、在线作图

https://csacademy.com/app/graph_editor

2、matlab作图

%1、无权重
%graph(s,t): 可在s和t的对应节点之间生成边,从而连成一个图
%s和t必须有相同的元素个数,这些元素的值是1,2,3...(连续正整数),或者是字符串元胞数组s1=[1,2,3,4]
t1=[2,3,1,1]
G1=graph(s1,t1)
plot(G1)s2=["学校","电影院","网吧","酒店"]
t2=["电影院","酒店","酒店","KTV"]
G2=graph(s2,t2)
plot(G2,'LineWidth',2) %设置线宽
%set(gca,'XTick',[],'YTick',[]); %画图不显示坐标%2、有权重
%graph(s,t,w): 在s和t中的对应节点之间生成全中为w的边,从而生成一个图
s=[1,2,3,4]
t=[2,3,1,1]
w=[3,8,9,2]
G=graph(s,t,w)
%'EdgeLabel' 是一个参数,用于指定边的标签
%G.Edges.Weight 获取图 G 中每条边的权重,并将这些权重作为边的标签进行显示
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2)
set(gca,'XTick',[],'YTick',[])%有向图,把graph换成digraph即可
s1=[1,2,3,4,1,2]
t1=[2,3,1,1,4,2]
G1=digraph(s1,t1)
plot(G1)

二、Dijkstra算法计算最短路径

1、计算方法(流程图)

 关键点:

  • 贪心策略:每次选择当前距离起点最近的点,这个选择是最优的,逐步扩展最短路径集合。
  • 优先队列:通常使用一个优先队列(如最小堆)来高效地找到当前距离最近的点。

2、该算法的缺点

迪杰斯特拉算法的一个缺点:

不能处理负权重(虽然可以用于有向图) 

3、matlab代码

(1)计算最短路径

 (2)计算距离矩阵 

 (3)找出给定范围内的所有点

 

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)
myplot=plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2) %将图赋给一个变量
highlight(myplot,P,'EdgeColor','red') %在图中高亮出最短路径
set(gca,'XTick',[],'YTick',[])
[P,d]=shortestpath(G,9,4)%求出任意两点的最短路径矩阵
D=distances(G)
D(1,2) %1->2的最短路径
D(9,4) %9->4的最短路径%找出给定范围内的所有点 nearest(G,s,d)
%返回图G中与节点s的距离在d之内的所有节点
[nodelDs,dist]=nearest(G,2,10)

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux第六节课yum与vim
  • vue3中Cesium离线地图
  • 【未来餐饮】 配送设置
  • day06
  • Android SurfaceFlinger——GraphicBuffer的生成(三十二)
  • Leetcode—74. 搜索二维矩阵【中等】
  • 温故而知新-C++程序员的不平凡挑战
  • 4.1.1、操作系统的概述
  • 天气预报的爬虫内容打印并存储用户操作
  • c程序杂谈系列(加减乘除模篇)
  • 【前端element-ui】对于封装el-select和checkbox-group的多选控件导致数据双向绑定失败问题的处理
  • Python基础知识笔记——常用函数
  • 机械拆装-基于Unity-本地数据持久化
  • Python面试整理-数据处理和分析
  • 丹摩智算:如何在云端开发一个AI应用——基于UNet的眼底血管分割案例
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • es6
  • ES6核心特性
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • javascript 总结(常用工具类的封装)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • OSS Web直传 (文件图片)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 跨域
  • 前端性能优化——回流与重绘
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • const的用法,特别是用在函数前面与后面的区别
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #### golang中【堆】的使用及底层 ####
  • ###STL(标准模板库)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (1)Android开发优化---------UI优化
  • (35)远程识别(又称无人机识别)(二)
  • (js)循环条件满足时终止循环
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)测试工具
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十八)SpringBoot之发送QQ邮件
  • (算法)硬币问题
  • (转) ns2/nam与nam实现相关的文件
  • (转)h264中avc和flv数据的解析
  • ***测试-HTTP方法
  • ***利用Ms05002溢出找“肉鸡
  • .axf 转化 .bin文件 的方法
  • .net Application的目录
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 事件模型教程(二)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET使用存储过程实现对数据库的增删改查
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • [Angular] 笔记 18:Angular Router