1、第5章 图,2012年10月21日,冯鲁涛,第一节图的类型定义第二节图的存储表示第三节图的遍历第四节连通网的最小生成树第五节最短路径第六节拓补排序第七节关键路径,目录,第一节图的类型定义-图初识,图是一个网状结构,元素之间存在的是“多对多的关系分类: 有向图, 无向图(双向)约定: 无自环, 无向图中任意两顶点之间不能有多条边事实: 树图, 在树中 e = v - 1,A,E,D,C,B,Graph,A,E,D,C,B,弧(Arc),边(Edge),顶点(Vertex),有向图,无向图,第一节图的类型定义-图术语,顶点的度: 有向图的出度、入度, 无向图顶点的度子图:取出一部分的顶点和弧/边路
2、径和回路有向图: 有向路径, 路径长度无向图: 无向路径, 路径长度简单路径: 有向图/无向图, 路径上的顶点都不相同回路/环: 回到出发的顶点的路径简单路径简单回路连通图: 无向图, 任意两个顶点有无向路径连通分量: 非连通图中的极大连通子图强连通图: 有向图, 任意两个顶点有有向路径强连通分量: 非强连通的有向图中极大强连通子图生成树: 连通图的一个极小连通子图( e = v 1 )生成森林: 连通分量的极小连通子图组成的森林有向网和无向网: 弧/边带权重的图,A,E,D,C,B,A,E,D,C,B,有向图,无向图,第一节图的类型定义-抽象类型,数据结构DS = 顶点集, 边/弧集2. 基
3、本操作,第二节图的存储表示,邻接矩阵图:适合有向图/网、无向图/网, 核心是二维矩阵邻接表图:适合有向图/网, 可存储无向图/网, 似孩子(链表)树, 将自己的邻接点的编号串为链表十字链表图:适合有向图/网, 可存储无向图/网, 将在邻接表和逆邻接表中两次出现的同一条弧用一个结点表示邻接多重链表图:适合于无向图/网, 将表示同一条边的两个结点 合在一起,A,E,D,C,B,Graph,A,E,D,C,B,弧(Arc),边(Edge),顶点(Vertex),有向图,无向图,第二节图的存储表示-邻接矩阵图,A,E,D,C,B,A,E,D,C,B,有向图/网,无向图/网,0,1,2,3,4,0,1,
4、2,3,4,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,例:右边的有向图,注: 有向图、无向图中 0无弧1有弧 有向网、无向网中无弧n有弧,第二节图的存储表示-邻接表图,A,E,D,C,B,A,E,D,C,B,有向图/网,无向图/网,例:右边的有向图,注:无向图存储时视为双向有向图 网的权重可以附带在邻接表节点中,0,1,2,3,4,0,1,2,3,4,Out,第二节图的存储表示-十字链表图,A,E,D,C,B,有向图/网,0,1,2,3,4,0,1,2,3,4,例:右边的有向图,注:无向图存储时视为双向有向图 网的权重可以附带在邻接表节点中,A,E,D,C,B,无向图/网,Out,In,第二节图的存储表示-邻接多重链表图,A0,E4,D3,C2,B1,无向图/网,注:网的权重可以附带在邻接表节点中,例:右边的无向图,F5,第三节图的遍历,2,5,6,3,4,1,2,5,6,3,4,1,深度优先,广度优先,第四节连通网的最小生成树,第五节最短路径,第六节拓补排序,第七节关键路径,谢 谢!,