数据结构C语言版严蔚敏吴伟民编著第7章图1

合集下载

数据结构第七章-图

数据结构第七章-图

*
V0
V7
V6
V5
V4
V3
V2
V1
若图的存储结构为邻接表,则 访问邻接点的顺序不唯一, 深度优先序列不是唯一的
V0
V1
V3
V2
V7
V6
V5
V4
V0,V1,V3,V4,V7,V2,V5,V6,
※求图G以V0为起点的的深度优先序列(设存储结构为邻接矩阵)
void DFSAL(ALGraph G, int i) {/*从第v个顶点出发,递归地深度优先遍历图G*/ /* v是顶点的序号,假设G是用邻接表存储*/ EdgeNode *p; int w; visited[i] =1; Visit(i); /*访问第v个顶点*/ for (p=G.vertices[i].firstarc;p;p=p->nextarc) {w=p->adjvex; /*w是v的邻接顶点的序号*/ if (!visited[w]) DFSAL(G, w); /*若w尚未访问, 递归调用DFS*/ } }/*DFSAL*/
在邻接表存储结构上的广度优先搜索
*
Q
V0
V1
V2
V3
V4
V7
V5
V6
V1
V2
V3
V0
V4
V7
V5
V6
V0
V7
V6
V5
V4
V3
V2
V1
7.3 图的遍历
7
0
1
2
V0
V2
V3
V1
data
firstarc
0
1
^
^
adjvex
next
3

数据结构第7章习题答案

数据结构第7章习题答案

第7章 《图》习题参考答案一、单选题(每题1分,共16分)( C )1. 在一个图中,所有顶点的度数之和等于图的边数的倍。

A .1/2 B. 1 C. 2 D. 4 (B )2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。

A .1/2 B. 1 C. 2 D. 4 ( B )3. 有8个结点的无向图最多有条边。

A .14 B. 28 C. 56 D. 112 ( C )4. 有8个结点的无向连通图最少有条边。

A .5 B. 6 C. 7 D. 8 ( C )5. 有8个结点的有向完全图有条边。

A .14 B. 28 C. 56 D. 112 (B )6. 用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。

A .栈 B. 队列 C. 树 D. 图 ( A )7. 用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。

A .栈 B. 队列 C. 树 D. 图( C )8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2 C. 0 4 2 3 1 6 5 D. 0 1 23465 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是A .0 2 4 3 1 5 6B. 0 1 3 6 5 4 2C. 0 1 3 4 2 5 6D. 0 3 6 1 5 4 2⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3A.0 3 2 1 B. 0 1 2 3C. 0 1 3 2D. 0 3 1 2(A)12. 深度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(D)13. 广度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(A)14. 任何一个无向连通图的最小生成树A.只有一棵 B. 一棵或多棵 C. 一定有多棵 D. 可能不存在(注,生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一)二、填空题(每空1分,共20分)1. 图有邻接矩阵、邻接表等存储结构,遍历图有深度优先遍历、广度优先遍历等方法。

数据结构第七章图PPT课件

数据结构第七章图PPT课件
第7章 图
CAC - 2
CAC - 3
7.1 图的定义和术语
7.1.1 图的定义和术语
1. 图的定义(graph)
图G由两个集合构成,记作G=<V,E> ,其中V是顶点的非空有限集合,
E是顶点间关系----边的有限集合,边是顶点的无序对或有序对集合。 。
【例】 V0
V1
V2
V3
V4
无序对(vi,vj): 用连接顶点vi、vj的线段
V0
V1
V0
V1
V2
V3
V2
V3
两个强连通分量
CAC - 17
练习
具有n个顶点的强连通图至少有多少条边?是什么形状?
分析:强连通图是针对有向图而言的。由于强连通图要求 图中任何2个顶点之间能够连通,因此每个顶点至少要有一条 以该顶点为终点(弧头)和出发点(弧尾)的弧,每个顶点 的入度和出度至少各为1,即顶点的度至少为2。
边或弧
G2=<V2,E2> V2={ v0 ,v1,v2,v3 } E2={ <v0,v1 > , <v0,v2 >, <v2,v3 >,<v3,v0 > }
CAC - 6
7.1.1 图的定义和术语
2. 图的相关术语 (1)无向图:若图G中所有边是没有方向的,则称G为无向图。 (2)有向图:若图G中所有顶点间的连线是有方向的,则称G为有向图。 (3)顶点:数据元素Vi称为顶点。 (4)边和弧:P(Vi,Vj)表示在顶点Vi和Vj之间有线相连,如果是无向图, 则称该线为边;在有向图中,则称该连线为弧。边用顶点的无序偶对(Vi, Vj)表示,弧用有序偶对< Vi,Vj >表示。 (5)弧头和弧尾:有序偶对的第一个结点称为始点(或弧尾,即不带箭 头的一端),有序偶对的第二个结点称为终点(或弧头,即带箭头的一 端)。

