数据结构与算法——图

1.图的定义和表示

图的定义

G由集合V和集合E组成,记作G=(V,E),其中:

1、V顶点元素的有限集合;

2、E顶点间关系——的有限集合。

3、边是顶点的无序对有序对

无向图和有向图:

 无向图

没有方向的边构成的图。

无向图中的边由顶点的无序对组成。(用圆括号表示)

邻接点:无向图中,若存在一条边(Vi,Vj),则称Vi和Vj互为邻接点

上图中的边是无方向的,即(V1,V2)(V2,V1)表示同一条边。

有向图

有方向的边构成的图。

:有向图中的边由顶点的有序对组成,也称为弧。(用尖括号表示)

有向图中,顶点的有序对<Vi,Vj>表示从Vi指向Vj的一条有向边,其中Vi是起点,Vj是终点

上图中的边是有方向的,<V1,V2><V2,V1>表示两条不同的边。

图的表示

上图G1中:

V(G1)={1,2,3,4,5,6,7}

E(G1)={(1,2),(1,3),(2,3),(2,4),(2,5),(5,6),(5,7)}

上图G2中:

V(G2)={1,2,3,4,5,6}

E(G2)={<1,2>,<2,1>,<2,3>,<2,4>,<3,5>,<5,6>,<6,3>} 

完全图与子图

完全图:图中任意两项点间均有边直接相连

无向完全图:有n个顶点n(n-1)/2条边的无向图。

有向完全图:有n个顶点n(n-1)条弧的有向图。

子图:对于图G=(V,E)和图G'=(V',E'),若存在V'∈VE'∈E,则称图G'是图G的子图。

2.图的相关概念

顶点的度

无向图中,顶点的是与每个顶点相连的边数

有向图中,顶点的分成入度出度

入度:以该顶点为终点的弧的数目

出度:以该顶点为起点的弧的数目

路径与回路

路径:从Vi出发,经过一系列的边或弧能够到达Vj,则称Vi到Vj所经过的顶点序列为从Vi到Vj的路径

路径长度:路径经过的边的数目或各边权值之和

回路:起点终点相同的路劲。

简单路径:序列中顶点不重复出现的路径。

简单回路:除了起点和终点,其余顶点不重复出现的回路。

连通图

连通:顶点Vi到Vj有一条路径不要求直达)则Vi和Vj是连通的。

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

连通分量:连通图的每一个极大连通子图。

强连通图:有向图任意不同的顶点Vi和Vj,从Vi到Vj和从Vj到Vi都存在路劲

连通图

强连通图

非连通图的两个连通分量

邻接矩阵

表示顶点间相邻关系的矩阵。

设G=(V,E)是有n(n>0)个顶点的图,G的邻接矩阵A是具有以下性质的n阶方阵

特点:

无向图的邻接矩阵沿对角线对称

有向图的邻接矩阵不一定对称

示例:

无向图的邻接矩阵

有向图的邻接矩阵

权与网

:图中边或弧上附带的数值称为权(w)。

带权的图称为网。

3.图的存储结构与实现 

邻接表

 邻接表:有顶点表边表组成,是链式存储结构。

顶点表

存放图中每个顶点的信息以及指向该顶点边表的头指针。顶点表通常采用顺序存储结构。

顶点表的结点结构:data——head

顶点域data存放顶点信息,head为边表头指针。

边表

为图中的每个顶点建立的单链表,单链表中存放与同一个顶点相邻接的邻接点,相当于邻接矩阵中的一行。

边表的结点结构:adjVex——next

邻接点域adjVex存放邻接点在顶点表中的序号,next为指向下一个邻接点的指针。

示例:无向图的邻接表

逆邻接表

结构与邻接表完全相同,只是边表中每个 结点存放的是每条弧的弧尾顶点。

4.图的遍历方法

深度优先遍历(DFS)

1、从图的某一顶点v出现起点任选),访问此顶点;

2、选择一个与顶点v相邻未被访问过的顶点w,再从w出发进行深度优先遍历(递归),直至图中所有和v连通的顶点都被访问过为止;

3、若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。

深度优先遍历过程

