图的概念及应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
1 3
4
基本术语
1、如果图中每条边都是有方向的,则图称 为有向图,反之称为无向图。
2、有向边称为弧,有向边的起始点称为弧尾, 终点称为弧头,弧用尖括号表示<V1,V2> ;无向 边称为边,用圆括号表示(V1,V2) 。
V(G)={ V1,V2,V3 } E(G)={ <V1,V2>,<V2,V1>, <V3,V2>, <V3,V1> }
广度优先搜索G8得到的BFS序列为: v1 v2 v3 v4 v5 v6 v7 v8 v9
v0
v1
v2
v3
v4
v5
v6
v7
广度优先序列为:v0,v1,v3,v4,v2,v6,v5,v7
1
2
3
4
5
6
广度优先序列为:v1,v2,v3,v4,v5,v6
A城
50
170 B城
40
150
C城
80
最短路径
D城 100 E城
1
2
3
4
5
1
2
3
4
5
7、子图指设G=(V,E)是一个图,若V’ 是V的子集,E’是E的子集,则图G’= (V’,E’)称为图G的子图。
1
2
3
4
1 2
2
1
2 3
4
1 3
4
8、带权图:如果图中每条边都有与之相关的数值,
图称为带权图。
9、路径(长度、带权图路径的长度):在图中, 从顶点Vi沿着一系列的边到达顶点Vj所经过的顶 点序列称为两个顶点间的路径。
图的邻接链表
在邻接表结构中,为图中的每个顶点v建立一个链 表,即邻接矩阵中的每一行对应于一个线性链接表, 链接表的表头对应于邻接矩阵该行的顶点,链接表 中的每个结点则对应于该行的一个非零元素。
1
2
3
4
0 v1
1
1 v2
0
2^
2
3^
2 v3
0
1
3^
3 v4
1
2^
图的邻接表
1
2
01
12
3
4
23
34
A
B
C
D
E
F
G
H
树形结构示意图
1
2
6
3
5
4
数据元素之间的关系是任意的
图的定义
图由两个集合构成: 1.顶点的有穷非空集V(G); 2.边的有穷集E(G);一般记作G=(V,E)。
V(G)={ V1,V2,V3,V4 }
E(G)={(V1,V2),
(V1,V3),(V2,V3),
(V2,V4),(V3,V4)}
1
2
6
1
2
6
3
5
4
3
5
4
图的存储结构
一、邻接矩阵 二、邻接链表(逆邻接表)
邻接矩阵
图的邻接矩阵表示法是用一个矩阵来表示图中顶点 的邻接关系。具有n个顶点的图的邻接矩阵是按如下 方法定义的n阶方阵:
1,若(Vi,Vj)或<Vi,Vj>∈E(G) aij= 0,反之
1
2
3
4
5
01100 10110 11011 01101 00110
13、连通分量:非连通图的每一个连通的部分称为连通 分量。
A C E
F H
I
BA D
G H
JI 无向图及其连通分量
BC E
F D
JG
14、强连通图:对于有向图,若其中每一对不同顶点Vi和 Vj之间都有Vi到Vj和Vj到Vi的路径,则称Vi和Vj是强连通 的。若有向图中任何一对顶点都是强连通的,则称有向图 为强连通图。非强连通图的每一个强连通部分称为强连通 分量。
图的遍历通常有深度优先搜索和广度优先搜索两 种方Baidu Nhomakorabea。
深度优先搜索
(1)指定图的某个尚未被访问的顶点v作为起始点。
(2)访问顶点v。
(3)以顶点v的所有未被访问过的邻接点作为搜索 起点,进行深度优先搜索。
(4)如果图中仍有未被访问过的顶点,则转至 (1);否则,搜索结束。
对图进行深度优先搜索时,按被访问的顶点的 先后顺序所得到的顶点序列,称为该图的深度优先 搜索序列,简称DFS序列。
5
45
顶点的度? 边的数目?
1
2^
0
2
3^
0
1
3
4^
1
2
4^
2
3^
1 3
2 4
5
6
01
2
4^ 0 1
1^
12
0
3^ 1 2 ^
23
3^
23
0^
34 ^
34
1
2
4^
45
3
5^ 4 5
0^
56 ^
56
4^
邻接表
逆邻接表
图的遍历
从图中某一顶点出发,按照某种方式沿着图中的 边访问图中所有顶点,使每个顶点仅被访问一次。 这个过程叫做图的遍历。
广度优先搜索
1、首先访问指定的顶点V1; 2、然后依次访问V1相邻的未被访问过的顶
点W1,W2,……WT ; 3、最后依次从W1,W2,……WT出发,
重复上述访问过程。 4、直到所有顶点都被访问过为止。
v1
v2
v3 v8
v4
v5 v9
v6
v7
v1 v2 v4 v5
v3
v8
v6 v9
v7
广度优先搜索过程
1
30
35
25 2
3
30
12
4
∞ 30 35 ∞ ∞ ∞ 25 ∞ ∞∞∞ ∞ ∞ 30 12 ∞
图的邻接矩阵的定义 typedef struct graph { int vertex[vertexnum];
int adjmatrix [vertexnum][vertexnum]; }Graph;
城市之间的通信线路网,其中顶点表示城市,边表示两 个城市之间的通信线路,边上的权值表示线路的造价。 求通信线路总造价最小的最佳方案?
1
3
2
3、完全图:任意两个顶点都有边。
A
B
C
A
B
C
DE
4、有向完全图具有n(n-1)条边,无向 完全图具有(n(n-1))/2条边。
5、对于无向图,顶点的度表示与顶点相关 连的边的数目。
6、对于有向图,顶点的度表示为出度与入 度之和。出度指以顶点为弧尾的弧的数目。 入度指以顶点为弧头的弧的数目。
10、简单路径:如果一条路径上所有顶点除了起
始顶点和终端顶点外,其它顶点都是不同的,则
称该路径为简单路径。
1
11、回路:在一条路径中,
2
7
如果起始点和终点是同一个
顶点,则称这条路径为回路
56
(简单回路)。
3
6
4
5
12、连通图:在无向图中,若从顶点Vi到顶点Vj有路径, 则称Vi和Vj是连通的。若无向图中任意两顶点都是连通 的,则称无向图是连通图。
v1
v2
v3 v8
v4
v5 v9
v6
v7
v1 v2 v4 v5
v3
v8
v6 v9
v7
深度优先搜索过程
深度优先搜索得到的DFS序列为: v1 v2 v4 v7 v5 v6 v3 v8 v9
v0
v1
v2
v3
v4
v5
v6
v7
深度优先序列为:v0,v1,v2,v5,v4,v6,v3,v7
1
2
3
4
5
6
深度优先序列为:v1,v2,v5,v6,v3,v4
顶点的度? 边的数目? 顶点的数目?
001010 100100 000100 000000 000101 000000
顶点的度? 边的数目?
顶点的数目?
1 3
5
2 4
6
带权图的邻接矩阵
若G是带权图,边(Vi,Vj)或<Vi,Vj>的权为wij,则:
wij ,若(Vi,Vj)或<Vi,Vj>∈E(G) aij= ∞,反之