图的定义和术语

合集下载

数据结构第七章-图

数据结构第七章-图

*
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

1-2图的概念和术语_NEW_1025

1-2图的概念和术语_NEW_1025
9
7/4/2013 10:40 PM
相邻(adjacent),关联(incident)

相邻(邻接)(adjacent): 点与点,边与边 邻接到,邻接于: u邻接到v, v邻接于u u 关联(incident):点与边 +1 -1 2 关联次数: 1 1 ? 环(loop):只与一个顶点关联的边 孤立点(isolated vertex): 平行边(parallel edge): 关联集: IG(v) = { e | e与v关联 } 邻域: NG(v)={u | u与v相邻但uv }
7/4/2013 10:40 PM
16
可图化
定理3:非负整数列d=(d1,d2,…,dn)是可图 化的, 当且仅当d1+d2+…+dn=0(mod 2). 证明: () 握手定理 () 奇数度点两两之间连一边, 剩余度用 环来实现. # 例3: (1)d=(5,4,4,3,3,2); (2)d=(5,3,3,2,1).
v2
vi
d = (d1,
d2,
d3,
……
vn vj dd1+1, dd1+2, …… dn) vd1+1 vk
23
7/4/2013 10:40 PM
Havel定理(证明,续)
证明: () (2)若ij(1i<jnviNG(v1)vjNG(v1)), 则由didj可得 k(1knvkNG(vj)vkNG(vi)), 令G1=<V,E{(v1,vi),(vk,vj)}{(v1,vj),(vk,vi)}>, 则G1与G的度数列都还是d,重复这个步骤, 直到化为(1)中情形为止. #

5
3

图的概念术语

图的概念术语

图的概念术语图是离散数学中的一种数学模型,用来描述对象之间的关系。

图由节点(顶点)和边组成,节点表示对象,边表示对象之间的关系。

在图中,一对节点之间的关系可以有多种不同的定义方式,这决定了图的种类和图的应用领域。

图论是研究图的性质、结构和算法的学科。

图的概念术语包括以下内容:1. 节点(顶点):图中的基本元素,用来表示对象。

节点可以是任意类型的数据,比如人、城市、物品等等。

2. 边:图中节点之间的关系,用来表示节点之间的连接或者直接关系。

边可以是有向的(有方向的)或无向的(无方向的),分别用箭头或无箭头表示。

3. 有向图:边是有方向的图,表示节点之间具有指向性的关系。

如果节点A指向节点B,表示A与B有关联,但B与A不一定有关联。

4. 无向图:边是无方向的图,表示节点之间的关系是相互的,没有指向性。

如果节点A与节点B相连,表示A与B有关联,同时B与A也有关联。

5. 权重(边的权值):边上的值或者权重,用来表示两个节点之间的关系的程度。

可以是一个实数或其他类型的值。

6. 路径:在图中,通过多个节点和边连接而成的序列。

路径可以是简单路径(不重复经过节点)或者回路(首尾相连)。

7. 连通图:在无向图中,如果任意两个节点之间都存在路径相连,则称该图为连通图。

如果部分节点之间没有路径相连,则称为非连通图。

8. 强连通图:在有向图中,如果任意两个节点之间都存在路径相连(可以是单向或双向),则称该图为强连通图。

9. 子图:图的一个子集,包含了原图的一部分节点和边。

10. 图的度:一个节点的度是指与该节点相连的边的数量。

对于有向图,分为入度和出度,分别表示指向该节点和指出该节点的边的数量。

11. 图的邻接:两个节点之间直接相连,也即存在一条边直接连接这两个节点。

如果两个节点之间没有直接边相连,则称为不邻接。

12. 连通分量:无向图中的最大连通子图,其中任意两个节点之间都存在路径相连。

13. 图的密度:图中边的数量与节点数量的比值,用来描述图的紧密程度。

北京理工大学数据结构图课件

北京理工大学数据结构图课件
A
B C D
第 5 页
E
7.1 图的定义与术语
3、无向图——无向图G是由两个集合V(G)和 E(G)组成的。 其中:V(G)是顶点的非空有限集。 E(G)是边的有限集合,边是顶点的 无序对,记为 (v,w) 或 (w,v),并且 (v,w)=(w,v)。
第 6 页
7.1 图的定义与术语

