数据结构和算法-图的基本概念及邻接矩阵法和邻接表法和十字链表法和链表链表法

文章目录

图的概念

总览

图的定义

顶点不能为空,边可以为空,且边对于两端必须要有顶点

图逻辑结构的应用


无向图和有向图

简单图和多重图

顶点的度,入读,出度

无向图中一条边对应两个节点产生两个度

有向图中一条边对应两个节点,一个节点产生入读,另一个节点产生出度

顶点-顶点的关系描述

连通(无向图中):两个顶点有路径存在

强连通(有向图中):两个顶点有来回路径

连通图,强连通图

对于n个顶点的无向图G

若要为连通图,则保证n个顶点连成一条线即可,那么有n-1条边

若要为非连通图,则将一个顶点隔离,将剩余的节点的边连满,相当于是计算从n-1个顶点中选两个顶点的种类数有多少,此时连满后再增加任意条边,只能是隔离的那个顶点连接到剩余的节点上,此时将连通,所以不行。所以只需计算将剩余的节点的边连满的边数

对于n个顶点的有向图

若要为强连通图,则最少有n条边(即形成回路,此时任意一个顶点沿回路方向出发都能到达任何一个顶点)

研究图的局部-子图

无向图和有向图对于子图相关的概念差不多

子图也是一个图,所以也要符合图的要求

无向图

有向图

连通分量

强连通分量

生成树

生成森林

边的权,带权图/网

几种特殊形态的图


有向树不是强连通的

小结

邻接矩阵

总览

邻接矩阵

就是横坐标和纵坐标都为点的图,相连为1,不相连为0

领结的意思就是是否相邻连接

求顶点的度,入度,出度

无向图对应左边,有向图对应右边

邻接矩阵存储带权图

性能分析

邻接矩阵法的性质


小结

邻接表

顺序+链式存储

用一维数组存图,每个顶点有对应边的指针相关信息

对比 树的孩子表示法

有向图vs无向图

同一条边无向图需要存储两次,而有向图只需存储一次,所以空间复杂度有所不同

求顶点的度,入度,出度

无向图的度:只需遍历该节点对应的边链表

有向图的出度:只需遍历该节点对应的边链表

有向图的入度:需要遍历该节点之外的所有节点的边链表(麻烦)

有向图的度:即入度+出度

表示方式不唯一

即点的边链表不唯一

但图的邻接矩阵唯一

小结

十字链表

总览

前提问题

邻接矩阵存储空间复杂度高

而邻接表找入边不方便

十字链表存储有向图

就是存储节点分别为弧的弧尾顶点和弧的弧头顶点的边链表

性能分析

邻接矩阵,邻接表存储无向图的缺点

邻接多重表存储无向图

即一条边只有一个边元素对应,链表表示与某个顶点相连的边

删除边时,只需要修改前一个的指针为后一个边的指针即可

删除点时,即将该点对应的边链表删除即可,同时修改指向该链表中元素的其他链表的元素指针

小结

相关推荐
Aaron15884 分钟前
全频段 SDR干扰源模块解决方案(星链干扰、LORA无人机干扰)
人工智能·算法·fpga开发·硬件架构·硬件工程·无人机·信息与通信
AI科技星8 分钟前
全域数学·球面拓扑微扰标准系数η=0.01 应用详解(典籍正式版)
人工智能·算法·数学建模·数据挖掘·机器人
微风欲寻竹影9 分钟前
Java数据结构——栈(Stack)详解
java·开发语言·数据结构
牢姐与蒯19 分钟前
C++数据结构之红黑树
数据结构
逻辑君23 分钟前
物理学研究报告【20260001】
人工智能·算法
YL2004042628 分钟前
041二叉树的层序遍历
数据结构·leetcode·bfs
AI科技星32 分钟前
算法联盟·全域数学公理体系下黑洞标量毛发与LVK引力波O4全维理论、求导、证明、计算、验证、分析
人工智能·线性代数·算法·架构·学习方法·量子计算
谙弆悕博士32 分钟前
【附C语言源码】C语言 栈结构 实现及其扩展操作
c语言·开发语言·数据结构·算法·链表·指针·
YuanDaima204833 分钟前
图论基础原理与题目说明
数据结构·人工智能·python·算法·图论·手撕代码
AI人工智能+电脑小能手34 分钟前
【大白话说Java面试题 第53题】【JVM篇】第13题:JVM采用什么算法判断一个对象是否需要被回收?
java·jvm·算法·面试