数据结构第7章_图_7.4~7.6

数据结构第7章_图_7.4~7.6

数据结构(C语言)
7.4 最小生成树
三、Prime算法——让一颗小树长大

算法实现具体示例
1
6 2 3 5
1 2 3 4 5 6
1
5 6 6 3 5
5 4
closedge vex lowcost vex lowcost vex lowcost
v 2 1 6
3 5
3
4
5
6
U {1}
{1, 3} {1,3,6} {1,3,6, 4}
4 100 100 90 60
30 10 60 3
4
{0} {0,1} {0,1,3} {0,1,2,3}
10
2
20
最短路径 {0,1}
{0,3,2}
{0,3}
{0,3,2,4}
数据结构(C语言)
本章小结
最短路径
Dijkstra算法 Floyd算法 邻接矩阵 邻 接 表 十字链表 邻接多重表 深度优先搜索DFS
8
4

1
4 5
1
5
5
在生成树中任加一条 边都一定构成回路
数据结构(C语言)
7.4 最小生成树
二、贪心算法


什么是“贪”:每一步都是最好的 什么是“好”:权值最小的边 需要约束: 只能用图里边有的边 只能正好用掉n-1条边 不能有回路
6
4
10 8
1
4 5
1
5
数据结构(C语言)
7.4 最小生成树
7.4 最小生成树
提问问题:

给出各个城市间铺设煤气管道的成本,要求在保证煤气能输送到各个城市的前 提下,达到铺设成本最小。

数据结构(C语言版)_第7章 图及其应用

数据结构(C语言版)_第7章 图及其应用
(1)创建有向图邻接表 (2)创建无向图的邻接表
实现代码详见教材P208
7.4 图的遍历
图的遍历是对具有图状结构的数据线性化的过程。从图中任 一顶点出发,访问输出图中各个顶点,并且使每个顶点仅被访 问一次,这样得到顶点的一个线性序列,这一过程叫做图的遍 历。
图的遍历是个很重要的算法,图的连通性和拓扑排序等算法 都是以图的遍历算法为基础的。
V1
V1
V2
V3
V2
V3
V4
V4
V5
图9.1(a)

图7-2 图的逻辑结构示意图
7.2.2 图的相关术语
1.有向图与无向图 2.完全图 (1)有向完全图 (2)无向完全图 3.顶点的度 4.路径、路径长度、回路、简单路径 5.子图 6.连通、连通图、连通分量 7.边的权和网 8.生成树
2. while(U≠V) { (u,v)=min(wuv;u∈U,v∈V-U); U=U+{v}; T=T+{(u,v)}; }
3.结束
7.5.1 普里姆(prim)算法
【例7-10】采用Prim方法从顶点v1出发构造图7-11中网所对 应的最小生成树。
构造过程如图7-12所示。
16
V1
V1
V2
7.4.2 广度优先遍历
【例7-9】对于图7-10所示的有向图G4,写出从顶点A出发 进行广度优先遍历的过程。
访问过程如下:首先访问起始顶点A,再访问与A相邻的未被 访问过的顶点E、F,再依次访问与E、F相邻未被访问过的顶 点D、C,最后访问与D相邻的未被访问过的顶点B。由此得到 的搜索序列AEFDCB。此时所有顶点均已访问过, 遍历过程结束。
【例7-1】有向图G1的逻辑结构为:G1=(V1,E1) V1={v1,v2,v3,v4},E1={<v1,v2>,<v2,v3>,<v2,v4>,<v3,v4>,<v4,v1>,<v4,v3>}

数据结构第七章1

