利用Matlab实现【图论】中的图

news2024/12/24 3:30:52

目录

前言

一、图论是什么?

1.基本概念

2.表达形式

二、使用matlab作图

1.作无向图

2.作有向图

总结



前言

本文将讲解如何使用matlab中的函数实现最短路径算法,所提供代码仅供参考,严禁用于数模比赛中使用!


一、图论是什么?

在学习最短路径算法前,我们先了解一个基本概念——【图论】

1.基本概念

图论( Graph Theory )是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表
事物
,用连接两点的线表示相应两个事物间具有这种关系

 

  • 在图论中,每个节点称为顶点,如图中的1,2,3···; 连线称为边,边上标出的数字为边的权重(权重和线段的长度无关)。这里的图是我们从实际问题中抽象出来的模型,图上画的直线是为了简化问题,如果是表示两点间的道路的话,实际上可能是弯曲的

  • 顶点我们常用点集V表示,边用边集E表示,权重(点i和点j之间)—wij,图用顶点和边的集合G=(V,E)表示

  • 图中的边如果是单向箭头,表示有方向,构成的图称为有向图,如示例中的城市路线,是有方向的

  • 如果图里的边没有箭头,只有线,表示双向,构成的图称为无向图,比如通信光缆之类

  • 注意:权重不仅可以表示长度之类的,也可以表示时间、费用等概念

2.表达形式

我们通常使用邻接矩阵来表示顶点间的关系

邻接矩阵𝑊中第𝑖行第𝑗列的元素𝑤𝑖j :元素的下标表示顶点i—>j之间的关系,大小表示这两个点之间连线的权重。


二、使用matlab作图

1.作无向图

利用graph函数

%%matlab作无向图
clear,clc
%(1)无权重,(每条边的权重默认为1)
%函数graph(s,t);可在s和t中的对应节点之间创建边,并且生成一个图
%s 和 t都必须具有相同的元素数:这些节点必须都是从1开始的正整数,或都是字符串元胞数组
%编号最后从1开始,不要瞎编
s1=[1,2,3,4];
t1 = [2,3,1,1];
G1 = graph(s1,t1);
plot(G1)
% 下面的命令是在画图后不显示坐标
set(gca,'XTick',[],'YTick',[]);

如果我们想用文字描述顶点的话,可以使用元胞数组 

%注意字符串元胞数组是用大括号包起来的
s2={'学校','电影院','网吧','酒店'};
t2={'电影院','酒店','酒店','KTV'};

如果我们想设置每条边上的权重,可以直接加上权重向量即可或者使用邻接矩阵 a

w = [3,8,9,2];
G = graph(s,t,w);
%G.Edges.weight 表示图形对象G中所有边的权重值,'EdgeLabel'表示在图形上显示这些权重值
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2);
%有权重利用邻接矩阵绘图

% a=[0,3,9,2;
%    3,0,8,0;
%    9,8,0,0;
%    2,0,0,0];
%因为无向边两条边不管哪个点在前边上的权重都是一样的
a=[0,3,9,2;
   0,0,8,0;
   0,0,0,0;
   0,0,0,0];
%'upper'仅使用上三角矩阵来构造图
G = graph(a,'upper');

注意:这里每个顶点之间的边和权重都要一一对应!


2.作有向图

利用digraph函数

有向图和无向图的作法几乎相同,只不过是用digraph函数代替了graph函数

%%Matlab作有向图
%无权图 digraph(s,t)
s3=[1,2,3,4,1];
t3=[2,3,1,1,4];
G = digraph(s3,t3);
plot(G);
set(gca,'XTick',[],'YTick',[]);

%有权图 digraph(s,t,w)
w3=[2,4,5,10,5];
G = digraph(s3,t3,w3);
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2);
set(gca,'XTick',[],'YTick',[]);

%利用邻接矩阵a digraph(a)
a = [0,3,0,0;
     0,0,8,0;
     9,0,0,0;
     2,0,0,0];
