考研二战_数据结构_day13_图

目录

目录

前言

一、图的定义

1 无向图

 2 有向图

3 简单图

4 多重图

二、图的基本概念

1 顶点的度

2 路径

        常见考点:

3 子图

4 权

5 几种特殊形态的图

三、图的存储

1 邻接矩阵法(顺序存储)

2 邻接表法(顺序+链式)

3 十字链表法(只能存储有向图)

4 邻接多重表(只能存储无向图)

后记


前言

        感觉复习有点慢了,今天主要复习图的基本概念,然后看一下图的存储结构以及基本操作,明天一口气复习到遍历。

        明天下午有事,还有去准备答辩,争取三天左右看完图相关内容吧。


一、图的定义

        图就是点与边的集合。准确的来说,图 G 顶点集 V 边集 E 组成,记为 G = (V,E),其中 V(G) 表示图 G 中顶点的有限非空集;E(G) 表示图 G 中顶点之间的关系(边)集合。

        V = {v1, v2, ... , vn},则用 |V| 表示图 G 中顶点的个数,也称为图 G 的阶,E = {(u, v) | u ∈ V, v ∈ V},用 |E| 表示图 G 中边的条数

        注:顶点集V是非空的

        如图,图1、2都属于“图”,但是图3中缺少一个顶点,有边与之相连,因此图3不属于“图”。

1 无向图

        当E是无向边(简称)组成的集合时,图G(V, E)就是无向图

        顶点A, B之间是无序关系,因此其关系体现——可以记作(A, B)或(B, A),因为(A, B)=(B, A)

        可以说A, B互为邻接点;边(A, B)依附于顶点A, B;边(A, B)与顶点A, B相关联。

        该无向图中,G=(V, E),V={A, B, C, D, E},E={(A, B), (A, C), (A, D), (A, E), (B, E), (C, D)}

 2 有向图

        若E是有向边(也称)的有限集合时,则图G为有向图。

        顶点A, B之间是有序关系,其关系体现——弧可以记为<A, B>,其中A是弧尾,B是弧头

        <A, B>是顶点A到B的弧,也可以说A邻接到B,B邻接自A。<A, B>≠<B, A>

        该有向图中,G=(V, E),V={A, B, C, D, E},E={<A, D>, <D, A>, <A, C>, <A, E>, <E, B>}

3 简单图

        满足:1、不存在重复边;2、不存在顶点到自身的边

        这两个条件的图就是简单图。

如图,左下图中有一条<A, A>弧,不满足条件1;两条<A, D>弧,不满足条件2。右下图中有一条(A, A)边,不满足条件1;两条(A, E)边,不满足条件2。因此这两张图都不是简单图。

4 多重图

        多重图与简单图向对应,就是某两顶点之间有超过一条边/弧,或者顶点自身通过一条边/弧与自身相连。

如图,这就是典型的多重图。

二、图的基本概念

1 顶点的度

        对于无向图来说,顶点v的度就是依赖于该顶点的边的条数,记为TD(v)

        对于有向图来说,入度是以顶点 v 为终点的有向边的数目,即射入顶点的弧的数目,记为 ID(v)出度是以顶点 v 为起点的有向边的数目,即射出顶点的弧的数量,记为 OD(v);顶点 v 的度等于其入度和出度之和,即 TD(v) = ID(v) + OD(v)

        在有 n 个顶点、e 条边的无向图中,sum(TD) = 2e

        在有 n 个顶点、e 条边的有向图中,sum(ID) = sum(OD) = e

