- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法
第六章 图
张铭 赵海燕 王腾蛟
/mzhang/DS/
北京大学信息科学与技术学院
“数据结构与算法”教学小组
?版权所有,转载或翻印必究
主要内容
? 6.1 图的基本概念
? 6.2 图的抽象数据类型
? 6.3 图的存储结构
? 6.4 图的周游(深度、广度、拓
扑)
? 6.5 最短路径问题
? 6.6 最小支撑树
北京大学信息学院 ?版权所有,转载或翻印必究 Page 2
6.1 图的基本概念
? 习惯上,常用G=(V,E)代表一个图
? V是顶点(vertex)集合 ? E是边(edge)的集合
? 边的始点 ? 边的终点
? 稀疏图(sparse graph)
? 密集图(dense graph)
? 完全图(complete graph)
北京大学信息学院 ?版权所有,转载或翻印必究 Page 3
6.1 图的基本概念(续)
? 无向图(undirected graph)
? 图中代表一条边的顶点的偶对无
方向性,也即无序
? 有向图(directed graph或
digraph)
? 图中代表一条边的顶点的偶对是
有序的
北京大学信息学院 ?版权所有,转载或翻印必究 Page 4
6.1 图的基本概念(续)
无向图示例 有向图示例
北京大学信息学院 ?版权所有,转载或翻印必究 Page 5
6.1 图的基本概念(续)
? 标号图(labeled graph)
? 带权图(weighted graph)
北京大学信息学院 ?版权所有,转载或翻印必究 Page 6
6.1 图的基本概念(续)
? 顶点的度(degree)
? 与该顶点相关联的边的数目
? 入度(in degree)
? 出度(out degree)
? 子图(subgraph)
? 图G=(V,E),G’=(V’,E’)中,若
V’≤V,E’≤E,并且E’中的边所关联的
顶点都在V’中,则称图G’是图G的子图
北京大学信息学院 ?版权所有,转载或翻印必究 Page 7
6.1 图的基本概念(续)
? 路径(path)
? 在图G=(V,E)中,如果存在顶点序列V
p,
Vi1,Vi2,…,Vin,Vq,使得(Vp,V
i1), (Vi1,Vi2) ,…,(Vin,Vq)(若对有向图,
则使得Vp,Vi1,Vi1,Vi2 ,…,
Vin,Vq)都在E中,则称从顶点Vp到顶
点Vq存在一条路径。
? 简单路径(simple path)
? 路径长度(length)
北京大学信息学院 ?版权所有,转载或翻印必究 Page 8
6.1 图的基本概念(续)
? 回路(cycle,也称为环)
? 无向图中,如果两个结点之间有平行边,容
易让人误看作“环”)路径长度大于等于3
? 有向图两条边可以构成环,例如V0,V1
和V1,V0 构成环。
? 简单回路(simple cycle)
? 无环图(acyclic graph)
? 有向无环图(directed acyclic graph,简
写为DAG)
北京大学信息学院 ?版权所有,转载或翻印必究 Page 9
6.1 图的基本概念(续)
? 有根的图
? 一个有向图中,若存在一个顶点V0,从此顶点
有路径可以到达图中其它所有顶点,则称此有
向图为有根的图,V0称作图的根。
? 树、森林
? 连通的(connected)
? 对无向图G=(V,E)而言,如果从V1到V2有
一条路径(从V2到V1也一定有一条路径),则
称V1和V2是连通的(connected) 。
? 强连通
北京大学信息学院 ?版权所有,转载或翻印必究 Page 10
6.1 图的基本概念(续)
? 连通分支或者连通分量(connected
component)
? 无向图的最大连通子图
? 强连通分支(强连通分量)
? 网络
? 带权的连通图
? 自由树(free tree)
? 不带有简单回路的无向图,它是连通
的,并且具有|V|-1条边
北京大学信息学院 ?版权所有,转载或翻印必究 Page 11
6.2 图的抽象数据类型
? 结点、边怎么表示?
? 结点:增?、删、查?、改
? 边:增、删、查?、改
北京大学信息学院 ?版权所有,转载或翻印必究 Page 12
6.2 图的抽象数据类型
class Graph{ //图的ADT
public:
int VerticesNum(); //返回图的顶点个数
int EdgesNum(); //返回图的边数
//返回与顶点oneVertex相关联的第一条边
Edge FirstEdge(int oneVertex);
//返回与边PreEdge有相同关联顶点oneVertex的
//下一条边
Edge NextEdge(Edge preE
原创力文档


文档评论(0)