数据结构《第七章、图》PPT课件
合集下载
chapter7图.ppt
}ArcCell, //定义弧或边的信息
AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //用矩阵来表示图的顶点之间的关系
11-Apr-20
37
图的C语言描述
typedef struct { VertexType vexs[MAX_VERTEX_NMU]; //表示顶点的数组 AdjMatrix arcs; //表示顶点之间关系的邻接矩阵 GraphKind kind; //表示图的类型 int vexnum, arcnum; //实际的顶点数目、弧或边的数目
32
有向网的邻接矩阵示例
3
V6
1
V1
6
5
V2
8
9 7
4
V3
5
V5
5
V4
5 7
4
8 9
5
6
5
3 1
11-Apr-20
33
邻接矩阵的应用
判定两个顶点之间是否有边或弧存在
计算任意一个顶点的度
在无向图中, 统计邻接矩阵第 i 行 (列) 1 的个数可得顶点i
度优先的原则遍历图 13)BFSTravese(&G, v, visit());从顶点v开始,根据广度
优先的原则遍历图 }
11-Apr-20
7
有向图与无向图示例
V1
V2 有向图
V1
V2
无向图
V3
V4
G1 (V1,{A1})
V1 {v1, v2 , v3 , v4}
A1 { v1, v2 , v1, v3 , v3, v4 , v4, v1 }
的全部顶点,但只有足以生成一棵树的n-1条边。
AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //用矩阵来表示图的顶点之间的关系
11-Apr-20
37
图的C语言描述
typedef struct { VertexType vexs[MAX_VERTEX_NMU]; //表示顶点的数组 AdjMatrix arcs; //表示顶点之间关系的邻接矩阵 GraphKind kind; //表示图的类型 int vexnum, arcnum; //实际的顶点数目、弧或边的数目
32
有向网的邻接矩阵示例
3
V6
1
V1
6
5
V2
8
9 7
4
V3
5
V5
5
V4
5 7
4
8 9
5
6
5
3 1
11-Apr-20
33
邻接矩阵的应用
判定两个顶点之间是否有边或弧存在
计算任意一个顶点的度
在无向图中, 统计邻接矩阵第 i 行 (列) 1 的个数可得顶点i
度优先的原则遍历图 13)BFSTravese(&G, v, visit());从顶点v开始,根据广度
优先的原则遍历图 }
11-Apr-20
7
有向图与无向图示例
V1
V2 有向图
V1
V2
无向图
V3
V4
G1 (V1,{A1})
V1 {v1, v2 , v3 , v4}
A1 { v1, v2 , v1, v3 , v3, v4 , v4, v1 }
的全部顶点,但只有足以生成一棵树的n-1条边。
数据结构第七章图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)弧头和弧尾:有序偶对的第一个结点称为始点(或弧尾,即不带箭 头的一端),有序偶对的第二个结点称为终点(或弧头,即带箭头的一 端)。
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章图ppt课件
InfoType *info;
}VNode,AdjList[MAX_V];
}ArcNode;
typedef struct //图的邻接表类型
{ AdjList vertices; //存储图中所有顶点的数组
int vexnum,arcnum; //存储图的顶点数目和边(弧)的数目
int kind; //图的种类标志
返回
表结点
adjvex nextarc info
表头结点
data firstarc
typedef struct ArcNode typedef struct
{ int adjvex;
{ VertexType data;
struct ArcNode *nextarc; ArcNode *firstarc;
}ArcCell,AdjMatrix[MAX_V][MAX_V];
typedef struct
{ VertexType vex[MAX_V]; //顶点信息数组(如顶点编号等)
AdjMatrix arcs;
//图的邻接矩阵
int vexnum,arcnum; //图的顶点数和边(弧)的数目
GraphKind kind;//图的种类标志
A CB F DE G (a) 有向图G1
A BC D EF (b) 无向图G2
返回
2 几个常用术语 可以证明,对于具有n个顶点的无向图的边和具有n个
顶点的有向图的弧的最大数目分别为n(n-1)/2和n(n-1)。 称具有n(n-1)/2条边的无向图为完全图(completed
grahp)。 称具有n(n-1)条弧的有向图为完全有向图 称边或弧的数目e<nlogn的图为稀疏图(sparse
数据结构精品PPT课件第七章 图(ppt文档)
V0
V1
V2
V3
V4
V0
V1
V2
V3
练例习
245
1
3
6
G1
图G1中:V(G1)={1,2,3,4,5,6} E(G1)={<1,2>, <2,1>, <2,3>, <2,4>, <3,5>, <5,6>, <6,3>}
例 1
57
32
46
G2
图G2中:V(G2)={1,2,3,4,5,6,7} E(G1)={(1,2), (1,3), (2,3), (2,4),(2,5), (5,6), (5,7)}
1
V1 0 0 1 0
1
V2 0 0 1 1
2
V3 0 0 0 1
V4 1 1 0 0 2
出度
1 2 1 2
0
0 1 01 1
1
2
G1.arcs
1
10
0 1
1 0
0 1
3
1010
0
0 1 01
1
G2.arcs 1 0 1
2
000
无向图的邻接矩阵是对称的; 有向图的邻接矩阵可能是不对称的。
V1={v0 ,v1,v2,v3,v4 } E1={(v0,v1),(v0,v3),(v1,v2),(v1,v4),(v2,v3)(v2,v4)}
7.1图的定义和术语
例
V0
V1
V2
V3
有序对<vi,vj> : 用以为vi起点、以vj 为终点的有向线段表 示,称为有向边或弧 ;
G2=<V2,E2>
《数据结构》课件——第7章 图
邻接矩阵
arc=
V1
1
0
1
1
V1
V2
V2 0 1 0 0
V3 1 1 0 0
无向图的邻接矩阵的特点?
主对角线为 0 且一定是对称矩阵。
无向图的邻接矩阵
V0
V3
V1
V2
如何求顶点 Vi 的度?
012 3
vertex= V0 V1 V2 V3
V0 V1 V2 V3
V0 0 1 0 1 arc= V1 1 0 1 1
V0
V1
V2
V3
V4
生成树
V0 V3
V1
V6
生成森林
V5
V4
V2
V0
V3 V0 V4
V1 V2
V4
V1 V3 V6 V5
V2
案例:六度空间理论
➢ 你和任何一个陌生人之间所间隔的 人不会超过6个,也就是说,最多通 过6个中间人你就能够认识任何一个 陌生人。
图的抽象数据类型定义
图是一种与具体应用密切相关的数据结构,它的基本操作往往随 应用不同而有很大差别。下面给出一个图的抽象数据类型定义的例子 ,简单起见,基本操作仅包含图的遍历,针对具体应用,需要重新定 义其基本操作。
V0 V3
V1 V6
V5
V4
V2
V0
V1
V4 V3
V2 V6
连通分量是对无向图的一种划分
V5
图的基本术语
➢ 强连通图:在有向图中,对图中任意一对顶点vi和vj (i≠j),若 从顶点vi到顶点vj和从顶点vj到顶点vi均有路径,则称该有向图是
强连通图。 ➢ 强连通分量:非强连通图的极大强连通子图。
数据结构(第7章图)
图的表示方法
总结词
图可以用邻接矩阵或邻接表来表示。
详细描述
邻接矩阵是一种二维数组,其中行和列都对应于图的顶点,矩阵中的元素表示顶点之间的边。如果存在一条 从顶点i到顶点j的边,则矩阵中相应位置的值为1;否则为0。邻接表是一种链表结构,其中每个顶点都包含
一个链表,链表中的元素是与该顶点相邻的顶点。邻接表更节省空间,适用于稀疏图。
路线规划
图论用于构建和优化交通路网,提供最佳的出行路线建议。例如, Dijkstra算法和A*搜索算法可用于导航系统中的路径规划。
交通控制
通过图论,可以分析和优化交通信号灯的控制逻辑,以减少交通拥 堵和提高路网的运行效率。
物流配送
在物流和配送领域,图论用于优化车辆路径和货物配送计划,降低运 输成本和提高效率。
03
Prim算法
该算法从任意一个顶点开始,每次选择一条连接已选顶点和未选顶点的
权重最小的边,将其添加到最小生成树中,直到所有顶点都被选中。
最短路径问题的优化
Dijkstra算法
该算法用于求解单源最短路径问题,即从指定的源节点出发,找到到其他所有节点的最短路径。
Bellman-Ford算法
该算法用于求解带负权重的单源最短路径问题,即从指定的源节点出发,找到到其他所有节点的最短 路径,允许存在负权重的边。
连通度
连通度是衡量一个图连通性的度量,表示从一个顶点出发 可以到达图中其他连通图中,一棵包含图中所有顶点的树称为最小生成树,如果该树的边的权值和最 小。
最小生成树的性质
最小生成树具有一些重要的性质,如唯一性、最优性等。其中,唯一性是指在给定权值矩 阵下,最小生成树是唯一的;最优性是指最小生成树的权值和一定小于或等于其他任意一 棵树的权值和。
数据结构课件
while (i>0)
{
/*读入顶点对号,建立边表*/
e++;
/*合计边数 */
p = (pointer)malloc(size(struct node));/*生成新旳邻接点序号为j旳表结点*/
p-> vertex = j;
p->next = ga->adlist[i].first;
ga->adlist[i].first = p;
三个强连通分量
第七章 图
权:图旳边具有与它有关旳数, 称之为权。这种带 权图叫做网络。
10
1
6
15
27 5
12
3 76
9
8
6 3
4
16
7
有向权图
60
AB 40 80 C源自307535
D
E
45
无向权图
第七章 图
生成树:连通图G旳一种子图假如是一棵包 括G旳全部顶点旳树,则该子图称为G旳生成
树;显然,n个顶点旳生成树具有n-1条边
scanf (“%d”, &(ga->n));
for (i =1; i<= ga->n; i++)
{
/*读入顶点信息,建立顶点表*/
scanf (“ \n %c”, &( ga->adlist[i].data) )
;
ga->adlist[i].first = NULL; }
e = 0; /*开始建邻接表时,边数为0*/
ga->edges[i][j] = 0;
for (k = 0;k<ga->e;k++) /*读入边旳顶点编号和权值,建立邻接矩阵*/
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于“弧”是有方向的,因此称由顶点集 和弧集构成的图为有向图。
例如: G1 = (V1, VR1)
其中 A
V1={A, B, C, D, E}
B
E VR1={<A,B>, <A,E>,
C
D
<B,C>, <C,D>, <D,B>, <D,A>, <E,C> }
若<v, w>VR 必有<w, v>VR, 则称 (v,w) 为顶点 v 和顶点 w 之间存在一条边。
A
B
EB
E
CF
CF
假设一个连通图有 n 个顶点和 e 条边, 其中 n-1 条边和 n 个顶点构成一个极小连 通子图,称该极小连通子图为此连通图的 生成树。
B A
F
C D
E
对非连通图,则 称由各个连通分 量的生成树的集 合为此非连通图 的生成森林。
基本操作
结构的建立和销毁 对顶点的访问操作
插入或删除顶点 插入和删除弧
7.2 图的存储表示
一、图的数组(邻接矩阵)存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
一、图的数组(邻接矩阵)存储表示
定义:矩阵的元素为
{ 0 (i,j)VR
Aij= 1 (i,j)VR
B A
F
C D
E
010010 100010 000101 001001 110000 011100
含有 e=n(n-1) 条弧的有向图称作 有 向完全图;
若边或弧的个数 e<nlogn,则称作 稀疏图,否则称作稠密图。
假若顶点v 和顶点w 之间存在一条边, 则称顶点v 和w 互为邻接点, 边(v,w) 和顶点v 和w 相关联。
和顶点v 关联的边的数目定义为边的度。
例如: 右侧图中
B
C
ID(B) = 3 ID(A) = 2
对邻接点的操作 遍历
结构的建立和销毁
CreatGraph(&G, V, VR): // 按定义(V, VR) 构造图
DestroyGraph(&G): // 销毁图
对顶点的访问操作
LocateVex(G, u); // 若G中存在顶点u,则返回该顶点在 // 图中“位置” ;否则返回其它信息。
GetVex(G, v); // 返回 v 的值。
CF
个顶点相同的路径。
若图G中任意两个顶
B
点之间都有路径相通,
则称此图为连通图; A
C D
B A
F
C
F
E
D E
若无向图为非连通图, 则图中各个极大连通 子图称作此图的连通 分量。
对有向图,若任意两个顶点之间都存在
一条有向路径,则称此有向图为强连通图。
否则,其各个强连通子图称作它的 强连通分量。
A
DeleteArc(&G, v, w); //在G中删除弧<v,w>,若G是无向的, //则还删除对称弧<w,v>。
遍历
DFSTraverse(G, v, Visit()); //从顶点v起深度优先遍历图G,并对每 //个顶点调用函数Visit一次且仅一次。
BFSTraverse(G, v, Visit()); //从顶点v起广度优先遍历图G,并对每 //个顶点调用函数Visit一次且仅一次。
PutVex(&G, v, value); // 对 v 赋值value。
对邻接点的操作
FirstAdjVex(G, v);
// 返回 v 的“第一个邻接点” 。若该顶点 //在 G 中没有邻接点,则返回“空”。
NextAdjVex(G, v, w); // 返回 v 的(相对于 w 的) “下一个邻接
{ u=vi,0,vi,1, …, vi,m=w}中,(vi,j-1,vi,j)VR 1≤j≤m, 则称从顶点u 到顶点w 之间存在一条路径。
路径上边的数目称作路径长度。
如:从A到F长度为 3 的路径{A,B,C,F}
简单路径:指序列中顶点
不重复出现的路径。
A
简单回路:指序列中
B
E 第一个顶点和最后一
有向图的邻接矩阵 为非对称矩阵
A
B
E
CF
01001 00100 00010 11000 00100
typedef struct ArcCell { // 弧的定义 VRType adj; // VRType是顶点关系类型。 // 对无权图,用1或0表示相邻否; // 对带权图,则为权值类型。 InfoType *info; // 该弧相关信息的指针
// 点”。若 w 是 v 的最后一个邻接点,则 // 返回“空”。
插入或删除顶点
InsertVex(&G, v); //在图G中增添新顶点v。
DeleteVex(&G, v); // 删除G中顶点v及其相关的弧。
插入和删除弧
InsertArc(&G, v, w); // 在G中增添弧<v,w>,若G是无向的, //则还增添对称弧<w,v>。
连通图、连通分量、 强连通图、强连通分量 生成树、生成森林
15 A 9
11
B 7 21
E
3
C2 F
弧或边带权的图 分别称作有向网或 无向网。
设图G=(V,{VR}) 和 图 G=(V,{VR}), 且 VV, VRVR, 则称 G 为 G 的子图。
B B
C
A E
A
假设图中有 n 个顶点,e 条边,则 含有 e=n(n-1)/2 条边的无向图称作完 全图;
由顶点集和边 集构成的图称
作无向图。
例如: G2=(V2,VR2)
B
V2={A, B, C, D, E, F}
VR2={(A, B), (A, E), A
(B, E), (C, D), (D, F),
(B, F), (C, F) }
F
C D
E
名词和术语
网、子图 完全图、稀疏图、稠密图 邻接点、度、入度、出度 路径、路径长度、简单路径、简单回路
A F
D E
对有向图来说,由于弧有方向性,则
A
有入度和出度之分
B
E
CF 例如:
OD(B) = 1
顶点的出度: 以顶点v 为弧尾的弧的数目;
顶点的入度: 以顶点 v为弧头的弧的数目。
ID(B) = 2 TD(B) = 3
顶点的度(TD)= 出度(OD)+入度(ID)
设图G=(V,{VR})中的一个顶点序列
} ArcCell, AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM];
typedef struct { // 图的定义 VertexType // 顶点信息 vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; // 弧的信息 int vexnum, arcnum; // 顶点数,弧数 GraphKind kind; // 图的种类标志
例如: G1 = (V1, VR1)
其中 A
V1={A, B, C, D, E}
B
E VR1={<A,B>, <A,E>,
C
D
<B,C>, <C,D>, <D,B>, <D,A>, <E,C> }
若<v, w>VR 必有<w, v>VR, 则称 (v,w) 为顶点 v 和顶点 w 之间存在一条边。
A
B
EB
E
CF
CF
假设一个连通图有 n 个顶点和 e 条边, 其中 n-1 条边和 n 个顶点构成一个极小连 通子图,称该极小连通子图为此连通图的 生成树。
B A
F
C D
E
对非连通图,则 称由各个连通分 量的生成树的集 合为此非连通图 的生成森林。
基本操作
结构的建立和销毁 对顶点的访问操作
插入或删除顶点 插入和删除弧
7.2 图的存储表示
一、图的数组(邻接矩阵)存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
一、图的数组(邻接矩阵)存储表示
定义:矩阵的元素为
{ 0 (i,j)VR
Aij= 1 (i,j)VR
B A
F
C D
E
010010 100010 000101 001001 110000 011100
含有 e=n(n-1) 条弧的有向图称作 有 向完全图;
若边或弧的个数 e<nlogn,则称作 稀疏图,否则称作稠密图。
假若顶点v 和顶点w 之间存在一条边, 则称顶点v 和w 互为邻接点, 边(v,w) 和顶点v 和w 相关联。
和顶点v 关联的边的数目定义为边的度。
例如: 右侧图中
B
C
ID(B) = 3 ID(A) = 2
对邻接点的操作 遍历
结构的建立和销毁
CreatGraph(&G, V, VR): // 按定义(V, VR) 构造图
DestroyGraph(&G): // 销毁图
对顶点的访问操作
LocateVex(G, u); // 若G中存在顶点u,则返回该顶点在 // 图中“位置” ;否则返回其它信息。
GetVex(G, v); // 返回 v 的值。
CF
个顶点相同的路径。
若图G中任意两个顶
B
点之间都有路径相通,
则称此图为连通图; A
C D
B A
F
C
F
E
D E
若无向图为非连通图, 则图中各个极大连通 子图称作此图的连通 分量。
对有向图,若任意两个顶点之间都存在
一条有向路径,则称此有向图为强连通图。
否则,其各个强连通子图称作它的 强连通分量。
A
DeleteArc(&G, v, w); //在G中删除弧<v,w>,若G是无向的, //则还删除对称弧<w,v>。
遍历
DFSTraverse(G, v, Visit()); //从顶点v起深度优先遍历图G,并对每 //个顶点调用函数Visit一次且仅一次。
BFSTraverse(G, v, Visit()); //从顶点v起广度优先遍历图G,并对每 //个顶点调用函数Visit一次且仅一次。
PutVex(&G, v, value); // 对 v 赋值value。
对邻接点的操作
FirstAdjVex(G, v);
// 返回 v 的“第一个邻接点” 。若该顶点 //在 G 中没有邻接点,则返回“空”。
NextAdjVex(G, v, w); // 返回 v 的(相对于 w 的) “下一个邻接
{ u=vi,0,vi,1, …, vi,m=w}中,(vi,j-1,vi,j)VR 1≤j≤m, 则称从顶点u 到顶点w 之间存在一条路径。
路径上边的数目称作路径长度。
如:从A到F长度为 3 的路径{A,B,C,F}
简单路径:指序列中顶点
不重复出现的路径。
A
简单回路:指序列中
B
E 第一个顶点和最后一
有向图的邻接矩阵 为非对称矩阵
A
B
E
CF
01001 00100 00010 11000 00100
typedef struct ArcCell { // 弧的定义 VRType adj; // VRType是顶点关系类型。 // 对无权图,用1或0表示相邻否; // 对带权图,则为权值类型。 InfoType *info; // 该弧相关信息的指针
// 点”。若 w 是 v 的最后一个邻接点,则 // 返回“空”。
插入或删除顶点
InsertVex(&G, v); //在图G中增添新顶点v。
DeleteVex(&G, v); // 删除G中顶点v及其相关的弧。
插入和删除弧
InsertArc(&G, v, w); // 在G中增添弧<v,w>,若G是无向的, //则还增添对称弧<w,v>。
连通图、连通分量、 强连通图、强连通分量 生成树、生成森林
15 A 9
11
B 7 21
E
3
C2 F
弧或边带权的图 分别称作有向网或 无向网。
设图G=(V,{VR}) 和 图 G=(V,{VR}), 且 VV, VRVR, 则称 G 为 G 的子图。
B B
C
A E
A
假设图中有 n 个顶点,e 条边,则 含有 e=n(n-1)/2 条边的无向图称作完 全图;
由顶点集和边 集构成的图称
作无向图。
例如: G2=(V2,VR2)
B
V2={A, B, C, D, E, F}
VR2={(A, B), (A, E), A
(B, E), (C, D), (D, F),
(B, F), (C, F) }
F
C D
E
名词和术语
网、子图 完全图、稀疏图、稠密图 邻接点、度、入度、出度 路径、路径长度、简单路径、简单回路
A F
D E
对有向图来说,由于弧有方向性,则
A
有入度和出度之分
B
E
CF 例如:
OD(B) = 1
顶点的出度: 以顶点v 为弧尾的弧的数目;
顶点的入度: 以顶点 v为弧头的弧的数目。
ID(B) = 2 TD(B) = 3
顶点的度(TD)= 出度(OD)+入度(ID)
设图G=(V,{VR})中的一个顶点序列
} ArcCell, AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM];
typedef struct { // 图的定义 VertexType // 顶点信息 vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; // 弧的信息 int vexnum, arcnum; // 顶点数,弧数 GraphKind kind; // 图的种类标志