- 1、本文档共109页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第十二章 图的基本概念 第12章 图的基本概念 图的定义 图的术语 图的运算 图的存储 图的遍历 图遍历的应用 图的定义 图可以用G=(V, E)表示。其中,V是顶点的集合,E是连接顶点的边(弧)的集合。 有向图:如果边是有方向的,称为有向图。有向图的边用表示。 A,B表示从A出发到B的一条边。在有向图中,A,B和B,A 是不一样的。 无向图:如果边是无方向的,称为无向图。无向图的边通常用圆括号表示。(A,B)表示顶点A和B之间有一条边。无向图也称为双向图。 加权图:边被赋予一个权值的图称为加权图。如果图是有向的,称为加权有向图,如果是无向的,称为加权无向图。 如G1:V = {A,B,C,D},E = { A,B, B,A, A,C, C,A,C,D, D,A }表示的图如下所示 无向图 V = {A,B,C,D,E }, E = {(A,B),(A,C), (B,D),(B, E) , (D,E),(C,E)} 加权图 第12章 图的基本概念 图的定义 图的术语 图的运算 图的存储 图的遍历 图遍历的应用 图的基本术语 邻接:如(Vi,Vj)是图中的一条边,则称Vi和Vj是邻接的。如Vi,Vj是图中的一条边,则称Vi邻接到Vj,或Vj和Vi邻接。 度:无向图中邻接于某一结点的边的总数。 入度:有向图中进入某一结点的边数,称为该 结点的入度 出度:有向图中离开某一结点的边数,称为该结点的出度 子图 路径和路径长度 对1iN,结点序列w1,w2,…… wN中的结点对(wi, wi+1)都有(wi, wi+1)∈ E或wi, wi+1 ∈ E, 那么,w1,w2,…… wN是图中的一条路径。 非加权的路径长度就是组成路径的边数,对于路径 w1,w2,……wN,非加权路径长度为N-1。 加权路径长度是指路径上所有边的权值之和。 简单路径和环:如果一条路径上的所有结点,除了 起始结点和终止结点可能相同外,其余的结点都不相同,则称其为简单路径。一个回路或环是一条简单路径,其起始结点和终止结点相同,且路径长度 至少为1。 无向图的连通性 连通:顶点v至v’ 之间有路径存在 连通图:无向图 G 的任意两点之间都是 连通的,则称 G 是连通图。 连通分量:非连通图中的极大连通子图 有向图的连通性 强连通图:有向图 G 的任意两点之间都是 连通的,则称 G 是强连通图。 强连通分量:极大连通子图 弱连通图:如有向图G不是强连通的,但如 果把它看成是无向图时是连通的,则称该 图是弱连通的 完全图 完全图:每两个节点之间都有边的无向图称为完全图。完全图有 n(n-1)/2 条边的无向图。其中 n 是结点个数。 即Cn2 有向完全图:每两个节点之间都有两条弧的有向图称为有向完全图。有向完全图有 n(n-1) 条边。其中 n 是结点个数。即2 Cn2 如果一个有向图中没有环,则称为有向无环图,简写为DAG 生成树 生成树是连通图的极小连通子图。包含图的所有 n 个结点,但只含图的 n-1 条边。在生成树中添加一条边之后,必定会形成回路或环。 第12章 图的基本概念 图的定义 图的术语 图的运算 图的存储 图的遍历 图遍历的应用 图的运算 常规操作: 构造一个由若干个结点、若干条边组成的图; 判断两个结点之间是否有边存在; 在图中添加或删除一条边; 返回图中的结点数或边数; 按某种规则遍历图中的所有结点。 和应用紧密结合的运算: 拓扑排序 找最小生成树 找最短路径等。 图的抽象类 template class TypeOfEdge class graph { public: virtual bool insert(int u, int v, TypeOfEdge w) = 0; virtual bool remove(int u, int v) = 0; virtual bool exist(int u, int v) const = 0; virtual numOfVer() const {return Vers;} virtual numOfEdge() const {return Edges;} protected: int Vers, Edges; }; 第12章 图的基本概念 图的定义 图的术语 图的运算 图的存储 图的遍历 图遍历的应用 图的存储 邻接矩阵和加权邻接矩阵 邻接表 邻接矩阵—有向图 设有向图具有 n 个结点,则用 n 行 n 列的布尔矩阵 A 表示该有向图如果i 至 j 有一条有向边, A[i,j] = 1 ,如果 i 至 j 没有一条有向边,A[i,j] = 0 邻接矩阵—有向图 在物理实现时的考虑:分
文档评论(0)