图的学习.

news2025/1/19 3:25:59

目录

一、图的基本概念

1.1图的种类

1.2顶点的度、入度和出度

1.3边的权和网

1.4路径、路径长度和回路

二、图的存储结构

2.1邻接矩阵法

2.2邻接表法

2.3十字链表

2.4邻接多重表

三、图的遍历

3.1广度优先搜索

3.2深度优先搜索

四、图的应用

4.1最小生成树

4.1.1普里姆算法

4.1.2克鲁斯卡尔算法

4.2最短路径

4.2.1迪杰斯特拉算法

 4.3拓扑排序

 4.4关键路径


一、图的基本概念

1.1图的种类

①有向图:v,w表示顶点,顶点间的边是有方向的。

②无向图:v,w表示顶点,顶点间的边没有方向。

③简单图:不存在重复边,不存在顶点到自身的边。

④多重图:存在重复边,存在顶点到自身的边。

⑤完全图:(简单完全图)

对于无向图,任意两个顶点之间都存在边,边的条数:(n*(n-1))/2

对于有向图,任意两个顶点之间都存在方向相反的两条弧,边的条数:n*(n-1)

子图: 顶点和边是另一个图的子集的图。

第二个图的顶点和边都是第一个图的子集,所以图2是图1的子图。

生成子图:顶点相等,边是另一个图的子集的图。

第二个图的顶点和第一个图相等,边是它的子集,所以图2是图1的生成子图。

连通图:图中任意两个顶点都是连通的。

极小连通子图:既要保持图连通又要使得边数最少的子图。

⑧生成树:包含图中全部顶点的一个极小连通子图。(边数=顶点数-1)

图2是图1的生成树。

1.2顶点的度、入度和出度

度:一个顶点连接的边数

①对于无向图:其全部顶点的度的和等于边数的2倍

②对于有向图:

·入度是以顶点v为终点的有向边的数目,出度是以顶点v为起点的有向边的数目;

·顶点的度=入度和出度之和;

·有向图的全部顶点的入度之和与出度之和=,并且=边数。

1.3边的权和网

权:边上带有数值,这样的图称为带权图或网

1.4路径、路径长度和回路

路径:顶点到另一个顶点的路线

路径长度:顶点到另一个顶点的距离

回路:从某一个顶点出发,最后又回到这个顶点

二、图的存储结构

2.1邻接矩阵法

行列与顶点有关,与边无关

①对于无向图:A[i][j]=1,(vi,vj)存在;A[i][j]=0,(vi,vj)不存在 (对称矩阵)

②对于有向图:A[i][j]=1,(vi,vj)存在;A[i][j]=0,(vi,vj)不存在

③对于带权图:A[i][j]=权值,(vi,vj)存在;A[i][j]=0或无穷大,(vi,vj)不存在

问:

①n个顶点的无向连通图用邻接矩阵表示时,该矩阵至少有2(n-1)个非零元素。

(有n-1条边,每条边表示两次)

②带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中第i列非零非无穷元素之和,出度即为A中第i行非零非无穷元素之和

2.2邻接表法

①对于无向图

存储空间=O(|V|+2|E|) ,顶点存储1次,而边存储了2次。

②对于有向图

存储空间=O(|V|+|E|),边和顶点都只存储了1次。

特点:

①对于稀疏图,采用邻接表表示能够节省空间

②图的邻接表表示不唯一

③在有向图的邻接表表示中,求一个给定顶点的出度只需计算其邻接表中的结点个数。

头结点指的是顶点,表结点指的是边。

2.3十字链表

针对无向图的邻接表法结点的入度难,采用十字链表法改进

2.4邻接多重表

针对无向图中邻接表边存储2次的问题,采用邻接多重表法改进。

三、图的遍历

定义:从图中的某一点出发,按照某种搜索方法沿着图中所有顶点访问一次且仅访问一次

算法:广度优先搜索,深度优先搜索

3.1广度优先搜索

类似于二叉树的先序遍历,类似于树的层次遍历,例:

3.2深度优先搜索

类似于树的先序遍历,例:

注:如果从一个无向图的任意顶点出发进行一次广度和深度优先搜索即可访问所有顶点,那么该图一定是连通图。

四、图的应用

4.1最小生成树

带权连通无向图中,所有生成树中权值之和最小的生成树。

4.1.1普里姆算法

①任取一顶点,去掉所有边

②选择一个与当前顶点集合距离最近的顶点,并将该顶点和相应的边加入进来,同时不能形成回路。

③重复②,直至图中所有顶点都并入。

4.1.2克鲁斯卡尔算法

①去掉所有边

②选边(权最小,且不构成回路)

③重复②,直至图中所有顶点都并入

 最小生成树边数=顶点数-1

4.2最短路径