例如:
G2 = <V2,E2> V2 = { v0 ,v1,v2,v3,v4 } E2 = { (v0,v1), (v0,v3), (v1,v2), (v1,v4), (v2,v3), (v2,v4) }
V5
第 15 页
7.1 图的定义与术语
非 连 通 图
V0
V1
V2
V3
V0
V1 V3
V2
强连通分量
第 16 页
7.1 图的定义与术语
7、生成树
包含无向图 G 所有顶点的极小连通子图称为G生 成树。 极小连通子图意思是:该子图是G的连通子图, 在该子图中删除任何一条边,子图不再连通。
V0 V2 V3 V4 V3 连通图G1 V1 V0 V1 连通 所有顶点 V4 无回路
第 22 页
7.2 图的存储结构 3、有向图的逆邻接表 顶点:用一维数组存储(按编号顺序) 以同一顶点为终点的弧:用线性链表存储。
vexdata V0 V1 0 1 v0 v1 v2
v3
firstarc 3 0 0 ^ ^
V2
V3
2 3
^
^
2
章 类似于有向图的邻接表,所不同的是: 以同一顶点为终点弧:用线性链表存储
Boolean visited[MAX]; // 访问标志数组

数据结构图

数据结构图

所以:对于点多边少的稀疏图来说,采用邻接表 结构使得算法在时间效 率上大大提高。
16
3/12
广度优先搜索(Breadth First Search,简称BFS ) BFS类似于树的层序遍历; 用一个数组用于标志已访问与否,还需要一个工作队列。
【例】一个无向图的BFS
8
6
CD
4
7
HG
BA
邻接多重表(Adjacency Multilist)
9
边表
• 在某些应用中,有时主要考察图中边的权值以及所依附的 两个顶点,即图的结构主要由边来表示,称为边表存储结 构。
• 边表结构采用顺序存储,用2个一维数组构成,一个存储 顶点信息,一个存储边的信息。边数组的每个元素由三部 分组成:
– 边的起点下标 – 边的终点下标 – 边的权值
1
A [i][
j]


0
如果 (vi , v j ) 或 vi , v j G的边 其它
无权图的邻接矩阵表示示例
V1
V2
V0
3
V3
4 12/15
带权图的邻接矩阵的定义
A [i][ j] wij
如果 (vi , vj ) 或 vi , v j G的边 其它
带图权的图邻的接邻矩接阵矩表阵示表示示例示[例例6.9]
1
第一部分 图的定义和术语
2
图的定义
“图” G可以表示为两个集合:G =(V, E)。每条 边是一个顶点对(v, w) E ,并且 v, w V。
通常:用 |V| 表示顶点的数量(|V| ≥ 1), 用 |E| 表示边的数量(|E| ≥ 0)。
(1) 无向图(完全有向图边数与顶点数之间的 关系) (2) 有向图(完全有向图弧数与顶点数之间的 关系) (3) 简单图:没有重边和自回路的图 (4) 邻接 (5) 路径,路径长度 (6) 无环(有向)图:没有任何回路的(有向)图 (7) 度,入度,出度 (8) 无向图的顶点连通、连通图、连通分量 (9) 有向图的顶点强连通,强连通图、连通分量

《图的定义和术语》课件

《图的定义和术语》课件

连通图(connected graph)
连通图是指图中任意两个顶点之间都存在路径相连的图。
强连通图(strongly connected graph)
强连通图是指有向图中任意两个顶点之间都存在路径相连的图。
无向图(undirected graph)
无向图是指边没有方向的图,任意两个顶点之间都存在边连接。
邻接矩阵是一种表示图的方式,使用二维数组来记录顶点之间的连接关系。
邻接表(adjacency list)
邻接表是一种表示图的方式,使用链表或数组来记录每个顶点的相邻顶点。
图的遍历(traversing the graph)
图的遍历是指按照某种规则遍历图中的所有顶点和边,例如深度优先搜索和广度优先搜索。
图的着色是指给图的顶点分配颜色,使得相邻顶点颜色不同。
欧拉图(Eulerian graph)
欧拉图是指可以沿着每条边只经过一次的闭合路径遍历图中所有边的图。
哈密顿图(Hamiltonian graph)
哈密顿图是指可以沿着一条路径遍历图中所有顶点一次且只一次的图。
邻接矩阵(adjacency matrix)
《图的定义和术语》PPT 课件
本课件将介绍图的定义和一些重要术语,包括顶点、边、路径、圈、简单图、 完全图等,以及图的遍历和邻接矩阵等。
简介
什么是图
图是由一些点和这些点之间连接关系组成的 数据结构,常用于解决各种实际问题。
图的用途
图可以用于模拟网络、路径规划、社交网络 分析等领域,具有广泛的应用价值。
图的定义
图由顶点集合和边集合组成,一般用V表示顶点集合,用E表示边集合。
顶点(vertex)
顶点是图的基本元素,通常用不同的符号或编号表示。在图中表示为圆点。