数据结构第七章1

} ADT Graph
详见p156~157。
7.2 图的存储结构
图的存储结构比较复杂,其复杂性主要表现在:
◆ 任意顶点之间可能存在联系,无法以数据元素 在存储区中的物理位置来表示元素之间的关系。
◆ 图中顶点的度不一样,有的可能相差很大,若 按度数最大的顶点设计结构,则会浪费很多存储单 元,反之按每个顶点自己的度设计不同的结构,又 会影响操作。 图的常用的存储结构有:邻接矩阵、邻接链表、十 字链表、邻接多重表。
图7-8 带权有向图的数组存储
⑶ 有向图邻接矩阵的特性
有向完全图:对于有向图,若图中顶点数为n ,
用e表示弧的数目,则e[0,n(n-1)] 。具有n(n-1)条边的 有向图称为有向完全图。
完全有向图另外的定义是:
对于有向图G=(V,E),若vi,vjV ,当vi ≠vj时, 有<vi ,vj>E∧<vj , vi >E ,即图中任意两个不同的顶点 间都有一条弧,这样的有向图称为有向完全图。 有很少边或弧的图(e<n㏒n)的图称为稀疏图,反 之称为稠密图。
wij 若<vi,vj>E,即vi , vj邻接,权值为wij
∞ 若<vi,vj>E,即vi , vj不邻接时
a
2
6 3 1
b 3
4 5
e
c
d
vexs a b c d e
(b) 顶点矩阵
∞ ∞ ∞ ∞ ∞
6 2 ∞∞ 3 ∞ 4 ∞ ∞∞
∞ ∞ 1 ∞ ∞
∞ 3 ∞ 5 (v,v’)E,则称顶点v和v’ 互为邻接点,即v和w相 邻接。边(v,v’)依附(incident)与顶点v和v’ 。
对于有向图G=(V ,E),若有向弧<v,w>E,则称 顶点v “邻接到”顶点w,顶点w “邻接自”顶点v ,弧 <v,w> 与顶点v和w “相关联” 。

《数据结构(C语言版)》 数据结构07


有向图:
入度ID(v) :以该顶点为头的弧的数目 出度OD(v) :以该顶点为尾头的弧的数目
2019/3/5
在有向图中, 顶点的度等于该顶点的入度与出度之和。
5
1
5
7
1 3
2
2
3 (a) G1 1 2
4
6
4 (b) G2
5
5
2
2
3
4 (c) G3
6
2
2
(d) G4
图7-1 无向图和有向图
2019/3/5 6
在线性结构中,结点之间的关系是线性关系,除开始结点和
终端结点外,每个结点只有一个直接前趋和直接后继。 在树形结构中,结点之间的关系实质上是层次关系,同层上 的每个结点可以和下一层的零个或多个结点(即孩子)相关,但 只能和上一层的一个结点(即双亲)相关(根结点除外)。 在图结构中,对结点(图中常称为顶点)的前趋和后继个数
2019/3/5
12
5.连通性 在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。 如果图中任意一对顶点vi和vj(vi,vj∈V)都是连通的, 则称此图是 连通图。非连通图的极大连通子图叫做连通分量。 图7-1中G1是连通图,G2是非连通图。 G2中有3个连通分量,如图7-3(a)所示。 6 .强连通图与强连通分量 在有向图中, 若对于每一对顶点vi和vj, 都存在一条从vi到vj和从vj到 vi的路径, 则称此图是强连通图。非强连通图的极大强连通子图叫做 强连通分量。
路径长度
路径上经过的边的数目称为该路径的路径长度。 非带权图的路径长度是指此路径上边/弧的条数。
带权图的路径长度是指路径上各边/弧的权之和。
2019/3/5 9

数据结构——C语言描述(第二版) 第七章 图