2 路径

        1、路径如果顶点Vi和Vj之间有通路(可达),则Vi到Vj之间的所有顶点序列称为Vi到Vj的路径。

        2、回路第一个顶点和最后一个顶点相同的路径被称为回路或环

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

        4、简单回路:除了第一个顶点和最后一个顶点相同外,顶点序列中未出现重复顶点的回路。

        5、路径长度:路径上边/弧的数目。

        6、点到点的距离从顶点 u 出发到顶点 v 的最短路径若存在,则路径的长度称为从 u 到 v 的距离。若从 u 到 v 根本不存在路径,则记该距离为无穷

        7、在无向图中,若从顶点 u 到顶点 v 有路径存在,则称 u 和 v 是连通

        8、在有向图中,若从顶点 u 到顶点 v 和从顶点 v 到顶点 u 之间都有路径,则称这两个顶点是强连通

        9、若无向图 G 中任意两个顶点都是连通的,则称图 G 为连通图,否则称为非连通图

        10、若有向图 G 中任意两个顶点都是强连通的,则称图 G 为强连通图(有向图不讲连通图,只有强连通图

        11、将有向图的所有的有向边替换为无向边,所得到的图称为原图的基图。如果一个有向图的基图是连通图,则有向图是弱连通图

        常见考点:

        对于有 n 个顶点的无向图 G:

        1、若G是连通图,最多有 n(n-1)/2 条边,最少 n-1 条边

        2、若G是非连通图,最多有 (n-1)(n-2)/2 条边,最少 0 条边。

        对于有 n 个顶点的有向图 G:

        1、若G是强连通图,最多 n(n-1) 条边,最少 n 条边

        2、若G是弱连通图,最多 n(n-1) 条边,最少 n-1 条边

3 子图

        1、子图:图 G 的顶点集 V 的子集与边集 E 的子集构成的图(并非任意挑几个点、几条边就能构成子图)

如图所示,左侧是子图,右侧无法构成图,因此不是子图。

        2、生成子图:包含了原图中所有顶点的子图

        3、连通分量无向图中的极大连通子图

        4、强连通分量有向图中的极大强连通子图

        5、连通图生成树包含图中全部顶点的一个极小连通子图。添加一条边就会形成回路,去掉一条边就会变成非连通图。

如图,生成树不止一个。

        6、非连通图中,连通分量的生成树构成了非连通图的生成森林

4 权

        1、边的权:在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值

        2、带权图/网:边上带有权值的图称为带权图,也称

        3、当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度

5 几种特殊形态的图

        1、无向完全图:无向图中任意两个顶点之间都存在边

        2、有向完全图:有向图中任意两个顶点之间都存在方向相反的两条弧

        3、稀疏图:边数很少的图

        4、稠密图:与稀疏图相对

                一般当 |E| < |V|log|V| 时,就可以认为G是稀疏图

        5、不存在回路、且连通无向图。n 个顶点的树,其必有 n-1条边

                常见考点:|E| > n-1,则图G中一定有回路

        6、森林:各个子图都是极小的、都是连通的

        7、有向树:一个顶点的入度为 0,其余顶点的入度均为 1有向图。不是强连通图


三、图的存储

1 邻接矩阵法(顺序存储)

        顾名思义,使用矩阵的方法进行存储。

#define MaxVertexNum 20					   //顶点最大数目 
typedef struct {
	char Vertex[MaxVertexNum];			   //顶点集
	int Edge[MaxVertexNum][MaxVertexNum];  //邻接矩阵
	int VexNum, EdgNum;					   //当前图中顶点数、边/弧数
} MatrixGraph;

        通过此种方法存储矩阵,空间复杂度仅与顶点数相关,空间复杂度高。适合用于存储稠密图

        但是由于无向图的矩阵是对称矩阵,因此可以压缩存储。

2 邻接表法(顺序+链式)

        与树的孩子表示法方法如出一辙,见示意图

#define MaxVertexNum 20           //设置图中最大顶点数 
typedef struct LinkNode {         //定义边/弧 
	int adjvex;					  //边的另一端在何处 
	struct LinkNode* next;		  //下一个边指针 
} EdgNode;
typedef struct {				  //定义顶点 
	ElemType data;				  //顶点数据 
	struct LinkNode* first;       //指向第一条边的指针 
} VexNode;
typedef struct {				  //定义图 
	VexNode nodes[MaxSize];		  //顶点集 
	int VexNum, EdgNum;			  //图当前顶点总数与边/弧总数 
} Graph;

3 十字链表法(只能存储有向图)

4 邻接多重表(只能存储无向图)

        以上两种存储方式区别在于顶点的结构,边的结构区别不大

        理解倒是很好理解,但是复述有点麻烦,所以就放个图了,看图理解


后记

        马上就要准备毕设答辩了,最近周围还出现了复阳的。

        后续应该会再花2天时间复习图,然后就是花3~4天时间复习查找,3~4天复习排序。

        然后就开始复习计网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值