数据结构(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>}

图的定义和基本术语图的存储结构图的遍历生成树最短路径

图的定义和基本术语图的存储结构图的遍历生成树最短路径
操作结果: 在图G中增添新顶点v。
DeleteVex(&G, v) //删除顶点 初始条件: 图G存在, v和G中顶点有相同特性 。 操作结果:删除G中顶点v及其相关的弧。
InsertArc(&G, v, w) //插入弧 初始条件:图G存在,v 和w是G中两个顶点。 操作结果:在G中增添弧<v,w>,若G是无向的, 则还增添对称弧<w,v>。
DestroyGraph (&G ) // 销毁 初始条件:图G存在。 操作结果:销毁图G 。
LocateVex(G, u) // 定位 初始条件:图G存在,u 和G中顶点有相同特性 。 操作结果: 若G中存在顶点u ,则返回该顶点在 图中位置 ;否则返回其它信息。
GetVex(G, v)// 求值 初始条件:图G存在,v 是G中某个顶点。 操作结果:返回v的值。
//{有向图,有向网,无向图,无向网}
typedef struct ArcCell {// 弧的定义 VRType adj;//VRType是顶点关系类型。对无权图,
//用1或0表示相邻否;对带权图,则为权值类型。 InfoType *info; // 该弧相关信息的指针 } ArcCell ,
AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM];
V2
V3
0110 0000 0001 10 0 0
//- -图的数组(邻接矩阵)存储表示--
#define INFINITY INT_MAX //最大值∞ #define MAX_VERTEX_NUM 20//最大顶点个数 typedef enum{DG,DN,UDG, UDN }graphkind;
表示,称为无向边;

数据结构第七章--图(严蔚敏版)

数据结构第七章--图(严蔚敏版)
9个顶点 个顶点
8个顶点的无向图最多有 条边且该图为连通图 个顶点的无向图最多有28条边且该图为连通图 个顶点的无向图最多有 连通无向图构成条件:边 顶点数 顶点数-1)/2 顶点数*(顶点数 连通无向图构成条件 边=顶点数 顶点数 顶点数>=1,所以该函数存在单调递增的单值反 顶点数 所以该函数存在单调递增的单值反 函数,所以边与顶点为增函数关系 所以28个条边 函数 所以边与顶点为增函数关系 所以 个条边 的连通无向图顶点数最少为8个 所以28条边的 的连通无向图顶点数最少为 个 所以 条边的 非连通无向图为9个 加入一个孤立点 加入一个孤立点) 非连通无向图为 个(加入一个孤立点
28
无向图的邻接矩阵为对称矩阵
2011-10-13
7.2
图的存储结构
Wij 若< vi,vj > 或<vj,v i > ∈E(G)
若G是网(有权图),邻接矩阵定义为 是网(有权图), ),邻接矩阵定义为
A [ i,j ] = , 0或 ∞
如图: 如图:
V1
若其它
V2
3 4
2
V3
2011-10-13
C
A
B
D 2011-10-13 (a )
3
Königsberg七桥问题
• Königsberg七桥问题就是说,能否从某点出发 通过每桥恰好一次回到原地?
C
C
A B

A D
B
D (a)
2011-10-13
(b)
4
第七章 图
7.1 图的定义 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图及其应用 7.6 最短路径
2011-10-13

数据结构-图的定义和术语

数据结构-图的定义和术语