❖ }graph;
❖ 若图中顶点信息是0至n-1的编号,则仅需令权值为1,存储一个邻接矩阵就可以 表示图。若是网络,则adjtype为权的类型。由于无向图或无向网络的邻接矩阵是 对称的,故可采用压缩存储的方法,仅存储下三角阵(不包括对角线上的元素)中 的元素即可。显然,邻接矩阵表示法的空间复杂度S(n)=O(这种带权图为网 络(Network)。通常权是具有某种意义的数.
它们可以表示两个顶点 之间的距离,耗费等
图的存储结构
❖ 邻 接 矩 阵 (Adjacency Matrix)是表示顶点之间 相邻关系的矩阵。设G = (V , E) 是 具 有 n 个 顶 点的图,则G的邻接矩 阵是具有如下性质的n 阶方阵:
❖ # define e 8
/ * 图的边(弧)数 */
❖ typedef char vextype;
/ * 顶点的数据类型 * /
❖ typedef float adjtype; / * 权值类型 * /
❖ typedef struct
❖ {vextype vexs[n];
❖ adjtype arcs[n][n];
❖ 图G由两个集合V和E组成,记为G=(V,E),其中v是顶点 的有穷非空集合,E是V中顶点偶对(称为边)的有穷集。 通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G) 可以是空集,若E(G)为空,则图G只有顶点而没有边,称为 空图。
若(于1于v顶顶<(Avj中>iv顶顶点点d,1Gj是a,vv点点vc2iij一,和,)ev并vv是2ni2条和v与>的称t一j)相,有v顶,边边条j,关或向点<是<无联或称边vv(v向lv2。称相iv,,,l,i边和如(邻vvv则vjl,iv>>,图接2称j)相,则关和v7的顶j邻-)(称1联<与顶v点中接2顶于v,顶点vG2;点,ivv点邻是vl,i3称和3v)v>接v和i关i和(2v和v,。到j(或联ivv,vvjv2j互称相, 于3jv,和顶j为)<关v顶关v4点邻v)联4点联。,i,v接。vj(邻若而Iv2n点的如j>接<关ci边图d与于v联ei,是7n-t)

数据结构C语言版第七章 图

第七章图重点难点要求掌握图的基本概念和术语;熟悉图的各种存储结构及其构造算法,了解各种存储结构的特点及其选用原则;熟练掌握图的两种遍历算法,熟练掌握图在实际应用中的主要算法:最小生成树算法、最短路径算法、拓扑排序和关键路径算法。

典型例题1在下图所示的有向图中:(1) 该图是强连通的吗? 若不是,则给出其强连通分量。

(2) 请给出所有的简单路径及有向环。

(3) 请给出每个顶点的度,入度和出度。

(4) 请给出其邻接表、邻接矩阵及逆邻接表。

答:(1)该图是强连通的,所谓强连通是指有向图中任意顶点都存在到其他各顶点的路径。

(2)简单路径是指在一条路径上只有起点和终点可以相同的路径:有v1v2、v2v3、v3v1、v1v4、v4v3、v1v2v3、v2v3v1、v3v1v2、v1v4v3、v4v3v1、v3v1v4、另包括所有有向环,有向环如下:v1v2v3v1、v1v4v3v1(这两个有向环可以任一顶点作为起点和终点)(3)每个顶点的度、入度和出度:D(v1)=3 ID(v1)=1 OD(v1)=2D(v2)=2 ID(v2)=1 OD(v2)=1D(v3)=3 ID(v3)=2 OD(v3)=1D(v4)=2 ID(v4)=1 OD(v4)=1(4)邻接表:(注意边表中邻接点域的值是顶点的序号,这里顶点的序号是顶点的下标值-1) vertex firstedge next┌─┬─┐┌─┬─┐┌─┬─┐0│v1│─→│ 1│─→│ 3│∧│├─┼─┤├─┼─┤└─┴─┘1│v2│─→│ 2│∧│├─┼─┤├─┼─┤2│v3│─→│ 0│∧│├─┼─┤├─┼─┤3│v4│─→│ 2│∧│└─┴─┘└─┴─┘逆邻接表:┌─┬─┐┌─┬─┐0│v1│─→│ 2│∧│├─┼─┤├─┼─┤1│v2│─→│ 0│∧│├─┼─┤├─┼─┤┌─┬─┐2│v3│─→│ 1│─→│ 3│∧│├─┼─┤├─┼─┤└─┴─┘3│v4│─→│0│∧│└─┴─┘└─┴─┘邻接矩阵:0 1 0 10 0 1 01 0 0 00 0 1 02.对n个顶点的无向图和有向图,采用邻接矩阵和邻接表表示时,如何判别下列有关问题?(1) 图中有多少条边?(2)任意两个顶点i和j是否有边相连?(3) 任意一个顶点的度是多少?【解】对于n个顶点的无向图和有向图,用邻接矩阵表示时:(1)设m为矩阵中非零元素的个数无向图的边数=m/2有向图的边数=m(2)无论是有向图还是无向图,在矩阵中第i行,第j列的元素若为非零值,则该两顶点有边相连。

数据结构第7章习题答案

第7章 《图》习题参考答案一、单选题(每题1分,共16分)( C )1. 在一个图中,所有顶点的度数之和等于图的边数的倍。

A .1/2 B. 1 C. 2 D. 4 (B )2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。

A .1/2 B. 1 C. 2 D. 4 ( B )3. 有8个结点的无向图最多有条边。

A .14 B. 28 C. 56 D. 112 ( C )4. 有8个结点的无向连通图最少有条边。

A .5 B. 6 C. 7 D. 8 ( C )5. 有8个结点的有向完全图有条边。

A .14 B. 28 C. 56 D. 112 (B )6. 用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。

A .栈 B. 队列 C. 树 D. 图 ( A )7. 用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。

A .栈 B. 队列 C. 树 D. 图( C )8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2 C. 0 4 2 3 1 6 5 D. 0 1 23465 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是A .0 2 4 3 1 5 6B. 0 1 3 6 5 4 2C. 0 1 3 4 2 5 6D. 0 3 6 1 5 4 2⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3A.0 3 2 1 B. 0 1 2 3C. 0 1 3 2D. 0 3 1 2(A)12. 深度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(D)13. 广度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(A)14. 任何一个无向连通图的最小生成树A.只有一棵 B. 一棵或多棵 C. 一定有多棵 D. 可能不存在(注,生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一)二、填空题(每空1分,共20分)1. 图有邻接矩阵、邻接表等存储结构,遍历图有深度优先遍历、广度优先遍历等方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档