4.2.1迪杰斯特拉算法

 4.3拓扑排序

·AOV网:顶点表示活动,<Vi,Vj>

·每个顶点出现且只出现一次,若存在一条从顶点A到顶点B的路径,则在排序中顶点B出现在顶点A的后面。

算法实现:

①从AOV网中选择一个没有前驱的顶点并输出

②从网中删除该顶点和所有以它为起点的有向边

③重复①②直到当前AOV网为空或当前网中不存在无前驱的顶点为止

 

4.4关键路径

·AOE网:以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销

·关键路径:从开始顶点到结束顶点的所有路径中,具有最大路径长度的路径

·关键活动:关键路径上的活动

算法实现:

①令ve(源点)=0,求最早发生时间ve()

ve()=Max{ve(j)+weight(vj,vk)} (从前往后算)

②令vl(汇点)=ve(汇点),求最迟发生时间vl()

vl()=Min{vl(j)-weight(vk,vj)} (从后往前算)

③根据ve()值求所有弧的最早开始时间e()

e()=ve()

④根据vl()值求所有弧的最迟开始时间l()

l()=vl()-weight(vk,vj)

⑤求AOE网中所有活动的差额d(),找出所有d()=0的活动构成关键路径

d()=l()-e()

例:

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

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

相关文章

音视频开发29 FFmpeg 音频编码- 流程以及重要API,该章节使用AAC编码说明

此章节的一些参数&#xff0c;需要先掌握aac的一些基本知识&#xff1a;​​​​​​aac音视频开发13 FFmpeg 音频 --- 常用音频格式AAC&#xff0c;AAC编码器&#xff0c; AAC ADTS格式 。_ffmpeg aac data数据格式-CSDN博客 目的&#xff1a; 从本地⽂件读取PCM数据进⾏AAC格…

mysql启动时遇到:本地计算机上的MySQL服务启动后停止

1.问题重述&#xff1a; 今早启动数据库时发现无法启动&#xff0c;报错&#xff1a;本地计算机 上的 MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。 2.解决方案&#xff1a; 1.数据备份&#xff1a; 2.在bin目录下&#xff0c;命令行中输入 mysqld …

1.3 Sqoop 数据同步工具详细教程

Apache Sqoop 是一个开源工具&#xff0c;用于在 Apache Hadoop 和关系型数据库&#xff08;如 MySQL、Oracle、PostgreSQL 等&#xff09;之间高效传输数据。Sqoop 可以将结构化数据从关系型数据库导入到 Hadoop 的 HDFS、Hive 和 HBase 中&#xff0c;也可以将数据从 Hadoop …

[SAP ABAP] 追加内表数据

向内表中逐条追加数据记录 语法格式 APPEND <wa> TO <itab>. <wa>&#xff1a;代表工作区 <itab>&#xff1a;代表内表 示例1 结果显示&#xff1a; 将一个内表中的所有数据记录添加到另一个内表中 语法格式 APPEND LINES OF <itab1> TO <…

基于YOLOV5的车辆行人检测系统的设计与实现(PyQT页面+YOLOv5模型)

简介 随着智能交通系统的发展,实时检测车辆和行人变得越来越重要,以提高道路安全和交通管理效率。我们开发了一种基于YOLOv5目标检测模型的车辆与行人检测系统。本报告将详细介绍该系统的实际应用与实现,包括系统架构、功能实现、使用说明、检测示例、数据集获取与介绍、YO…

BUG cn.bing.com 重定向的次数过多,无法搜索内容

BUG cn.bing.com 重定向的次数过多&#xff0c;无法搜索内容 环境 windows 11 edge浏览器详情 使用Microsoft Edge 必应搜索显示"cn.bing.com"重定向次数过多&#xff0c;无法进行正常的检索功能 解决办法 检查是否开启某些科_学_上_网&#xff08;翻_墙&#xf…

接口性能优化方法总结

接口性能优化是后端开发人员经常碰到的一道面试题&#xff0c;因为它是一个跟开发语言无关的公共问题。 这个问题既可以很简单&#xff0c;也可以相当复杂。 导致接口性能问题的原因多种多样&#xff0c;不同项目的不同接口&#xff0c;其原因可能各不相同。 下面列举几种常…

ULTRAINTERACT 数据集与 EURUS 模型:推动开源大型语言模型在推理领域的新进展

在人工智能的浪潮中&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为推动自然语言处理技术发展的关键力量。它们在理解、生成语言以及执行复杂任务方面展现出了巨大的潜力。然而&#xff0c;尽管在特定领域内取得了显著进展&#xff0c;现有的开源LLMs在处理多样…

9,DMA可以获取光照烟雾值