为图的顶点设置一个访问标记数组visited[n],其中相应顶点的元素值为0表示为访问,为1表示已访问。

该图的深度优先搜索的输出序列为:ABCFEGDHI

示例:深度优先遍历无向图

深度遍历:V1->V2->V4->V8->V5->V6->V3->V7

示例:深度优先遍历有向图

深度遍历:V1->V2->V4->V8->V3->V6->V7->V5

广度优先遍历(BFS)

1、从图的某一项顶点V出发起点任选),访问顶点;

2、访问V的所有未被访问过的邻接点V1,V2,...,Vt按照V1,V2,...,Vt的次序,访问每一个顶点的所有未被访问过的邻接点。依此类推,直至图中所有和V连通的顶点都未被访问过为止;

3、若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作为起点,重复上述过程,直至图中所有顶点都被访问为止。

广度优先遍历过程

该图的广度优先搜索的输出序列为:ABEDCGFHI

示例:广度优先遍历无向图

广度遍历:V1->V2->V3->V4->V5->V6->V7->V8

示例:广度优先遍历有向图

广度遍历:V1->V2->V3->V4->V6->V7->V8->V5

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

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

相关文章

FebHost:法国.FR域名的市场前景和挑战

.FR域名的未来前景如何&#xff1f; .fr域名在2023年经历了显著增长&#xff0c;新注册量大幅增加。这一积极趋势凸显了法国 VSE&#xff08;极小型企业&#xff09;和 SME&#xff08;中小型企业&#xff09;数字化转型的持久影响&#xff0c;这一转变早在 2022 年就已开始。…

SQL进阶技巧:如何计算复合增长率?

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 复合增长率是第N期的数据除以第一期的基准数据&#xff0c;然后开N-1次方再减去1得到的结果。假如2018年的产品销售额为10000&#xff0c;2019年的产品销售额为12500&#xff0c;2020年的产品销售额为15000&…

开源的 API 学习平台「GitHub 热点速览」

前有 5 万颗星标的开源项目 HTTPie 因误操作导致 Star 清零&#xff08;2022 年&#xff09;&#xff0c;上周知名开源项目 Elasticsearch 也经历了 Star 一夜清零的事件。这些事故的原因均是管理员误将开源项目从公开状态转为私有状态所导致。为避免类似事件再次发生&#xff…

华为HD集群重启NAMENODE实例操作步骤

华为HD集群重启NAMENODE实例操作步骤 管理员账号进入FI——服务——HDFS&#xff0c;选择角色&#xff1a;namenode重启namenode&#xff08;备&#xff09; 如下图&#xff1a;点击【实例】–角色选择【Namenode】–选择备节点&#xff08;自己记录一下当前备节点的IP&…

LoRA:大型语言模型(LLMs)的低秩适应;低秩调整、矩阵的低秩与高秩

目录 LoRA:大型语言模型(LLMs)的低秩适应 一、LoRA的基本原理 二、LoRA的举例说明 三、LoRA的优势 低秩调整、矩阵的低秩与高秩 一、低秩调整(LoRA) 二、矩阵的低秩 三、矩阵的高秩 LoRA:大型语言模型(LLMs)的低秩适应 LoRA(Low-Rank Adaptation of LLMs),…

CST参数扫描设置细节

cst参数扫描的细节 点开参数扫描对话框&#xff0c;新建扫描参数&#xff0c; 例如参数a进行扫描1-2&#xff0c;0.5的步长&#xff0c;这样最后会出现3个参数的仿真结果。 这时如果增加参数b的扫描&#xff0c;在同一sequence下&#xff0c;同样1-2&#xff0c;0.5的步长&…

最高降本90%!它究竟是如何实现的?

第一、云在未来“优先”&#xff0c;病毒攻击和人为错误将成主要威胁 根据Gartner预测&#xff0c;到2025年&#xff0c;超过95%的新数字工作负载将被部署在云原生平台上&#xff0c;超过85%的企业机构将接受云优先原则。 在这一背景下&#xff0c;勒索病毒攻击和人为错误成为…

OpenCV—calcHist()函数