继续进行 ·3
·4
搜索。
·5
·6
·7
·3 ·1
·2
·4 从结点 5 出发的搜索序列:
5、6、2、3、1、4、7 适用的数据结构:栈
图的遍历
2、广度(宽度)优先搜索:
• 树:
A
B
C
D
EFG H
I JK
树的按层次进行访问的次序: A、B、C、D、E、F、G、H、 I、J、K、L
适用的数据结构:队列
L A
1
·1
2
12
11
·2
·11
·12
3
6
7
10
·3 ·6 ·7
·10
4
5
8
9
·4 ·5 ·8
·9
图的广度优先的访问次序:
1、2、11、12、3、6、7、10、4、5、8、9
适用的数据结构:队列
图的连通性问题
2、有向图的强连通分量的求法:续 •强连通分量的求法:
1、对有向图 G 进行深度为主的搜索,按照退 出该结点的次序给结点进行编号。最先退 出的结点的编号为 1,其它结点的编号按 次序逐次增大 1。
点1
3 已在U中
16 21 35
0 0 0
lowcost 表示最小距离
4∞ 0
adjvex 表示相应结点(在V -U中的)
5∞
0
lowcost adjvex
U1
6
5 1
25 35 4
3
6
4
2
566 图G
数组:closedge[ 6 ]
00 15 2 20 35 0 46 2 54 2
lowcost adjvex

7.1图的定义和术语7.2图的存储结构7.3图的遍历7.4图的连

7.1图的定义和术语7.2图的存储结构7.3图的遍历7.4图的连
记为(v,w)或(w,v),并且(v,w)=(w,v)
7.1 图的定义和术语
例7.1
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>}
例7.2 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)}
Wij <vi, vj> 或(vi, vj)∈VR ∞ 无边(弧)
以有向网为例:
N
顶点表: ( v1 v2 v3 v4 v5 v6 )
邻接矩阵: ∞ 5 ∞ 7 ∞ ∞
v1 5
v2
∞∞ 4 ∞ ∞ ∞
3
7
v6
6 1
v5 5
8 9
v4
4 N.Edge =
v3
5
8∞∞∞∞ 9 ∞∞ 5 ∞ ∞ 6 ∞∞ ∞ 5 ∞ ∞ 3∞∞∞1 ∞
<v,w>表示从v到w的弧, 谓词P(v,w)定义了弧<v,w>的意义或信息} 基本操作P: }
基本操作
CreatGraph(&G, V, VR) // 按定义(V, VR) 构造图 DestroyGraph(&G): // 销毁图 LocateVex(G, u); // 若G中存在顶点u,则返回该顶点在 图中“位置” ; 否则返回其它信息。 GetVex(G, v); // 返回 v 的值。

图的定义和术语(4)

图的定义和术语(4)

连 通 图 强 连 通 图
2021/8/17
V0
V1
V2
V3
V4
V0
V1
V2
V3
V0
V1 V4
非 连


V3
V2 V5
V0
V1




V2
V3

7.权 某些图的边具有与它相关的数, 称之为权。这种带权 图叫做网络。
8.子图 设有两个图G=(V,{E})、G1=(V1,{E1}),若 V1 V,E1 E,则称 G1是G的子图。 例:(b)、(c) 是 (a) 的子图
2021/8/17
基本术语:
1.有向图与无向图
在有向图中,顶点对<v, w>是有序的。在无向图中,顶 点对(x, y)是无序的。有向边又可称为弧, <vi,vj>中vi称 为弧尾或初始点,vj称为弧头或终端点。
1
1
3
2
4
3
2
654
5
6
7
无向图
V={1,2,3,4,5,6,7}
VR={(1,3),(3,4),(4,5),(1,2),(2, 6),(2,7),(6,7),(5,6),(1,5),(1,7) } 2021/8/17
adjvex nextarc 4^
3
5^
4
5^
3
^
3^
逆邻接表:有向图中对每个结点建立以Vi为弧头的弧的单链表。
例: a b
cd G1
vexdata firstarc adjvex nextarc
1
a
4^
2
b
1
^
3

图的基本概念及拓扑排序