ADC多通道问题需要用到DMA,与ADC相比&#xff0c;省去了获取AD转换数值(转换后数据存储在数据寄存器中&#xff0c;需要把数据拿出来)的步骤 DMA:数据传输高速通道 DMA概述&#xff1a;直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无…

SparkOnHive_列转行、行转列生产操作(透视和逆透视)

前言 行专列&#xff0c;列转行是数开不可避免的一步&#xff0c;尤其是在最初接触Hive的时候&#xff0c;看到什么炸裂函数&#xff0c;各种udf&#xff0c;有点发憷&#xff0c;无从下手&#xff0c;时常产生这t怎么搞&#xff0c;我不会啊&#xff1f; 好吧&#xff…

基于Openmv的色块识别代码及注意事项

在给出代码之前我先说注意事项以及需要用到的函数 1、白平衡和自动增益的关闭 打开白平衡和自动增益会影响颜色识别的效果&#xff0c;具体影响体现在可能使你颜色阈值发生改变 关闭代码如下 sensor.set_auto_gain(False) #关闭自动增益 sensor.set_whitebal(False) …

Linux动态网站架构(部署开发php代码)

动态网站架构&#xff08;部署开发php代码&#xff09; 测试能否直接部署nginx需要什么服务&#xff0c;及原理准备并进行开发测试部署代码 概述 静态网站&#xff1a;图片仅仅包含&#xff1a;html&#xff0c;css样式js脚本&#xff0c;图片及视频&#xff1b;nginx直接处…

国产测温速度快且功耗低的温度传感芯片MY18E20可Pin-Pin替换DS18B20

MY18E20是一款国产高精度可编程的数字模拟混合信号温度传感芯片&#xff1b;感温原理基于CMOS半导体PN节温度与带隙电压的特性关系&#xff0c;经过小信号放大、模数转换、数字校准补偿后&#xff0c;数字总线输出&#xff0c;具有精度高、一致性好、测温快、功耗低、可编程配置…

硕思闪客精灵软件安装包下载+详细安装教程

​有目共睹的是闪客精灵专业版的优势&#xff1a;能够安装一台电脑&#xff0c;终身免费升级。根据大数据结果显示闪客精灵支持将不带脚本的Flex生成的SWF导出为Flex文件。从大部分从业者反应来看它能反编译Flash的所有元素,并且支持动作脚本 AS3.0&#xff0c;使用闪客精灵专业…

对接Shopify电商平台的流程

对接Shopify平台的流程通常包括以下关键步骤&#xff0c;在整个对接过程中&#xff0c;需要密切关注Shopify的API使用限制、认证机制、数据隐私政策等&#xff0c;确保应用的安全性和合规性。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

【ajax基础】回调函数地狱

一&#xff1a;什么是回调函数地狱 在一个回调函数中嵌套另一个回调函数&#xff08;甚至一直嵌套下去&#xff09;&#xff0c;形成回调函数地狱 回调函数地狱存在问题&#xff1a; 可读性差异常捕获严重耦合性严重 // 1. 获取默认第一个省份的名字axios({url: http://hmaj…

大厂面试官问我:布隆过滤器有不能扩容和删除的缺陷,有没有可以替代的数据结构呢?【后端八股文二:布隆过滤器八股文合集】

往期内容&#xff1a; 面试官问我&#xff1a;Redis处理点赞&#xff0c;如果瞬时涌入大量用户点赞&#xff08;千万级&#xff09;&#xff0c;应当如何进行处理&#xff1f;【后端八股文&#xff08;1&#xff09;】-CSDN博客 本文为【布隆过滤器八股文合集】初版&#xff0c…

即时通讯怎么选?企业im即时通讯内部内网办公软件

在现代办公环境中&#xff0c;企业内部使用IM即时通讯软件已经成为提高沟通效率、促进团队协作的重要工具。选择适合企业内网办公的IM即时通讯软件是至关重要的。本文将就如何选择企业内网办公IM即时通讯软件展开讨论。 1. 确定需求和功能 在选择企业内网办公IM即时通讯软件之…

stm32学习笔记---GPIO输入(理论部分)

目录 GPIO输入模式下的硬件和电路 按键原理 传感器原理 什么是上下拉电阻&#xff1f; 运算放大器当做比较器 按键的硬件电路 传感器的硬件电路 STM32用到的C语言知识 STM32中的C语言数据类型 C语言中的宏定义 typedef和define的区别是什么&#xff1f; C语言的枚举…

UltraEditUEStudio软件安装包下载及安装教程

​根据软件大数据显示提供预定义的或使用者创建的编辑“环境”&#xff0c;能记住 UltraEdit 的所有可停靠窗口、工具栏等的状态。实际上我们可以这样讲HTML 工具栏&#xff0c;对常用的 HTML 功能作了预配置;文件加密/解密;多字节和集成的 IME。根据使用者情况表明Git Editor&…