首页 > 其他分享 >图的基础知识梳理

图的基础知识梳理

时间:2023-07-27 21:11:13浏览次数:35  
标签:有向图 int 基础知识 无向 顶点 adj 梳理 欧拉

图的基础知识梳理

目录

图的定义

图是由顶点集合和顶点之间的边组成的数学结构,图的阶是图中顶点的个数,下图是几种不同的图
有向图

无向图

零图

图的分类

图的分类是以边的不同来分为7类

有向图

有向图指图中每边都是有方向的边的图叫有向图

无向图

无向图指图中每一边都是没有方向的边的图叫无向图

完全图

完全图指图中每一个顶点都与剩下的每个结点相连,这样的图叫完全图

很美丽的图案呢!

稀疏图

稀疏图指图中边的数量少(边数远小于n(n-1)/2或小于nlog(n)(n为边数))的图称为稀疏图

稠密图

稠密图与稀疏图相对,指的是边的数量多(几乎接近完全图)的图成为稠密图

平凡图

平凡图指图中的阶数为1的图是平凡图,阶数大于1的为非平凡图,阶数为0的是空图
平凡图

非平凡图

空图(没错要相信自己的眼睛)

零图

零图指只有顶点没有边的 图叫零图

顶点的度

顶点的度的定义:一个顶点与其相连的边的条数叫做这个顶点的度

上图中顶点5的度为

孤立点

孤立点:度为0的顶点
如上图中的1

叶节点

叶节点:度为1的顶点
如上图中的4

偶点

偶点:度为偶数的顶点
如上图中的2

奇点

奇点:度为奇数的顶点
如上图中的6

图的路径

图的路径是指从一个顶点到另一个顶点所经过的顶点序列
一条路径中,顶点不重复出现的路径叫简单路径
除了起点和终点相同,其余不相同的称为回路或环

图的连通性

无向图

在无向图中,如果一个顶点u到另一个顶点v(u不等于v)存在路径,则称顶点u和顶点v是连通的
若图中任意两个顶点都是连通的,那么称该图为连通图

有向图

在有向图中,如果图中任意两个顶点u和v(u不等于v)存在路径(按其概念),那么称该图为强连通图
若将其转化为无向图后,图中任意两个顶点都是连通的,那么称该图为弱连通图

带权图

在上文讲的基础上,在边上加上有关边的数据(权值),形成带权图

图的储存

图的储存主要分为2种,邻接矩阵、邻接表

邻接矩阵

思路

邻接矩阵是用一个二维数组adj来存储i和j的关系
adj初始化为0

无向图

在无向图中如果i,j连通那么adj[i][j]=adj[j][i]=1,否则adj[i][j]=adj[j][i]=0

上图用邻接矩阵来存为:

下标 1 2 3 4 5
1 0 1 0 0 1
2 1 0 0 0 1
3 0 0 0 1 1
4 0 0 1 0 1
5 1 1 1 1 0
代码
void join (int u,int v) {//u和v相通
    adj[u][v] = 1;
    adj[v][u] = 1;
}
有向图

在有向图中如果i指向j那么adj[i][j]=1,如果n指向i那么adj[j][i]=1,否则adj[i][j]=adj[j][i]=0

上图用邻接矩阵来存为:

下标 1 2 3 4 5
1 0 1 0 0 1
2 0 0 0 0 1
3 0 0 0 1 0
4 0 0 0 0 1
5 0 0 1 0 0
代码
void join (int u,int v) {//从u指向v
    adj[u][v] = 1;
}

时间、空间复杂度

查询是否存在某条边:O(1)
遍历一个点的所有出边:O(n)
遍历整张图:O(n^2)
空间复杂度:O(n^2)

优点

最显著的优点是可以 O(1) 查询一条边是否存在。

邻接表

思路

v1 2 5 null
v2 5 null
v3 4 null
v4 5 null
v5 3 null
代码
struct num {//from 起点,to终点,val权值,next就是指向下一个边
	int from,to,val,next;
};
num  _v[maxm]; 
int head[maxn],cnt;// head数组和cnt就是记录与一个头结点相连的结点的个数
void add (int u,int v,int w) { 
	num e;
	e.from = u;
	e.to = v;
	e.val = w;
	e.to = head[u]; 
	_v[cnt] = e;      
	head[u] = cnt++;     
}

时间、空间复杂度

查询是否存在 u 到 v 的边:O(d^+(u))(如果事先进行了排序就可以使用 二分查找 做到 O(\log(d^+(u))))
遍历点 u 的所有出边:O(d^+(u))
遍历整张图:O(n+m)
空间复杂度:O(m)