图的基本概念及拓扑排序
生成树: 是一个极小连通子图,它含有图中全部顶点,但只
有n-1条边。 如果在生成树上添加1条边,必定构成一个环。 若图中有n个顶点,却少于n-1条边,必为非连通 图。
最小生成树:若无向连通带权图G=<V,E,W>,T是G的一棵生成树,T的各边权之
和称为T的权,记做W(T),G的所有生成树中权值最小的生成树 称为最小生成树。
带权图: 即边上带权的图。其中权是指每条边可以标上 具有某种含义的数值(即与边相关的数)。
网 络: =带权图
路径: 在图 G=(V, E) 中, 若从顶点 vi 出发, 沿一些边经过一
些顶点 vp1, vp2, …, vpm,到达顶点vj。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为从顶点vi 到顶点 vj 的路径。它经过的边(vi, vp1)、(vp1, vp2)、...、(vpm, vj)应当是属于E的边。
最小生成树算法: Prim算法和kruskal算法
简单路径:路径上各顶点 v1,v2,...,vm 均不互相重复。
回 路: 若路径上第一个顶点 v1 与最后一个顶点vm 重合,
则称这样的路径为回路或环。
例:
图的数学表示
点: 用整数0, 1, 2, …, V-1表示 边: 用无序数对(u, v)表示, 或者表示成u-v
4. 你认为,对于给定的两个位置A,B,聪明的机器人从A位置到B位置至少需要判断几次?
5. input
6. 第一行:M 表示以下有M组测试数据(0<M<=8)
7. 接下来每组有两行数据
8.
头一行:N A B(1<=N<=50,1<=A,B<=N)
9.
下一行:K1 K2···Kn(0<=Ki<=N)

图论 第1章 图的基本概念

图论 第1章 图的基本概念

G
G[{e1 , e4 , e5 , e6 }]
G − {e5 , e7 }
G + {e8 }
图G1,G2的关系
设 G1 ⊆ G, G2 ⊆ G. 若 V (G1 ) V (G2 ) = φ x-disjoint) 若 E (G1 ) E (G2 ) = φ ,则称G1和G2是边不交的 (edge-disjoint) G1和G2的并, G1 G2 其中 V (G1 G2 ) = V (G1 ) V (G2 )
连通性
设 u, v 是图G的两个顶点,若G中存在一条 (u, v)
≡ v表示顶点 u 和v是连通的。 如果图G中每对不同的顶点 u , v都有一条 (u , v)
以 u
道路,则称顶点 u和 v是连通的(connected)。
道路,则称图G是连通的。
连通图
连通图
图G的每个连通子图称为G的连通分支,简
证明:G中含奇数个 1 (n − 1) 度点。 2 | Vo | 为 证明 V (G ) = Vo Ve 由推论1.3.2知, 偶数。因为 n ≡ 1(mod 4) ,所以n为奇数个。 因此,| Ve | 为奇数个。 n ≡ 1(mod 4) , 1 2 ( n − 1) 为偶数。 1 1 d ( x ) = n − 1 − d ( x ) ≠ (n − 1) 设 x ∈Ve。若 d ( x) ≠ 2 (n − 1),则 且 2 为偶数。由 G ≅ G c ,存在y,使得 d ( y) = d ( x) 为偶数。即 y ∈Ve 且 d ( y) ≠ 1 (n − 1) 。Ve 中度不为 2 1 (n − 1) 的点是成对的出现的。 2
G
G[{v1 , v2 , v3 }]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. 设有两个图G=(V,{E})和图G′=(V′,{E′}), 若V′ 且E ′ V
G′为G的子图。 E, 则称图
2 4 5 3
1 3 6
5
6
图与子图
3. 邻接点 度 入度和出度 对于无向图 G=(V, {E}),如果边(v,v′)∈E, 则称顶 点v, v′互为邻接点,即v, v′相邻接。边(v, v′)依附 于顶点v和v’ ,或者说边(v,v’)与顶点v和v′相关联, 对于 有向图G=(V, {A})而言,若弧<v,v′>∈A,则称顶点v邻 接到顶点v′,顶点v′邻接自顶点v,或者说弧<v, v′>与 顶点v和v′相关联。
1 3 2
5 4 G2
7 6
2 1
4 3 G1
5 6
顶点5的度:3 顶点2的度:4
顶点2入度:1 出度:3 顶点4入度:1 出度:0
4. 权与网 在实际应用中,有时图的边或弧上往往与具有一定意 义的数有关,即每一条边都有与它相关的数,称为权, 这些权可以表示从一个顶点到另一个顶点的距离或耗 费等信息。我们将这种带权的图叫做赋权图或网。
例 1 5 7
v
W 3 2 G2 4 6
图的基本操作
{结构初始化} CreateGraph(&G,
V, VR); 初始条件:V 是图的顶点集,VR 是图中弧 的集合。 操作结果:按 V 和 VR 的定义构造图 G。 {销毁结构} DestroyGraph(&G); 初始条件:图 G 存在。 操作结果:销毁图 G。

若<v,w>∈VR,则<v,w>表示从顶点v到顶点w的一条弧 (arc),并称v为弧尾(tail)或起始点,称w为弧头 (head)或终端点,此时图中的边是有方向的。若图中 的关系均为弧,则称这样的图为有向图。

