当前课程知识点:数据结构 >  第7章 图 >  7.1 图的定义和术语 >  7.1.2图的定义和术语(2)

返回《数据结构》慕课在线视频课程列表

7.1.2图的定义和术语(2)在线视频

下一节:7.2.1 数组表示法(1)

返回《数据结构》慕课在线视频列表

7.1.2图的定义和术语(2)课程教案、知识点、字幕

同学们大家好

我是云南大学信息学院教师孔兵

这节课我们继续讨论图的定义和术语

先介绍邻接点,在无向图中

如果边(v, v`)∈E,则称顶点v和 v`互为邻接点

边(v, v`)依附于顶点v和 v`

顶点v的度是和v相关联的边的数目

记为TD(V)

观察我们给出图,我们看到边(v1,v4)是边集中的一条边

那么,顶点v1和v4互为邻接点

v1和v2之间也有边,v1和v2也互为邻接点

那么,v1有两个邻接点v2和v4。v3的邻接点最多

有三个邻接点

无向图中,顶点的度是和该顶点相关联的边的数目

每条边又涉及一个邻接点

所以顶点的度和邻接点个数是一样的

v1的度为2,v3的度为3

上一节中,我们介绍过一个基本操作FirstAdjVex(G,v)

这个操作是在图G中,求顶点v的第一个邻接点

结合例子,我们看一下,从邻接点的定义看

v3有3个邻接点:v2, v4, v5

谁是v3的第1个邻接点呢?

请大家思考一下,我们后面会讨论

在有向图中,如果弧属于弧集A

则称顶点v 邻接到顶点v`,顶点v`称为顶点v的邻接点

和顶点v, v`相关联

以顶点v为头的弧的数目称为v的入度

记为ID (V); 以顶点v为尾的弧的数目称为v的出度

记为OD (V);顶点v的度TD(V)= ID (V)+ OD (V)

我们结合图例介绍一下相关概念

观察图中的弧

我们称v2邻接到v3,v3称为v2的邻接点

同学们应该注意到,有向图中,邻接也是有向的

v2没有到其它顶点弧

只有唯一的一个邻接点v3,v3有两个邻接点v1和v6

结合前面的知识,我们可以看到

顶点的邻接点实际就是顶点的后继

这里换了个说法而已

有向图中顶点的度分为入度和出度

两者相加作为顶点的度

入度是以顶点v为头的弧的数目

实际就是v的前驱个数

出度是顶点v为尾的弧的数目

实际就是v的后继的个数

例如顶点v4,有两个前驱v1和v5,入度为2

有两个后继v3和v6,出度也为2

顶点v4的度是二者相加,是4

n个顶点的图中

边和弧的数目等于图中所有顶点的度相加除÷2

这一点是很好理解的

无向图中一条边在它相关的两个顶点各产生一个度

共产生2个度

有向图中一条弧在弧尾顶点产生一个出度

在弧头顶点产生一个入度,也是2个度

所以,各顶点总的度数是边或弧的2倍

下一个概念是路径

无向图中从顶点v到顶点v`的路径是一个顶点序列(v=vi,0,vi,1,...vi,m= v`)

其中(vi,j-1,vi,j) ∈E, 1<=j<=m

顶点序列vi,0,vi,1,...vi,m中

i是路径编号,路径中有m+1个顶点

有一个出发点v是序列中第一个顶点vi,0

有一个终点v`是序列中最后一个顶点vi,m

路径的顶点序列中有一个约束

序列中相邻的两个顶点之间必须有边

以G2为例,有一个顶点序列v1,v2,v3,v4

出发点是v1,终点是v4,并且满足约束

就是在这个顶点序列中,前驱和后继之间都有边

所以,这是G2中的一条路径

简单的说就是,无向图中的路径呢要沿着边走

如果是有向图,则路径也是有向的

顶点序列满足 ∈A, j大于等于1小于等于m

也就是说序列中前后两个顶点之间要有弧

如图G1有这样的顶点序列v1,v3,v4

顶点序列的前驱和后继之间都有弧

是一条路径

直观的看,就是有向图中的路径

不但要沿着弧走,还必须按照箭头所指的方向走

回路或者叫环,第一个顶点和最后一个顶点相同的路径呢

称为回路或者环

比如G2中,v1v2v3v4回到v1

这是一条回路,G1中v1,v3,v4回到v1

也是一条回路

路径的长度是路径上边或者弧的数目

G2中,回路的路径长度是4

G1中,回路的路径长度是3

简单路径是指序列中顶点不重复的路径称为简单路径

就是简单路径中不应该包含环

联通图是对无向图而言的

有向图中讨论的是强连通图

无向图G中,如果从顶点v到顶点v`有路径

则称v和 v`是连通的

这是顶点之间连通的概念

如果对于图中任意两个顶点v, v`∈V

v和 v`都是连通的,则称G是连通图

无向图中的极大连通子图称为连通分量

我们一直做例子的无向图G2

图中任意两个顶点之间都有路径

G2是一个连通图

幻灯上给出的图的G3,就不是一个连通图

比如说,顶点C和D之间就没有路径

和连通图相关的一个概念是连通分量

我们把无向图中的极大连通子图称为连通分量

图G3中,有如图1,2,3所示的三个连通分量

连通分量,也就是极大连通子图的概念

可以分为三层来理解

第一, 它是原图的一个子图

第二, 这个子图是一个连通子图

第三, 它不但是连通子图

还是一个极大的连通子图

那么,极大又是什么意思呢?

观察一下图3,如果我们取G,H,K这三个顶点

以及它们之间的边,可以构成一个连通子图

但是它并不是极大,极大连通子图还包含I这个节点

极大的意思可以理解为

顶点之间之间有路径

那么,它们都必须属于同一个极大连通子图

也就是一个连通分量

换句话说,就是能连上的,就要连在一起

有向图中,我们讨论的是强连通图

有向图G中,如果对于每一对v, v`∈V,v≠v`

从v到 v`和从v`到 v都存在路径

则称G是强连通图

有向图中的极大强连通子图称为强连通分量

前面我们讨论过,有向图的路径呢

也是有方向的,要按照箭头的方向走

从v到v`有路径,并不意味着从v`到v也有路径

图G1就不是一个强连通图,观察G1中v2这个顶点

它没有后继,它到任何顶点都没有路径

G1不是强连通图

同样,我们也定义了

有向图中的极大强连通子图称为强连通分量

G1的G1有两个

如图1,2所示,图2中的强连通分量只有一个顶点v2

因为v2到任何顶点都没有路径

它单独构成一个强连通分量

图1当中的三个顶点之间形成一个环

这个环保证了任意两个顶点之间都有路径

所以,图1的三个顶点的构成了一个强连通分量

生成树,一个连通图的生成树是一个极小连通子图

它含有图中的所有顶点

但只有足以构成一棵树的n-1条边

对生成树的理解注意两个方面

一是,生成树是在无向的连通图上讨论的

二是,极小的含义,它的极小体现边的数目

含有图中的所有顶点,但只有足以构成一棵树的n-1条边

看一下图示,图的左边是一个包含7个顶点

8条边的连通图

图的右边是它的生成树

生成树中包含连通图的7个顶点

并且只包含了6条边

这6条边保证了生成树仍然是一个连通子图

如果少一条边,一定不能连通

如果多一条边,一定会形成一个回路

有向树,是和有向图相关的概念

如果一个有向图,恰有一个顶点的入度为0

其顶点的入度均为1,则是一棵有向树

一个有向图的生成森林由若干棵有向树组成

含有图中全部顶点

但只有足以构成若干棵互不相交的有向树的弧

一个有向图可以构造出包含多棵有向树的生成森林

结合图中的例子看一下

首先,取图中一个顶点,这里比如说取顶点A

作为第1棵有向树的树根

它的所有后继作为它的孩子

它有孩子B和F,继续考察,寻找B和F的后继

B没有后继,F有后继B和E,B已经是A的孩子

不考虑,F有孩子E,E有两个后继A和B

已经在树中,不考虑

生成森林中的第1棵树就构造完成了

在剩余的顶点当中,任取一个

比如说我们取D第2棵树的根

D有两个后继C和E,E在第一棵树中

不考虑,D只有一个孩子C

到此,所有顶点都已经在生成森林中了

生成森林中有两棵树

因为,构造过程中,图中顶点的可以任选

所以,一个有向图的生成森林并不是唯一的

好同学们,今天的课就到这儿

我们下次课再见

数据结构课程列表:

前言

-1.算法概念导入

--1.1 算法概念导入

-2.数据结构课程介绍

--2.数据结构课程介绍

-数据结构前言PPT

第0章 预备知识

-0.1变量、类型和表达式

--0.1变量、类型和表达式

-0.2 函数

--0.2 函数

-0.3 指针和单链表

--0.3 指针和单链表

-0.4 数组、指向函数的指针

--0.4 数组、指向函数的指针

-第0章 预备知识讨论题

-数据结构第0章预备知识PPT

第1章 绪论

-1.1什么是数据结构

--1.1什么是数据结构

--测试题

-1.2基本概念和术语

--1.2基本概念和术语

--测试题

-1.3数据结构的描述

--1.3数据结构的描述

--测试题

-1.4抽象数据类型的定义和实现

--1.4抽象数据类型的定义和实现

--测试题

-1.5算法和算法分析概念

--1.5算法和算法分析概念

--测试题

-1.6算法分析示例

--1.6算法分析示例

--测试题

-第1章 绪论讨论题

-数据结构第1章 绪论PPT

第2章 线性表

-2.1 线性表的类型定义

--2.1线性表的类型定义

--测试题

-2.2线性表的顺序表示和实现

--2.2 线性表的顺序表示和实现

--测试题

-2.3 线性链表

--2.3 线性链表

--测试题

-2.4 静态链表

--2.4 静态链表

--测试题

-2.5 循环链表和双向链表

--2.5 循环链表和双向链表

--测试题

-第2章 线性表讨论题

-数据结构第2章线性表PPT

第3章 栈和队列

-3.1 栈

--3.1栈

--测试题

-3.2 栈的实现

--3.2 栈的实现

--测试题

-3.3 栈的应用

--3.3 栈的应用

-3.4 栈与递归的实现

--3.4栈与递归的实现

--测试题

-3.5 队列和链队列

--3.5 队列和链队列

--测试题

-3.6 循环队列

--3.6 循环队列

--测试题

-第3章 栈和队列讨论题

-数据结构第3章栈和队列PPT

第4章 串

-4.1 串

--4.1 串

--测试题

-数据结构第4章 串PPT

第5章 数组

-5.1 数组定义和表示

--5.1 数组定义和表示

--测试题

-5.2矩阵的压缩存储

--5.2 矩阵的压缩存储

--测试题

-第5章 数组讨论题

-数据结构第5章数组PPT

第6章 树和二叉树

-6.1 树的定义和基本术语

--6.1 树的定义和基本术语

-6.2 二叉树和二叉树的性质

--6.2 二叉树和二叉树的性质

--测试题

-6.3 二叉树的存储结构

--6.3二叉树的存储结构

--测试题

-6.4 遍历二叉树

--6.4 遍历二叉树(1)

--6.4 遍历二叉树(2)

--测试题

-6.5 线索二叉树

--6.5 线索二叉树

--测试题

-6.6 树的存储

--6.6树的存储

-6.7 树的转换和遍历

--6.7 树的转换和遍历

--测试题

-6.8 赫夫曼树

--6.8 赫夫曼树

-6.9 赫夫曼编码

--6.9 赫夫曼编码

--测试题

-第6章 树和二叉树讨论题

-数据结构第6章树和二叉树PPT

第7章 图

-7.1 图的定义和术语

--7.1.1图的定义和术语(1)

--7.1.2图的定义和术语(2)

--测试题

-7.2 图的存储结构

--7.2.1 数组表示法(1)

--7.2.2 数组表示法(2)

--7.2.3 邻接表

--测试题

-7.3 图的遍历

--7.3.1 深度优先搜索

--7.3.2 广度优先搜索

--测试题

-7.4 最小生成树

--7.4.1 普里姆算法

--7.4.2 克鲁斯卡尔算法

--测试题

-7.5 有向无环图

--7.5.1 拓扑排序

--7.5.2 关键路径

--测试题

-7.6 最短路径

--7.6.1 单源最短路径-迪杰斯特拉算法

--7.6.2 每一对顶点之间的最短路径-弗洛伊德算法

--测试题

-第7章 图讨论题

-数据结构第7章图PPT

第8章 查找

-8.1 查找基本概念和顺序查找

--8.1 查找基本概念及顺序查找

--测试题

-8.2 有序表的查找

--8.2 有序表的查找

--测试题

-8.3 二叉排序树

--8.3.1 二叉排序树(1)

--8.3.2 二叉排序树(2)

--测试题

-8.4 平衡二叉树

--8.4 平衡二叉树

--测试题

-8.5 哈希表

--8.5.1 哈希表及哈希函数的构造

--8.5.2 解决冲突的方法

--8.5.3 哈希表的查找和性能分析

--测试题

-第8章 查找讨论题

-数据结构第8章查找PPT

第9章 内部排序

-9.1插入排序

--9.1.1 插入排序(1)

--9.1.2 插入排序(2)

--测试题

-9.2 希尔排序

--9.2 希尔排序

--测试题

-9.3 快速排序

--9.3 快速排序

--测试题

-9.4 选择排序

--9.4 选择排序

--测试题

-9.5 堆排序

--9.5 堆排序

--测试题

-9.6 归并排序

--9.6 归并排序

--测试题

-9.7 基数排序

--9.7 基数排序

--测试题

-9.8 排序方法总结

--9.8 排序方法总结

-第9章 内部排序讨论题

-数据结构第9章内部排序PPT

7.1.2图的定义和术语(2)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。