优点

适用于需要对一个点的所有出边进行排序的场合

欧拉路

欧拉路的定义:对于一个图,如果按一笔画小游戏的规则画完,那么这个图是一个欧拉路,如果起点和终点相同,那么这被称为欧拉回路
欧拉路

欧拉回路

无向图实现

思路

1.使用邻接矩阵存储
2.单独开数组du[i]记录结点i连边数
3.单独开数组c记录欧拉路上的点

代码

有向图实现

思路

思路和无向图实现差不多
只是要把出度记为1,入度记为-1
欧拉路存在时起点等于1,终点等于-1
欧拉回路存在是所有点等于0

完结撒花

欢迎大家留言
小编蒟蒻一个,有什么问题请大佬不惜赐教Orz

标签:有向图,int,基础知识,无向,顶点,adj,梳理,欧拉
From: https://www.cnblogs.com/L-1115/p/17584393.html

相关文章

  • 网络基础知识
    36张图,一次性补全网络基础知识!民工哥技术之路专注系统、Java后端、架构设计、微服务、集群、中间件等开源技术分享(后台回复1024免费赠送资源),关注我!一同成长!380篇原创内容公众号OSI和TCP/IP是很基础但又非常重要的知识,很多知识点都是以它们为基础去串联的,作......
  • TCP基础知识
    TCP详解TCP和UDPTCP和UDP都是传输层的协议。UDP:用户数据报协议,面向无连接,可以单播、多播、广播,面向数据报,不可靠交付TCP:传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输TCP三次握手TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓“连接......
  • AI训练营—Python的一些基础知识
    目录列表字典复制对象列表切片:左开右闭倒取值字典集合:无序的,元素是唯一的dk_set=set()#也可以是dk_set={},创建一个空的集合#集合的并union(),交intersection(),差difference()#集合不会出现重复元素foriin"Dkfor3,Dkfor3":dk_set.add(i)#添加元素i的值进集合......
  • 【知识梳理】这些名词解释,你能完整说出几个?
    转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。前几天读一本书,遇到了蛮多的缩写名词。之前遇到过面试的时候被面试官要求说出某个缩写名词的全称,于是把近期遇到的梳理了一遍。1.监控与性能IDS——InstrusionDetectionSystem,入......
  • 树与二叉树知识梳理
    树与二叉树知识梳理目录树与二叉树知识梳理树树的定义树的常用名词有序树和无序树树的存储父亲表达法思路代码孩子兄弟表达法思路代码树的遍历先根遍历后根遍历层次遍历二叉树二叉树的定义二叉树的性质满二叉树满二叉树的定义完全二叉树完全二叉树的定义二叉树的存储父亲表示法孩......
  • Espressif乐鑫AT固件库使用全梳理
    写在前面:当你遇到一件麻烦事的时候,你要做的就是乖乖听它的话,别再自找麻烦。 1.参考资料ESP-IDF手册ESP-AT手册esp-dev-kits开发板手册b站乐鑫官方教学视频和乐鑫官方论坛,资料少、讲解不详细、不全面注:上面的手册记得选择型号,这里是以window和esp32-c6-devkit......
  • LR调色基础知识
    曝光度和对比度:提高亮度。轻微减少对比度。(曝光调整的是整个画面的亮度)高光和白色色阶:减少高光和白色色阶以增加亮部的细节。阴影和黑色色阶:增加阴影和黑色色阶以提高暗部的细节。清晰度和去朦胧:轻微的提高数值以提高画面的通透感。鲜艳度和饱和度:轻微的提高数值以提高画面......
  • 【网络编程】基础知识(Web Server和HTTP协议)
    WebServer一个WebServer就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过HTTP协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自客户端的HTTP请求,并对其请求做出HTTP响应,返回给客户端其请求的内容(文件、网页等)或返回一个Error......
  • redis基础知识
    Redis是什么?Redis(RemoteDictionaryServer)远程字典服务,是一个开源的使用ANSIC语言编写、支持网路、可基于内存也可持久化的日志型,key-value(NoSql---->non-relational)数据库Redis的特点?性能极高,基于内存,读的速度是11万次/s,写的速度是81千次/s丰富的数据类型,支持string、has......
  • 字典树知识梳理
    字典树目录字典树字典树的介绍字典树的性质字典树的储存实现代码插入询问完结撒花字典树的介绍字典树又名前缀树,是一种用树形结构实现的数据结构,可以高效地存储和检索集合中的数据优点:利用数据的公共前缀来减少查询时间,最大限度地减少无谓的比较缺点:字典树的核心思想是以空......