数学建模----图与网络模型

news2025/1/17 21:32:36

目录

一.图的基本概念与数据结构

1.基本概念

 2.图与网络的数据结构

 1.邻接矩阵表示法

2.关联矩阵

 3.Matlab工具箱简介

 1.图的生成

4.问题讨论

1.最短路问题

2.最小生成树问题


一.图的基本概念与数据结构

1.基本概念

        点对应于研究对象,根据关系将一些点对应相连,不考虑点的位置与连线的曲直长短,这样形成的一个关系结构就是一个图。记为G=(V,E),V为顶点集,E是以上述连线为元素的边集。

        如果个边都加上方向,则称为有向图,否则称为无向图。如果有的边有方向,有的边无方向,则称为混合图。

点的度:

        (1)定义(1)在无向图中,与顶点v关联的边的数目(环算两次)称为v的度,记为d(v)。

        (2)在有向图中,从顶点v引出的弧的数目称为v的出度,记为d^{+}(v)

                  从顶点v引入的弧的数目称为v的入度,记为d^{-}(v),d(v)=d^{+}(v)+d^{-}(v)称为v的度

 2.图与网络的数据结构

        计算机中描述图与网络有两种方法:邻接矩阵表示法和关联矩阵表示法。

        下列讨论中,首先假设G=(V,E)是一个简单无向图,顶点集合V = \left \{ v_{1},L,v_{n} \right \},边集E=\left \{ e_{1},L,e_{m} \right \},记\left | V \right | =n,\left | E \right | =m

 1.邻接矩阵表示法

        邻接矩阵是表示顶点之间相邻关系的矩阵,邻接矩阵记作W = (w_{ij})_{n'n},

当G为赋权图时:

当G为非赋权图时: 

2.关联矩阵

        对于无向图G,其关联矩阵M=(m_{ij})其中,若顶点v_{i}与边e_{j}关联m_{ij}=1;反之m_{ij}=0

 3.Matlab工具箱简介

 1.图的生成

  • Graph:无向图
  • Digraph:有向图
  • G = graph ----创建空的无向图对象
  • G = graph(A)----使用邻接矩阵A创建赋权无向图。
  • G = graph(A,nodes) ----- 试用邻接矩阵A和节点名称nodes创建赋权无向图。
  • G = graph(s,t)---使用节点对组s,t创建无向图。
  • G = graph(s,t,weights)---使用节点对组s,t和权重向量weights创建赋权无向图。
  • G = graph(s,t,weights,nodes)---使用字符向量元胞数组nodes指定节点名称
  • G = graph(A,[nodes],type) ----- 仅使用邻接矩阵A的上或下三角形阵构造赋权图,type可以是'upper'或'lower'。

2.小tip

  • nodes = cellstr(strcat('v',int2str([1:6]')))%%创建节点符号

.

 

4.问题讨论

1.最短路问题

        (1)两个指定顶点之间的最短路径

        问题如下,给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线。

        构造赋权图 G =(V,E,W),其中顶点集V =\left \{ v_{1},L,v_{n} \right \} , 这里 v_{1},L,v_{n} 表示各个小城镇,E为边的集合,邻接矩阵W = (w_{ij})_{n'n},这里 w_{ij}表示顶点v_{i}v_{j}之间直通铁路的距离,若顶点 v_{i}v_{j}之间无铁路,则 w_{ij}= ?\propto。问题就是赋权图G中指定的两个顶点u_{0},v_{0} , 间的具有最小权的路。这条路叫做u_{0},v_{0}间的最短路,它的权叫做 u_{0},v_{0}的距离,亦记作d(u_{0},v_{0})

        求解最短路的问题,常用算法为狄克斯特拉(Dijkstra)算法

Dijkstra算法的基本思想是:

  • 采用二维数组邻接矩阵的形式储存图并将图初始化;
  • 选择其中一个顶点作为计算最短路径的起点。
  • 构造一个d一维数组dis[n],其中n是顶点个数,dis用来记录最短路径距离。初始化dis,其值为图中各点到起点的直接距离(即邻接顶点记为其权值,不相邻的顶点记为∞);
  • 每次中dis数组中找出最小值,该值就是起点到该点的最短路径距离,(可以将该点加一个标志位已记录该点路径已确定);
  • 在加入了一个新的确定了点之后就需要更新dis数组,看其余点能否通过这个确定的点到达起始点且距离能够更短。
  • 重复4、5步,直到所有点都找到了最短路径

(有向图)  已知某人要从出发去旅行,目的地及其交通路线见图4.6所示,线侧数字为所需费用。求该旅行者到目的地的费用最小的旅行路线。

clc, clear, close all
E = [1,2,6; 1,3,3; 1,4,1; 2,5,1; 3,2,2; 3,4,2; 4,6,10; 5,4,6
    5,6,4; 5,7,3; 5,8,6; 6,5,10; 6,7,2; 7,8,4; 9,5,2; 9,8,3];
G = digraph(E(:,1), E(:,2), E(:,3));
[path, d] = shortestpath(G, 1, 8, 'method','positive')
p = plot(G,'EdgeLabel',G.Edges.Weight,'Layout', 'circle');
highlight(p,path,'EdgeColor','r','LineWidth',1.5)

利用MATLAB程序求得v_{1}v_{8}的费用最小路径为v_{1}\rightarrow v_{3}\rightarrow v_{2}\rightarrow v_{5}\rightarrow v_{8},对应的最小费用为12。

 Dijkstra算法能否求任意两个顶点对之间的最短路?

具体方法——每次以不同的顶点作为起点,用Dijkstra算法求出从该起点到其余顶点的最短路径,反复执行n-1(n为顶点个数)次这样的操作,就可得到每对顶点之间的最短路。

 由于这种方法太过麻烦,引入另一算法

(二)所有顶点对之间最短路的---Floyd算法

        Floyd算法允许赋权图中包含负权的边或弧,但是,对于赋权图中的每个圈C,要求圈C上所有弧的权总和为非负。

        Floyd算法包含三个关键算法:求距离矩阵、求路径矩阵、最短路查找算法。

1.求距离矩阵的算法

 1,2,3,,,,,,,,k,k+1,,,,,,,n每增加一个单位相当于多加入一个点

例如A1(中间不经历节点):v0->v1;A2(中间经历过的节点小于等于1):v0->v1 ,v0->v1->v2

2.最小生成树问题

2.1基本概念

        连通的五圈图叫做树,记为T;其度为1的顶点称为叶子顶点;显然有边的树至少有两个叶子顶点。

        若图G=(V(G),E(G))和树T = (V(T),E(T))满足V(G) = V(T),E(T)属于E(G),则称T是G的生成树。图G连通的充分必要条件为G有生成树,一个连通的生成树很多。

 

 两种算法:

  • Kruskal算法
  • Prim算法

 

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

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

相关文章

第14章 多数据库支持之MySql

对于一个工程性程序而言,是否支持对多数据库的CURD操作,不是必须的,只是为了预防程序部署和运行过程中如果因为版权问题而产生的额外成本而预留的退路。对于移动设备的前后端分离程序而言,如果数据库需要部署到移动设备中&#xf…

【UE4 第一人称射击游戏】42-消耗和重新装载“M4A1”弹药

上一篇:【UE4 第一人称射击游戏】41-让“M4A1”拥有独立的弹药系统本篇效果:可以看到当玩家拾取了“M4A1”后,实现了重新装弹的功能,与“AK47”的弹药系统是相互独立的。步骤:打开“ThirdPersonCharacter”&#xff0c…

PHP session反序列化漏洞原理解析

什么是session 官方Session定义:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。主要有以下特点: session保存的位置是在服务器端 session通常是要配合cookie使用 因为HTTP…

Docker Swarm NFS 数据持久化存储

目录一、Swarm 集群部署二、NFS 服务部署三、Swarm 使用 NFS3.1 通过 Volume3.1.1 创建 Volume3.1.2 使用 Volume3.1.3 验证数据共享特性3.2 通过 Docker Stack3.2.1 创建 YAML 文件3.2.2 使用 YAML 文件3.2.3 验证数据共享特性一、Swarm 集群部署 可参考我前面的博客《基于 L…

从数据到价值,DataOps精益数据运营概述

作者:陈荣耀 阿里云全球技术服务团队 一、背景&挑战 数字化时代,企业希望借助数字化的技术能力来提升企业的经营能力,从最终业务目标上来看,一般分三类: 1. 增加收入:基于经营数据的智能分析来提升产…

24、TORCH.UTILS.DATA

PyTorch 数据加载实用程序的核心是 torch.utils.data.DataLoader 类。它代表一个可在数据集上迭代的 Python,支持map-style and iterable-style datasets,customizing data loading order,automatic batching,single- and multi-process data loading,automatic mem…

CTK Plugin Framework插件框架学习--服务追踪

文章目录一、前言二、新建插件PluginA三、新建插件PluginB四、测试一、前言 服务追踪:如果想在B插件里使用A服务,可以专门写一个类继承ctkServiceTracker,在这个类里完成对A服务的底层操作,然后在B插件里通过这个类提供的接口来使…

重庆市市长胡衡华会见深兰科技董事长陈海波一行

1月9日,重庆市市长胡衡华会见了赴渝考察调研的深兰科技集团创始人、董事长陈海波一行,双方就开展互利合作进行了深入交流。胡衡华市长会见深兰科技考察团重庆市委常委、副市长陈鸣波,市政府秘书长、办公厅主任欧顺清,市政府副秘书…

ResT: An Efficient Transformer for Visual Recognition

文章地址: https://arxiv.org/pdf/2105.13677.pdf codeResT: An Efficient Transformer for Visual Recognition一、引言二、ResT一、Transformer模块的再思考二、Efficient Transformer Block三、Patch Embedding四、Positional Encoding五、整体架构三、实验一、分类二、目标…

go import package 入门lib1 is not in GOROOT

main.go:4:2: package lib1 is not in GOROOT (/usr/local/go/src/lib1)├── 5-init│ ├── lib1│ │ └── lib1.go│ └── lib2│ └── lib2.go├── const.go├── firstVar.go├── go.mod├── helloGolang.go├── main.go└── test3function.gogo env …

Java学习之单例设计模式

目录 设计模式 单例模式 一、饿汉式 二、懒汉式 三、饿汉式VS懒汉式 总结 设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。就像是经典的棋谱,不同的棋局,我们用…

连接查询之外连接(左外链接和右外连接)

内连接: 假设A表和B表进行连接查询,使用内连接的话,凡是A表和B表能够匹配上的记录被查询出来,这就是内连接。A、B两张表没有主副之分,两张表是平等的。 外连接: 假设A表和B表进行连接查询,使用…

对于html中div标签height属性的个人理解

对于没有系统学习过css的程序员来说,在编写css样式的时候,div的height属性值确实是个玄学的东西,我也感觉css确实挺玄学的,本文将介绍我对div标签height属性的个人理解,如有问题请指正。 在html中,div标签属…

xilinx srio ip学习笔记之srio example

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之srio example前言IP的配置例程前言 前面对SRIO的理论有了初步的理解,现在急需要通过理解例程并且修改例程来建立自信心了。 学东西确实…

Java版本TransH代码的学习

主要讲和TransE代码的区别,TransE文章的链接 Java版本TransE代码的学习 关于范数的概念 什么是0范数、1范数、2范数?区别又是什么 初始化向量 初始化关系平面的向量Wr,初始化向量relation_vec,初始化节点向量entity_vec Wr_vec new doub…

富豪酒店集团全新体验「METAGREEN」上线!边玩边赚,了解可持续发展!

富豪酒店集团推出 MetaGreen 以提高大众对可持续发展的认识,并创造一个多元化的绿色生态系统。 体验将包涵盖数个独特的互动地标,包括环保富豪酒店、大华银行艺术空间、恒生银行元宇宙分行,以及 citysuper、LOG-ON 和 The Mills 等零售商。 …

擎创技术流 | ClickHouse实用工具—ckman教程(9)

哈喽~大家好,时间倏然,上一次ckman分享还是在2022,这一期分享就已经是2023了。由于前段时间小编“成功加入羊群”,导致拖更一周,实在抱歉。希望新的一年大家都可以身体健健康康,事业红红火火,生…

Clarifying Question领域最常见的三个数据集

文章目录Qulacqulac.json:qulac_hist012_dict.tar.gz:MIMICSClariQConvAI3 Data ChallengeStage1: initial datasetStage2: human-in-the-loopClariQ DatasetFile Formattrain.tsv and dev.tsvtest.tsvquestion_bank.tsvdev_synthetic.pkl.tar.gz & train_synthetic.pkl.ta…

【进阶】Spring核心思想及其项目创建

努力经营当下,直至未来明朗! 文章目录一、Spring核心思想1. 容器2. IoC3. SpringIoC4. DI概念说明二、Spring的创建和使用1. 创建Spring项目3. Maven项目导入jar包和设置国内源的方法:2. Spring对象的存储/存储Bean对象3. 从Spring中读取到Be…

Electron自定义协议Protocol对web网站做数据交互,使用SSE实时数据推送到网站

(防盗镇楼)本文地址:https://blog.csdn.net/cbaili/article/details/128651549 前言 最近在撸VUE,想要实现一份代码既能构建Web又能构建Electron应用 并且能够判断环境是浏览器还是Electron,随后在Electron中做一些特定的事情 以往的Electron通信依靠IPC通信完成,但是发布到…