北工大(数据结构)11-DSch7Graph.ppt

北工大(数据结构)11-DSch7Graph

* 邻接矩阵:从弧尾找弧头,需跳过0找1,效率低 邻接表:有多少条弧单链表中就有多少弧结点(有几个存储几个,不浪费),善于从弧尾找弧头 十字链表:邻接表和逆邻接表的结合,既可以从弧尾找弧头(邻接表),也可从弧头找弧尾(逆邻接表); 拓扑排序操作2)只需要找弧头,不需要找弧尾,所以冗余 选中邻接表; 由基本操作1),又需要对入度进行减1操作,需要存储每点入度,在邻接表顶点数组中增设存储入度域 * 每次改变D[i].length,可以通过先删除再重新插入的方法来改变顶点i在堆中的位置, 或者仅为某个顶点添加一个新值(更小的),作为堆中新元素(而不作删除旧值的操作,因为旧值被找到时,该顶点一定被标记为VISITED,从而被忽略)。 不作删除旧值的缺点是,在最差情况下,它将使堆中元素数目由Θ(|V|)增加到Θ(|E|),此时总的时间代价为Θ((|V|+|E|)log|E|),因为处理每条边时都必须对堆进行一次重排。 7.5.2 每对顶点间的最短路径 Floyd算法 Floyd算法思想: 假设用相邻矩阵adj表示图 Floyd算法递归地产生一个矩阵序列adj(0),adj(1),…, adj(k) ,…, adj(n) adj(k)[i,j]等于从顶点Vi到顶点Vj中间顶点序号不大于k的最短路径长度 假设已求得矩阵adj(k-1),那么从顶点Vi到顶

文档评论(0)

1亿VIP精品文档

相关文档