void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform true, bool accumulate false ); images 输入的数据指针&#xff0c;要具备相同的尺寸和数…

用例怎么链接到其他地方的序列图

龙勤思(2018年1月22日)&#xff1a; 潘老师&#xff0c;你在PPT里说分析序列图的位置在用例下面。但是你上课时给的EA模板里需求和分析是分成两个包的&#xff0c;所以分析序列图没办法直接加为系统用例的下级元素 潘加宇: 这页幻灯片有点老了&#xff0c;回头我更新。严格来…

Java | Leetcode Java题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; class Solution {public int singleNonDuplicate(int[] nums) {int low 0, high nums.length - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid 2;} else {high …

利用游戏引擎的优势

大家好&#xff0c;我是小蜗牛。 在当今快速发展的游戏产业中&#xff0c;选择合适的游戏引擎对开发者来说至关重要。Cocos Creator作为一款功能强大且灵活的游戏引擎&#xff0c;为开发者提供了丰富的工具和资源&#xff0c;使他们能够高效地开发出优秀的游戏。本文将探讨如何…

python怎样嵌入c

用c语言编写一个动态库&#xff0c;提供两个函数&#xff0c;两个数的整形求和&#xff0c;两个浮点数的求和。取名为mylib.c。 将c函数文件编译成so动态库。运行gcc mylib.c -fPIC -shared -o libtest.so命令&#xff0c;在目录下可以看到生成的库文件libtest.so。 Python调用…

ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差

一、说明 在概率和统计学中&#xff0c;了解结果是如何量化的至关重要。概率质量函数 &#xff08;PMF&#xff09; 和概率密度函数 &#xff08;PDF&#xff09; 是实现此目的的基本工具&#xff0c;每个函数都提供不同类型的数据&#xff1a;离散和连续数据。 二、PMF 的定义…

一键AI换衣-可图AI试衣

我们的真的实现了穿衣自由了吗&#xff1f;上传一张人物图片和衣服的图片&#xff0c;就能实现一键换衣。 这就是可图AI试衣项目 魔塔地址&#xff1a;https://www.modelscope.cn/studio ... lors-Virtual-Try-On 参考&#xff1a; 一键AI换衣-可图AI试衣 https://www.jinsh…

Unity数据持久化 之 Xml入门精要 (从语法入门到序列与反序列化)

该教程资源来源于唐老狮&#xff0c;仅作学习分享交流 学习xml是因为看到了uitookit里出现了uxml 所以来学习一下 1.xml结构 2.基础语法 注释与开头固定写法 <!--第1行 注释格式 第2行代表版本和编码格式&#xff0c;是固定写法--> <?xml version"1.0" …

在 Bash 中获取 Python 模块变量列

在 Bash 中获取 Python 模块的变量列表可以通过使用 python -c 来运行 Python 代码并输出变量名列表。 1、问题背景 在编写 Bash 补全脚本时&#xff0c;需要获取已安装 Python 模块中与模式匹配的所有变量。为了避免解析注释等内容&#xff0c;希望仅使用 Python 相关功能。 …

Xserver v1.4.2发布,支持自动重载 nginx 配置

Xserver——优雅、强大的 php 集成开发环境 本次更新为大家带来了更好的用户体验。 &#x1f389; 下载依赖组件时&#xff0c;显示进度条&#xff0c;展示下载进度。 &#x1f389; 保存站点信息和手动修改 vhost 配置文件之后&#xff0c;自动重载 nginx 配置 &#x1f41e…

记录————封装vue3+element-plus(el-upload)上传图片组件

AI介绍&#xff1a; 显示已上传的图片列表&#xff0c;并提供删除和预览功能。支持上传新的图片&#xff0c;并在上传成功后显示在列表中。 代码的具体步骤如下&#xff1a; 在模板中&#xff0c;使用v-for指令遍历imageUrls数组&#xff0c;显示已上传的图片&#xff0c;并…

ssm060基于SSM的高校共享单车管理系统的设计与实现+vue(论文+源码)_kaic

设计题目&#xff1a;高校共享单车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0…

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起&#xff0c;Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库&#xff08;FastReport.Net包的一部分&#xff09;将不再…