1 / 81

图 Graph

图 Graph. 2010 赛前知识点. 图的定义 (Graph ). 比较: 线性表:数据间关系是线性的,每个元素只有一个前趋,一个后续 树:有着明显的层次关系,每个元素只有一个前趋,但有多个后续 图:数据之间的关系是任意,每个元素的前趋和后续个数是不定,图是一种较为复杂的非线性数据结构. 图的相关概念 图的存储表示 图的遍历 最小生成树 两点之间的最短路径问题 拓扑排序关键路径. 名词和术语. 网、子图. 完全图 、 稀疏图、稠密图. 邻接点、度、入度、出度. 路径、路径长度、简单路径 、 简单回路. 连通图、连通分量、 强连通图、强连通分量.

Download Presentation

图 Graph

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 图Graph 2010赛前知识点

  2. 图的定义(Graph ) • 比较: • 线性表:数据间关系是线性的,每个元素只有一个前趋,一个后续 • 树:有着明显的层次关系,每个元素只有一个前趋,但有多个后续 • 图:数据之间的关系是任意,每个元素的前趋和后续个数是不定,图是一种较为复杂的非线性数据结构

  3. 图的相关概念 • 图的存储表示 • 图的遍历 • 最小生成树 • 两点之间的最短路径问题 • 拓扑排序关键路径

  4. 名词和术语 网、子图 完全图、稀疏图、稠密图 邻接点、度、入度、出度 路径、路径长度、简单路径、简单回路 连通图、连通分量、 强连通图、强连通分量 生成树、生成森林

  5. 一、 图的基本概念 1、图的的定义 图是由顶点V的集合和边E的集合组成的二元组: 记G=(V,E)

  6. 2、无向图和有向图 ⑴无向图Undigraph: 在图G=(V,E)中,如果对于任意的a,b∈V,当(a,b)∈E时,必有(b,a)∈E(即关系R对称),对称此图为无向图。在一无向图中用不带箭头的边 V={V1,V2,V3,V4,V5}  E={(V1,V2),(V2,V3),(V3,V4),(V4,V5),(V5,V1),(V2,V5),(V4,V1)}

  7. ⑵有向图Digraph: 如果对于任意的a,b∈V,当(a,b)∈E时 ,(b,a)∈E未必成立,则称此图为有向图。 在有向图中,通常用带箭头的边连接两个有关联的结点。 V={V1,V2,V3,V4} E={<V1,V2>,<V2,V4>,<V1,V3>,<V3,V4>,<V4,V1>} 有向图中的边又称为弧。起点称为弧头、终点称为弧尾。

  8. A B E C F A B E C A 弧或边带权的图分别称作有向网或无向网。 9 15 11 7 21 3 2 B 设图G=(V,{VR}) 和图G=(V,{VR}), 且VV, VRVR, 则称G 为 G 的子图。

  9. B C D A E F 假若顶点v 和顶点w 之间存在一条边, 则称顶点v和w互为邻接点, 边(v,w)和顶点v 和w相关联。 和顶点v 关联的边的数目定义为边的度。 例如: 右侧图中 ID(B) = 3 ID(A) = 2

  10. 对有向图来说, A B E C F 由于弧有方向性,则有入度和出度之分 顶点的出度: 以顶点v 为弧尾的弧的数目; 顶点的入度: 以顶点v为弧头的弧的数目。 例如: OD(B) = 1 顶点的度(TD)= 出度(OD)+入度(ID) ID(B) = 2 TD(B) = 3

  11. A B E C F 设图G=(V,{VR})中的一个顶点序列 { 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} 简单路径:指序列中顶点不重复出现的路径。 简单回路:指序列中第一个顶点和最后一个顶点相同的路径。

  12. C B D A E F C B D A E F 若图G中任意两个顶点之间都有路径相通,则称此图为连通图; 若无向图为非连通图,则图中各个极大连通子图称作此图的连通分量。

  13. A A B E B E C F C F 对有向图, 若任意两个顶点之间都存在一条有向路径,则称此有向图为强连通图。 否则,其各个强连通子图称作它的强连通分量。

  14. C B D A E F 假设一个连通图有 n 个顶点和 e 条边,其中 n-1 条边和 n 个顶点构成一个极小连通子图,称该极小连通子图为此连通图的生成树。 对非连通图,则称由各个连通分量的生成树的集合为此非连通图的生成森林。

  15. 相邻:若两个结点U、V之间有一条边连接, U、V互为邻接点,称这两个结点U、V是关联的。 带权图:两点间不仅有连接关系,还标明了数量关系(距离、费用、时间等)。 图的阶:图中结点的个数。 结点的度:无向图:与顶点关联的边的数目。 有向图:等于该顶点的入度与出度之和。    入度:在有向图中,把以结点V为终点的边的数目称为V的入度;    出度:在有向图中,把以结点U为起点的边的数目称为U的出度;    奇点:度数为奇数的结点;    偶点:度数为偶数的结点;    终端结点:在有向图中,出度为0的结点;     定理1:无向图中所有顶点的度之和等于边数的2倍,有向图中的所有顶点的入度之和等于所有顶点的出度之和;     定理2:任意一个图一定有偶数个奇点;

  16. 简单路径和回路 路(径):从一个结点出发,沿着某些边连续地移动而到达另一个指定的结点,这种依次由结点和边组成的序列,叫“路”或者“路径”。 路径长度:路径上边的数目。 起点Vp和终点Vq相同的路径称为环或回路 若一条路径上除了起点Vp和终点Vq可以相同外,其余顶点均不相同,则称此路径为一条简单路径。起点Vp和终点Vq相同的简单路径称为简单回路或简单环。 图(a)中v1→v2→v3是一条简单路径,v1→v3→v4→v1→v3不是简单路径。

  17. C B D A E F 连通:如果图中结点U,V之间存在一条从U通过若干条边、点到达V的通路,称U、V是连通的。 连通图:如果一个无向图中,任一对不同顶点U、V,都有一条(U,V)通路,则称图G是连通的。 强连通图:在有向图G中,每一对结点之间都有路径的图。 网络:带权的连通图。

  18. 基本术语 完全图、稀疏图与稠密图 无向图其边数e的取值范围是0~n(n-1)/2。 无向完全图:有n(n-1)/2条边的无向图。 有向图其边数e的取值范围是0~n(n-1)。 有向完全图:有n(n-1)条边的有向图。 稀疏图:对于有很少条边的图(e<nlogn), 反之称为稠密图。 若无向图中任意两个顶点之间都存在着一条边,有向图中的任意两个顶点之间都存在着方向相反的两条边,则称此图为完全图。 N阶完全有向图含有n*(n-1)条边,n阶完全无向图含有n*(n-1)/2条边。即完全图具有最多的边数。任意一对顶点间均有边相连。

  19. 图 ⑴、 ⑵图的各顶点的度见下表: 入度( indegree):有向图中把以顶点 v为终点的边的条数称为是顶点 v的入度。 出度( outdegree):有向图中把以顶点 v为起点的边的条数称为是顶点 v的出度。⑵图各顶点的入度和出度见下表 (各顶点的入度与出度之和为该顶点的度 )

  20. 图的存储表示 图的数组(邻接矩阵)存储表示 图的邻接表存储表示

  21. 0 (i,j)VR Aij={ 1 (i,j)VR B C A D F E 一、图的数组(邻接矩阵)存储表示 定义:矩阵的元素为

  22. A B E C F 有向图的邻接矩阵为非对称矩阵

  23. 带权图的邻接矩阵可以定义为: 2邻接矩阵表示为

  24. B C A D A 1 4 B 0 4 5 C 3 5 D 2 5 E 0 1 F 1 2 3 0 1 2 3 4 5 F E 二、图的邻接表 存储表示

  25. A B E A B C D E 0 1 2 3 4  1 4 C F  2  3  0 1  2 有向图的邻接表 可见,在有向图的邻接表中不易找到指向该顶点的弧

  26. 图的邻接表表示法  

  27. A B E C D A B C D E 3  0 1 2 3 4 3 0  4  2  0  有向图的逆邻接表 在有向图的邻接表中,对每个顶点,链接的是指向该顶点的弧

  28. 边集数组

  29. 图的遍历 从图中某个顶点出发游历图,访遍 图中其余顶点,并且使图中的每个顶点 仅被访问一次的过程。 深度优先搜索 广度优先搜索 遍历应用举例

  30. 图的遍历 1、概念:从图中某一结点出发系统地访问图中所有结点,使每个结点恰好被访问一次,这种运算 称图的遍历。 2、遍历图的基本搜索方法有两种:深度优先搜索DFS(Depth First Search)和广度优先搜索BFS(Broad First Search)。这两种方法都适用于有向图和无向图。 图的遍历算法设计需要考虑3个问题: (1)图的特点没有首尾之分,所以算法的参考要指定访问的第一个顶点。 (2)对图的遍历路径有可能构成一个回路,从而造成死循环,所以算法设计要考虑遍历路径可能的回路问题。 (3)一个顶点可能和若干个顶点都是相邻顶点,要使一个顶点的所有相邻顶点按照某种次序被访问。

  31. V w1 w3 w2 SG3 SG1 SG2 W1、W2和W3均为 V 的邻接点,SG1、SG2 和 SG3 分别为含顶点W1、W2和W3的子图。 访问顶点 V ; for (W1、W2、W3 ) 若该邻接点W未被访问, 则从它出发进行深度优先搜索遍历。

  32. 从上页的图解可见: 1. 从深度优先搜索遍历连通图的过程类似于树的先根遍历; 2. 如何判别V的邻接点是否被访问? 解决的办法是:为每个顶点设立一个 “访问标志 visited[w]”;

  33. 非连通图的深度优先搜索遍历 首先将图中每个顶点的访问标志设为 FALSE, 之后搜索图中每个顶点,如果未被访问,则以该顶点为起始点,进行深度优先搜索遍历,否则继续检查下一顶点。

  34. 0 1 6 a b g 3 4 5 2 c d e f 7 8 h k 0 1 2 3 4 5 6 7 8 F F F F F F F F F 例如: a c a b g h c d e f d k h k f e 访问标志: T T T T T T T T T a c h d k f e b g 访问次序:

  35. w2 w1 V w3 w7 w8 w4 w6 w5 二、广度优先搜索遍历图 对连通图,从起始点V到其余各顶点必定存在路径。 w2 w1 其中,V->w1, V->w2, V->w8 的路径长度为1; V w3 w7 V->w7, V->w3, V->w5 的路径长度为2; w8 w4 w6 V->w6, V->w4 的路径长度为3。 w5

  36. 从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问到。 若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。

  37. 遍历应用举例 1. 求一条从顶点 i 到顶点 s 的 简单路径 2.求两个顶点之间的一条路径 长度最短的路径

  38. g b a c d e f h k 1.求一条从顶点 i 到顶点 s 的简单路径 求从顶点 b 到顶点 k 的一条简单路径。 例如: 从顶点 b出发进行深度优先搜索遍历 假设找到的第一个邻接点是c,则得到的结点访问序列为: bc h d a ek f g 假设找到的第一个邻接点是a,且得到的结点访问序列为: ba d h c ek f g

  39. 图的生成树 生成树的定义    若从图的某顶点出发,可以系统地访问到图中所有顶点,则遍历时经过的边和图的所有顶点所构成的子图,称作该图的生成树。(此定义不仅仅适用于无向图,对有向图同样适用。)(1)若G是强连通的有向图,则从其中任一顶点v出发,都可以访问遍G中的所有顶点,从而得到以v为根的生成树。(2)若G是有根的有向图,设根为v,则从根v出发可以完成对G的遍历,得到G的以v为根的生成树。

  40. (连通网的)最小生成树 问题: 假设要在 n 个城市之间建立通讯联络网,则连通 n 个城市只需要修建 n-1条线路,如何在最节省经费的前提下建立这个通讯网?

  41. 该问题等价于: 构造网的一棵最小生成树,即: 在 e 条带权的边中选取 n-1 条边(不构成回路),使“权值之和”为最小。 算法一:(普里姆算法) 算法二:(克鲁斯卡尔算法)

  42. 普里姆算法的基本思想: 取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w。在添加的顶点 w 和已经在生成树上的顶点v 之间必定存在一条边,并且该边的权值在所有连通顶点 v 和 w 之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有 n-1 个顶点为止。

  43. 19 a b 5 12 14 c 7 18 e 8 16 3 g d 21 27 f 例如: a b 5 14 c e 8 16 3 g d 21 f 所得生成树权值和 = 14+8+3+5+16+21 = 67

  44. V-U U 一般情况下所添加的顶点应满足下列条件: 在生成树的构造过程中,图中 n 个顶点分属两个集合:已落在生成树上的顶点集 U和尚未落在生成树上的顶点集V-U,则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。

More Related