《DBS第十章》PPT课件.ppt
《《DBS第十章》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《DBS第十章》PPT课件.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1010章章 图图引引 言言 图是比线性表、树和集合更一般、更复杂的数图是比线性表、树和集合更一般、更复杂的数据结构。据结构。区别于线性结构、树结构和集合结构,在图结区别于线性结构、树结构和集合结构,在图结构中,数据元素之间的关系是任意的,每个元素都构中,数据元素之间的关系是任意的,每个元素都可以和任何其它元素相关。可以和任何其它元素相关。本章讨论图的基本概念、图的存储表示方法以本章讨论图的基本概念、图的存储表示方法以及若干常见的图运算,包括图的遍历和最小代价生及若干常见的图运算,包括图的遍历和最小代价生成树。成树。内容提要内容提要1 1、图的基本概念、图的基本概念2 2、图的存储结构、图
2、的存储结构 包括图的邻接矩阵表示和邻接表表示法包括图的邻接矩阵表示和邻接表表示法及其实现及其实现3 3、图的遍历:深度优先和宽度优先遍历、图的遍历:深度优先和宽度优先遍历4 4、最小代价生成树:普里姆算法、最小代价生成树:普里姆算法10.1 10.1 图的基本概念图的基本概念 与线性表、树和集合不同,与线性表、树和集合不同,在图结构中,每个数据元素都可在图结构中,每个数据元素都可以与任何其它数据元素相关。图以与任何其它数据元素相关。图在许多方面都有所应用。在许多方面都有所应用。课堂提要课堂提要课堂提要课堂提要第第1010章章 图图10.1 10.1 图的基本概念图的基本概念10.2 10.2
3、图的存储结构图的存储结构10.3 10.3 图的遍历图的遍历10.5 10.5 最小代价生成最小代价生成 树树n n1 1 L L1 1 n n2 2 C C2 2 n n3 3 L L2 2 n n4 4R R1 1 C C2 2 C C3 3 R R2 2n n5 5(b)(a)(b)(a)的图表示的图表示(a)(a)电路示例电路示例图图10-1 10-1 电路示例及对应的图表示电路示例及对应的图表示n n1 1 R R1 1V V1 1L L1 1n n2 2C C2 2n n3 3L L2 2n n4 4C C2 2R R2 2C C3 3n n5 5图图(graph)(graph):
4、是数据结构是数据结构 G=(V,E)G=(V,E),其中其中V(G)V(G)是是G G中中结点结点的有的有限非空集合限非空集合,结点的结点的偶对偶对称为称为边边(edge)(edge);E(G)E(G)是是G G中中边边的有限的有限集合。集合。图中图中的的结点又称为结点又称为顶点顶点(vertex)(vertex)。10.1.1 10.1.1 图的定义与术语图的定义与术语1 10 02 23 34 4(a)(a)图图G G1 1图中图中 :V(GV(G1 1)=0,1,2,3,4)=0,1,2,3,4E(GE(G1 1)=(0,1),(0,2),(0,4),(1,2),(2,3),(2,4),
5、(3,4)=(0,1),(0,2),(0,4),(1,2),(2,3),(2,4),(3,4)有向图有向图(directed graph)(directed graph):指图中代表指图中代表边的偶对是边的偶对是有序的。有序的。用用uv代表一条代表一条有向边有向边(又称为(又称为弧弧),则),则u u称为该边的称为该边的始点始点(尾)(尾),v v称为边的称为边的终点(头)。终点(头)。无向图无向图(undirected graph)(undirected graph):指图中代表指图中代表边的偶对是边的偶对是无序的无序的 在无向图中在无向图中边边(u u,v v )和和(v(v,u)u)是同
6、一条边。是同一条边。1 10 02 23 34 4(b)(b)有向图有向图G G2 21 10 02 23 34 4(a)(a)无向图无向图G G1 11 10 02 23 34 41 10 02 23 34 4(a)(a)无向图无向图G G1 1(b)(b)有向图有向图G G2 2图中图中 V(GV(G1 1)=V(G)=V(G2 2)=0,1,2,3,4)=0,1,2,3,4E(GE(G1 1)=(0,1),(0,2),(0,4),(1,2),(2,3),(2,4),(3,4)=(0,1),(0,2),(0,4),(1,2),(2,3),(2,4),(3,4)E(GE(G2 2)=,)=,
7、自回路自回路:如果图中存在无向边如果图中存在无向边(u,u)(u,u)或有向边或有向边,则称这样的边为则称这样的边为自回路。自回路。多重图:多重图:指图中两个顶点间允许有多条相同的边。指图中两个顶点间允许有多条相同的边。自回路和多重图自回路和多重图的例子的例子1 10 02 23 31 10 02 23 3(b)(b)多重图多重图 (a)(a)自回路自回路 邻邻接接:如如果果(u,v)(u,v)是是无无向向图图中中的的一一条条边边,则则称称顶顶点点u u和和v v相相邻邻接接,并并称称边边(u,v)(u,v)与顶点与顶点u u和和v v相关联相关联。例如:顶点例如:顶点1 1和和2 2是相邻接
8、的。是相邻接的。完全图:完全图:如果一个图有最多的边数,称为如果一个图有最多的边数,称为完全图完全图。无向完全图有无向完全图有n(n-1)/2n(n-1)/2条边,条边,有向完全图有有向完全图有n(n-1)n(n-1)条边。条边。例如:左图是一个完全图。有例如:左图是一个完全图。有6 6条边。条边。无向完全图无向完全图 0 01 12 23 3 如如果果是是有有向向图图中中的的一一条条边边,则则称称顶顶点点u u邻邻接接到到v v;称顶点称顶点v v邻接邻接自自u u ,并称边并称边与顶点与顶点u u和和v v相关联相关联。子子 图图:图图 G G的的 一一 个个 子子 图图 是是 图图 G
9、G=(V=(V,E,E),其其 中中V V(G(G)V(G),V(G),E E(G(G)E(G).E(G).1 10 02 24 4图图G G1 1的子图的子图1 10 02 23 34 4图图G G2 2的子图的子图1 10 02 23 34 41 10 02 23 34 4G G1 1G G2 2路径:路径:在无向图在无向图G G中,一条从中,一条从s s到到t t的的路径路径是存在一个顶点序是存在一个顶点序 列列(s,v(s,v1 1,v,v2 2,v vk k,t,t),),使得使得(s,v(s,v1 1),(v),(v1 1,v,v2 2),),(,(v vk k,t,t)都是图都是
10、图G G中的边。中的边。对于有向图顶点序列对于有向图顶点序列s,vs,v1 1,v,v2 2,v vk k,t,t,应使应使s,v,v ,t都是图都是图G G中的边。中的边。路径长度路径长度:指路径上边的数目。指路径上边的数目。简单路径简单路径:除起点和终点可以相同外,路径上其余顶点各不相同。除起点和终点可以相同外,路径上其余顶点各不相同。回路回路:起点和终点相同的简单路径起点和终点相同的简单路径。1 10 02 23 34 41 10 02 23 34 4G G1 1G G2 2(0,1,2,3)(0,1,2,3);(0,1,2,3,4,2,0)(0,1,2,3,4,2,0);(0,1,2,
11、3,4,0)(0,1,2,3,4,0)都是都是路径路径,它们的路径,它们的路径长度分别为长度分别为3,6,53,6,5。其中其中(0,1,2,3)(0,1,2,3)和和(0,1,2,3,4,0)(0,1,2,3,4,0)是是简简单路径单路径,(0,1,2,3,4,0)(0,1,2,3,4,0)又是又是回路回路。无向图中如果两个顶点无向图中如果两个顶点u u和和v v之间存在一条路径,则称之间存在一条路径,则称顶点顶点u u和和v v是是连通的连通的,否则是,否则是不连通的不连通的。连通图连通图:无向图中如果任意两个顶点之间是连通的无向图中如果任意两个顶点之间是连通的。连通分量连通分量:无向图的
12、无向图的极大极大连通子图连通子图。1 10 02 23 34 4 0 0和和3 3是是连通的连通的。实际上该图任意两个顶点都是连通的,实际上该图任意两个顶点都是连通的,故该图是故该图是连通图连通图。1 10 02 23 34 46 65 51 10 02 23 34 46 65 5 0 0和和6 6是是不连通的不连通的。该图是该图是非连通图非连通图,但它存在,但它存在两个连两个连通分量通分量。注意极大的含义注意极大的含义:如果某个连通:如果某个连通子图再加上一个顶点后,仍然是子图再加上一个顶点后,仍然是连通的,则它不是连通分量。连通的,则它不是连通分量。3 31 10 02 24 4强连通图:
13、强连通图:有向图中如果任意两个顶点有向图中如果任意两个顶点u u和和v v之间,存在一之间,存在一条从条从u u到到v v的路径,同时存在一条从的路径,同时存在一条从v v到到u u的路径,则称该有的路径,则称该有向图为向图为强连通图。强连通图。强连通分量:强连通分量:有向图的极大强连通子图。有向图的极大强连通子图。1 10 02 23 34 41 10 02 23 34 41 10 02 23 34 43 34 41 10 02 24 41 10 02 23 33 31 10 02 2例如左图中,顶点例如左图中,顶点1,21,2度分别为度分别为2 2和和4 4。右图中,顶点右图中,顶点0 0
14、的入度和出度分别为的入度和出度分别为3 3和和1 1,顶点顶点0 0的度为的度为4 41 10 02 23 34 41 10 02 23 34 4顶点顶点2 2的入度和出度分别为?的入度和出度分别为?顶点的度:顶点的度:与该顶点相关联的边的数目。与该顶点相关联的边的数目。入度:入度:有向图中有向图中顶点顶点v v的的入度入度指以指以v v为头的弧的数目;为头的弧的数目;出度:出度:有向图中有向图中顶点顶点v v的的出度出度指以指以v v为尾的弧的数目。为尾的弧的数目。有向图中有向图中,顶点的度顶点的度=入度入度+出度出度。生生成成树树:无无向向图图的的生生成成树树是是一一个个极极小小连连通通子
15、子图图,它它包包含含图图中中所所有有顶顶点点,但但只只有有足足以以构构成成一一棵棵树树的的(n-1)(n-1)条条边边。去去掉掉一一条条就就不不连连通通,再再加加上上一一条条边边将构成回路。将构成回路。有有向向图图的的生生成成森森林林:是是一一个个子子图图,由由若若干干棵棵互互不不相交的有根有向树组成,包含图中所有的顶点。相交的有根有向树组成,包含图中所有的顶点。1 10 02 23 34 4图图G G1 1的的生成树生成树1 10 02 23 34 4图图G G1 1有有根根有有向向树树:是是一一个个有有向向图图,它它恰恰有有一一个个顶顶点点的的入入度度为为0 0,其其余余顶顶点点的的入入度
16、度为为1 1。如如果果略略去去边边的的方方向向,处理成无向图后,则图是连通的。处理成无向图后,则图是连通的。网网:在在图图的的每每条条边边上上加加上上一一个个数数字字称称为为权权,也也称称代价代价,带权的图称为带权的图称为网。网。1 10 02 23 34 4有向无环图(有向无环图(DAGDAG图):图):不包含回路的有向图。不包含回路的有向图。自由树:自由树:不包含回路的连通图。不包含回路的连通图。1 10 02 23 34 41 10 02 23 34 42 23 38 86 62 25 54 4ADT 10ADT 101 Graph 1 Graph 数据:数据:顶点的非空集合顶点的非空集
17、合V V和边的集合和边的集合E E,每条边由,每条边由V V中顶点的偶对中顶点的偶对表示。表示。运算:运算:void void CreateGraphCreateGraph(Graph*g,(Graph*g,intint n,T n,T noedgenoedge)后置条件后置条件:已构造一个只有已构造一个只有n n个结点,不包含任何边的有向图。个结点,不包含任何边的有向图。BOOL Add(Graph*g,BOOL Add(Graph*g,intint u,u,intint v,T w)v,T w)后置条件后置条件:向图中添加权值为向图中添加权值为w(w(若边上没有权,则若边上没有权,则w w
18、0)0)的边的边uv,若,若插入成功,则函数返回插入成功,则函数返回TRUETRUE,否则返回,否则返回FALSEFALSE。BOOL Delete(Graph*g,BOOL Delete(Graph*g,intint u,u,intint v)v)后置条件:从图中删除边后置条件:从图中删除边uv,若删除成功,则函数返回,若删除成功,则函数返回TRUETRUE,否则返,否则返回回FALSEFALSE。BOOL Exist(Graph g,BOOL Exist(Graph g,intint u,u,intint v)v)后置条件:如果图中存在边后置条件:如果图中存在边uv,则函数返回,则函数返回
19、TRUETRUE,否则返回,否则返回FALSEFALSE。intint Vertices Graph g)Vertices Graph g)后置条件:函数返回图中顶点数目。后置条件:函数返回图中顶点数目。上面列出的只是图的最基本的运算。在以后的各小节中,我们将通过添加新运上面列出的只是图的最基本的运算。在以后的各小节中,我们将通过添加新运算,陆续扩充算,陆续扩充ADT 10ADT 101 1 的图抽象数据类型。主要包括以下图运算:的图抽象数据类型。主要包括以下图运算:(1)(1)深度优先搜索图:深度优先搜索图:void DFS(Graph g)void DFS(Graph g);(2)(2)宽
20、度优先搜索图:宽度优先搜索图:void BFS(Graph g)void BFS(Graph g);(3)(3)拓扑排序:拓扑排序:void void TopoSort(GraphTopoSort(Graph g)g);(4)(4)关键路径:关键路径:void void CriticalPath(GraphCriticalPath(Graph g)g);(5)(5)普里姆算法求最小代价生成树:普里姆算法求最小代价生成树:void Prim(Graph gvoid Prim(Graph g,intint k)k);(6)(6)克鲁斯卡尔算法求最小代价生成树:克鲁斯卡尔算法求最小代价生成树:voi
21、d void Kruskal(GraphKruskal(Graph g g,intint edges)edges);(7)(7)迪杰斯特拉算法求单源最短路径:迪杰斯特拉算法求单源最短路径:void void Dijkstra(GraphDijkstra(Graph g g,intint k,T k,T d,d,intint p)p);(8)(8)弗洛伊德算法求所有顶点之间的最短路径:弗洛伊德算法求所有顶点之间的最短路径:void void Floyd(GraphFloyd(Graph g g,T*&d,T*&d,intint*&path)*&path)。1 1、图的矩阵表示法及其实现、图的矩阵
22、表示法及其实现2 2、图的邻接表表示法及其实现、图的邻接表表示法及其实现10.2 10.2 图的存储结构图的存储结构10.2.1 10.2.1 图的图的矩阵表示法矩阵表示法1 1、邻接矩阵、邻接矩阵 一个有一个有n n个顶点的图个顶点的图G=(V,E)G=(V,E)的邻接矩阵是一个的邻接矩阵是一个n n n n的的矩阵矩阵A A,A A的每个元素是的每个元素是0 0或或1 1。课堂提要课堂提要课堂提要课堂提要第第1010章章 图图10.1 10.1 图的基本概念图的基本概念10.2 10.2 图的存储结构图的存储结构10.3 10.3 图的遍历图的遍历10.5 10.5 最小代价生成最小代价生
23、成 树树 设设V=0,1,2,V=0,1,2,n-1,n-1,如如果果G G是是无无向向图图,则则A A的元素定义为:的元素定义为:如果如果G G是有向图,则是有向图,则A A的元素定义为:的元素定义为:1(u,v)1(u,v)E E或或(v,u)(v,u)E E Auv=Auv=0 0 其它其它 1 1 E E Auv=Auv=0 0 其它其它如果如果G G是带权的有向图是带权的有向图(网网),那么,那么A A中的元素定义如下:中的元素定义如下:(e)(e)图图G G2 2的邻接矩阵的邻接矩阵 0 1 2 3 0 1 2 30 0 0 0 00 0 0 0 01 1 0 1 01 1 0 1
24、 02 0 0 0 12 0 0 0 13 1 1 0 03 1 1 0 0(b)(b)有向图有向图G G2 20 01 13 32 2(c)(c)网网G G3 30 01 13 32 2 1 1 5 1 1 5 4 43 3 0 1 2 3 0 1 2 30 0 0 0 1 4 0 5 1 4 0 5 2 2 0 0 3 33 1 1 3 1 1 0 0(f)(f)网网G G3 3的邻接矩阵的邻接矩阵0 01 13 32 2(a)(a)无向图无向图G G1 1(d)(d)图图G G1 1的邻接矩阵的邻接矩阵 0 1 2 3 0 1 2 30 0 1 0 10 0 1 0 11 1 0 1 1
25、1 1 0 1 12 0 1 0 12 0 1 0 13 1 1 1 03 1 1 1 0图图 10.7 10.7 图的邻接矩阵图的邻接矩阵0 0邻接矩阵邻接矩阵例如例如:0 01 12 24 45 53 31 12 24 45 53 34 45 50 0 1 1 2 2 3 34 45 51 12 23 30 0如果如果G G是有向图,则是有向图,则A A的元素定义为:的元素定义为:1 1 E E Auv=Auv=0 0 其它其它1 1 1 11 11 11 11 11 11 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DBS第十章 DBS 第十 PPT 课件
限制150内