【数据结构学习记录18】——图的概念

零.前言

在前面,学习了链表和树。
在链表里,元素只有线性关系,每个元素一般只有一个前驱和后继。
在树中,元素之间有明显的层次关系,并且每一层上的元素可能和下一层的多个元素有关,但是只能和上一层的某一个元素有关。
而在图,我们结点间的关系是可以任意的,就好比一棵树,结点只有一个双亲,而图能拥有多个双亲。。。听起来怪怪的。。

一.术语

1.描述

顶点(Vertex):数据元素、
:若V表示顶点的有穷非空(树和链表可空哦)集合;VR表示两个顶点的关系的集合。若<v,w>∈VR,则<v,w>表示从v开始到w的一条
弧尾:如弧定义中的v。
弧头:如弧定义中的w。(有些奇怪,尾在前面,头在后面,理解成箭头就行惹)
有向图(Digraph):由顶点和弧构成的图。
:如果将弧的定义的有序对<v,w>改为无序对(v,w),那么此时就为从v开始到w的一条
无向图(Undigragph):由顶点和边构成的图。
在这里插入图片描述

2.完全图

在不考虑顶点回到其自身的弧或边,如果有:
1 2 n ( n − 1 ) \frac{1}{2}n(n-1) 21n(n1)
条边的无向图,称为完全图
而有:
n ( n − 1 ) n(n-1) n(n1)
条边的图,叫有向完全图
至于如何推导这个算边的公式,那就是初中数学题了,不多说。
在这里插入图片描述

3.稀疏、稠密图

一般来说,有很少的边或弧:
< n l o g n <nlogn <nlogn
我们叫做稀疏图
反之则为稠密图

4.子图

假设有两个图G=(V,{E})和G’=(V’,{E’}),若:
V ′ ⊆ V , E ′ ⊆ E V'\subseteq V, E'\subseteq E VV,EE
则可以说G’是G的子图
在这里插入图片描述

5.邻接与度

如果无向图G={V,{E}},如果边(v,v’)∈ E,则称顶点v和v’互为邻接点。边(v,v’)依附顶点v和v’, 或者说(v,v’)和顶点v、v’相关联
顶点v的是和v相关联边的数目,记为TD(V),例如该图的V3的度为3
在这里插入图片描述
有向图G=(V,{A})中,如果弧<v,v’>∈A,则顶点v邻接到顶点v’,顶点v’邻接自顶点v。以顶点v为头的弧的数目称为v的入度(InDegree),记为ID(v);同理,以顶点v为尾的弧的数目称为v的出度(OutDegree),记为OD(v)。顶点的度TD(v)=ID(v)+OD(v)
例如该图V1的 TD=3,ID=2,OD=1
在这里插入图片描述
一般来说,一个又n个顶点,e条边或弧的图,有一下规律:
e = 1 2 ∑ i = 1 n T D ( V i ) e = \frac{1}{2} \sum _ {i=1} ^nTD(V_i) e=21i=1nTD(Vi)

6.路径与回环

无向图G=(V,{E})中从顶点v到顶点v’的路径是一个顶点序列(v=vi,0,vi,1,… ,vi,m),其中(vi,j-1, vi,j)∈ E, 1≤j≤m。有向图同理。说了这么多,看起来很复杂,画个图就直观了:
在这里插入图片描述
第一个顶点和最后一个顶点相同的路径称为回路
序列顶点不重复出现的路径叫简单路径。除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,叫简单回路简单环

7.连通图与连通分量

在无向图中,从顶点v到顶点v’有路径,则v和v’是连通的。如果对于图中任意两个顶点,他们都是连通的,那么这个图就是连通图
连通分量,也叫做极大连通子图:对于图G中的连通子图G’,如果不存在另一个连通子图G’’,使得G’⫋G’’,则G’是G的连通分量。所以G应该是所有连通分量的合集。
在这里插入图片描述
强连通图,如果对于每一对vi,vj∈V,vi≠vj,则图G是强连通图。参考连通分量的定义,有向图也存在强连通分量

8.生成树

一个连通图的生成树是一个极小连通子图,它包含该(子)图中的所有全部顶点,记定点数为n,那么它有且仅有n-1条边。如果再这个极小连通子图上添加一条边,那么必定会形成一个环。
所以,一个又n个顶点的生成树,有且仅有n-1条边,如果边>n-1,则必定有环;如果< n-1条边,则是非连通图。但是有n-1条边的图不一定是生成树
在这里插入图片描述

9.有向树和生成森林

如果一个有向图,恰有一个顶点的入度为0,其余顶点的出度均为1,则是一棵有向树。一个有向图的生成森林由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧。
在这里插入图片描述

二.图的储存结构

图的储存结构后面会详细讲,现在先说常见的几种:

  1. 数组表示法
  2. 邻接表
  3. 十字链表
  4. 领接多重表

三.图的遍历

这个后面也会讲,图的两种遍历深度优先搜索DFS广度优先搜索BFS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康娜喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值