v
W 1
2
4 3
5 6
G1
若<v,w>∈VR, 必有<w,v>∈VR,VR是对称关系,这时以无 序对(v,w)来代替两个有序对<v,w>和<w,v>,表示x和y之 间的一条边(edge)。若图中的关系均为边的关系,则此时的 图称为无向图。
2 2 1
1
3
3
对于无向图而言,顶点v 的度是指和v相关联边的数 目,记作TD(v)。 在有向图中顶点v的度有出度和入度两部分,其中 以顶点v为弧头的弧的数目成为该顶点的入度,记作ID (v),以顶点v为弧尾的弧的数目称为该顶点的出度, 记作OD(v),则顶点v的度为TD(v)=ID(v)+ OD (v)。
第七章 图
7.1 7.2 7.3 7.4 7.5 7.6 图的定义和术语 图的存储结构 图的遍历 图的连通性问题 有向无环图及其应用 最短路径
学习目标

熟练掌握图中常用的术语和概念。 熟练掌握图的邻接矩阵和邻接表的存储方式并能熟练 运用这两种存储方法建立图的存储结构。 熟练掌握图的深度优先遍历和广度优先遍历的方法和 算法。 熟练掌握最小生成树的概念和算法。 掌握拓扑排序并能求出拓扑序列。 掌握最短路径算法并能求出最短路径。
7.1 图的定义和术语


图(Graph)是一种网状数据结构, 其形式化定义为 Graph =(V,R V={x|x∈DataObject}; R={VR} VR={<v,w>| v,w∈V且P(v,w),<v,w>表示从v到w 的弧,谓词P(v,w)定义了弧<v,w>的意义或信息 } DataObject为一个集合,该集合中的所有元素具有相同的 特性。V中的数据元素通常称为顶点(vertex),VR是两 个顶点之间关系的集合。 P(x,y)表示x和y之间有特定的关联属性P。
2 1
4 3
5 6
路径:1,2,3,5,6,3 路径长度:5 简单路径:1,2,3,5 回路:1,2,3,5,6,3,1 简单回路:3,5,6,3
1 3 2
5 4 G2
7 6
路径:1,2,5,7,6,5,2,3 路径长度:7 简单路径:1,2,5,7,6 回路:1,2,5,7,6,5,2,1 简单回路:1,2,3,1
G4 无向图
2.二元组形式:
2
4
5
1 G1
3
6
G1 = (V,E) 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
5
7
3
2 G2
4
6
G2 = (V,E) 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)}
5.

无向图G=(V,{E})中从顶点v到v′的路径是一个顶 点序列vi0, vi1,vi2,…,vin,其中(vij-1,vij) ∈E,1≤j≤n。如果图G是有向图,则路径也是有向的, 顶点序列应满足<vij-1,vij>∈A, 1≤j≤n。路径的 长度是指路径上经过的弧或边的数目。在一个路径中, 若其第一个顶点和最后一个顶点是相同的,即v=v′, 则称该路径为一个回路或环。若表示路径的顶点序列 中的顶点各不相同,则称这样的路径为简单路径。除 了第一个和最后一个顶点外,其余各顶点均不重复出 现的回路为简单回路。

BFSTraverse(G, Visit()); 初始条件:图 G 存在,Visit 是顶点的应用函数。 操作结果:对图 G 进行广度优先遍历。遍历过程中对 每个顶点调用函数Visit 一次且仅一次。一旦 visit() 失败,则操作失败。
图的表示
1.逻辑图表示:如图G1和G2
G3 有向图
Hale Waihona Puke 图的基本术语
1. 完全图、稀疏图与稠密图
设n表示图中顶点的个数,用e表示图中边或弧的数目, 不 考虑图中每个顶点到其自身的边或弧。则:



对于无向图而言,其边数e的取值范围是0~n(n-1) /2。 我们称有n(n-1)/2条边(图中每个顶点和其余n-1 个顶点都有边相连)的无向图为无向完全图。 对于有向图而言,其边数e的取值范围是0~n(n-1)。 我们称有n(n-1)条边(图中每个顶点和其余n-1个顶点都 有弧相连)的有向图为有向完全图。 对于有很少条边的图(e<n logn)称为稀疏图, 反 之称为稠密图。
相关文档
最新文档