%给每个顶点标注名称,int2str([1:4]')将整数1到4四个数转化为字符
s=cellstr(strcat('顶点',int2str((1:4)')));
%strcat把字符串水平串联起来
%strcat('顶点',int2str((1:4)'))把顶点和字符1到4拼起来
G = digraph(a,s);
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',2);
set(gca,'XTick',[],'YTick',[]);

总结

完结撒花🎇🎇🎆🎆👍

本文讲解了什么是图论以及如何利用Matlab创建图,有任何问题和补充欢迎大家留言

如果对你有帮助的话记得点赞,收藏,关注哟!

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

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

相关文章

Linux:进程管理,任务管理,监控系统

1,任务管理 从前台丢到后台:【ctrl】 z,如果正在使用vim,突然想干其他事情,但又不想关闭vim,只需要暂时将vim丢到后台等待即可(暂停)。 查看后台任务状态:jobs&#xff0…

许多人在网络上“裸奔”,你信吗?

现在网络的热议话题之一,是近年来不仅网络诈骗、电信诈骗比比皆是,而更加让人恐怖的是仅只一个QQ号码就可以查出你所有的个人信息。 ​在时下,我国个人隐私泄漏的现象比比皆是,而且不只是仅几大社交平台才存在着严重的漏洞。早前…

WPF 资源、引用命名空间格式、FrameworkElement、Binding、数据绑定

资源 对象级别独立文件 静态资源使用(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再去访问这个资源了。 动态资源使用(DynamicResource)使用指的是在程序运行过程中仍然会去访问资源。 显然,如果你确定…

【专题】全球商用服务机器人市场研究(2023)报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37366 近年来,随着人工智能、物联网和自动化技术的不断进步,商用服务机器人行业迅速崛起,展现出广阔的发展前景。从最初的实验室研发到如今的规模化应用,商用服务机器人已逐渐成为各行…

【解析几何笔记】3.向量分解定理

3. 向量分解定理 3.1 线性组合 有 n n n个向量 α 1 , α 2 , . . . , α n \pmb{\alpha}_{1},\pmb{\alpha}_{2},...,\pmb{\alpha}_{n} α1​,α2​,...,αn​,对应有 n n n个实数 λ 1 , λ 2 , . . . , λ n \lambda_{1},\lambda_{2},...,\lambda_{n} λ1​,λ2…

Springboot项目基础开发模式+注解

文章目录 web项目开发涉及基础servlettomcatstrutsssm架构SpringBoot架构tomcathibernate Springboot注解AAspectAutowiredAllargConstructorAround BBeanBuilder CConfigurationConditionalOnMissingBeanComponentComponentScanConfigurationPropertiesCrossOrigin DDocumente…

C语言——构造类型

构造类型 数据类型分类 结构体 结构体的定义 定义:自定义数据类型的一种,关键字 struct ,结构体类型的变量可以存储多个不同数据类型的数据。 定义格式: struct 结构体名 { 数据类型1 成员名称1; 数据类型2 成员名称2; … } 注…

Golang | Leetcode Golang题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; func isSelfCrossing(distance []int) bool {n : len(distance)// 处理第 1 种情况i : 0for i < n && (i < 2 || distance[i] > distance[i-2]) {i}if i n {return false}// 处理第 j 次移动的情况if i 3 && di…

Mac系统如何下载安装Photoshop软件mac的新版指南!

Photoshop&#xff08;简称PS&#xff09;是一款广受欢迎的图像处理工具&#xff0c;在设计、摄影、广告等领域广泛应用。对于Mac用户&#xff0c;安装Photoshop可能会涉及到一些特殊的步骤。本文将为你提供在Mac上安装Photoshop的详细教程及常见问题的解决方案。 一、准备工作…

由微软开源GraphRAG加持的AI智能体,让律师变得更强大!

随着人工智能大模型时代的到来&#xff0c;LLM大语言模型、RAG增强检索、Graph知识图谱、Prompt提示词工程等技术的发展日新月异&#xff0c;也让各行各业更加期待技术带来的产业变革。 比如&#xff0c;法律行业&#xff0c;虽然通用大模型已经能够适配一些法律场景&#xff…

从自动化到智能化:物联网技术在转转智能质检中心的应用

1 背景2 物联网介绍 2.1 开篇故事2.2 物联网是什么2.3 物联网的基本组成 3 物联网技术选型和落地方案 3.1 应用层协议选型3.2 Broker 选型3.3 QoS 消息质量选型3.4 Broker 的部署方案 4 结语5 参考链接 1. 背景 在转转智能质检中心&#xff0c;随着业务的不断发展&#xff0c…

MQ死信对列

面试题&#xff1a;你们是如何保证消息不丢失的&#xff1f; 1、什么是死信 死信就是消息在特定场景下的一种表现形式&#xff0c;这些场景包括&#xff1a; 1. 消息被拒绝访问&#xff0c;即消费者返回 basicNack 的信号时 或者拒绝basicReject 2. 消费者发生异常&#xff0…

vue3在高德地图中制作气象扇形雷达图

这是效果图&#xff0c;每隔22.5就会有一个扇形区域&#xff0c;有三层区域&#xff0c;第一层是距离圆点5km&#xff0c;第二层是10km&#xff0c;第三层是50km。 第一步&#xff1a;高德地图中绘画圆 // 构造矢量圆形let circle new AMap.Circle({center: position.value, …

rv1126-rv1109-读取mipi摄像头ID

1.有那个一个需求,需要读取mipi摄像头ID 起初,我以为很简单,实际非常复杂; 2.移植原有的逻辑,就是操作I2C函数读取ID寄存器,但是一直失败; 3.然后发现是电源没有打开;然后电源又是在DTS里面配置的 4.配置电源后发现要配置时钟 5.配置时钟后发现还要配置摄像头的上…

Vue框架学习笔记-7

Vue-cli项目中的mixin Vue-cli 项目中的 mixin 是一种强大的功能&#xff0c;允许你在多个组件之间共享可复用的方法和/或选项。Mixin 本质上是一个对象&#xff0c;它可以包含组件选项中的任意选项&#xff0c;如数据、方法、生命周期钩子等。当组件使用 mixin 时&#xff0c…

浙商证券社招入职人才测评:语言数字逻辑性格北森测评笔试题库高分答案、通关技巧

浙商证券作为一家综合性证券公司&#xff0c;其社会招聘的待遇情况包括但不限于以下几个方面&#xff1a;首先&#xff0c;公司提供具有竞争力的薪酬体系&#xff0c;其中应届生的平均薪资待遇大约在12K-20K之间&#xff0c;并且可能发放20个月的薪资&#xff0c;总包大约在25万…

好书推荐!这本Transformer书红的发紫,浅显易懂掌握大模型NLP技术!(附文档)

在大数据和人工智能时代&#xff0c;机器学习和深度学习已经成为各行各业解决问题的有效方法&#xff0c;自然语言处理&#xff0c;是深度学习的重要应用领域之一。 而自然语言处理这个研究领域在过去20年中发生了翻天覆地的变化&#xff0c;从传统的自然语言处理方法到深度学…

EcoDev Studio 与 gitlab【拉去项目,切换分支,再修改提交】

1 安装git工具 https://blog.csdn.net/mukes/article/details/115693833 2 创建空项目 3 推送gitlab 1、进入本地该项目目录下&#xff0c;右键Git Bash Here打开git命令窗口 2、初始化本地仓库&#xff1a; git init将本地项目的所有文件添加到暂存区&#xff1a; git a…

Django | 从中间件的角度理解跨站请求伪造(Cross-Site Request Forgey)[CSRF攻击]

文章目录 切入点案例测试views.py测试代码templates模板下的html文件配置路由运行服务 出现CSRF报错解决CRSF报错再次运行服务 查看结果 切入点 某些恶意网站上包含链接、表单按钮或者]avaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作 Gj…

好用的无线可视耳勺推荐:四大超有性价比产品集锦!

在生活中&#xff0c;耳部清洁是我们常常会关注却又容易忽视细节的一项日常护理。传统的挖耳勺比如棉签等等&#xff0c;有着不可视的局限性和操作失误的潜在风险。随着科技发展&#xff0c;无线可视耳勺逐步走进我们的视野&#xff0c;它结合了挖耳功能和内置摄像头&#xff0…