王道考研数据结构第六章知识点总结

文章介绍了图的基本概念,包括顶点集、边集、连通图和非连通图。强调了生成树在实际问题中的应用,如公路网络设计。接着讨论了图的各种表示方法,如邻接矩阵和邻接表。重点讲述了图的遍历(广度优先和深度优先),以及求解最小生成树的Kruskal和Prim算法。还探讨了最短路径问题,提到了Dijkstra和Floyd算法。此外,文章还涉及了有向无环图的表达和拓扑排序,以及项目管理中的关键路径分析。
摘要由CSDN通过智能技术生成

6.1.1图的基本概念

 顶点集一定是非空集,边集可以是空集

 非连通图:让任意n-1个顶点之间两两相连,另一个顶点与任意一个都不存在路径,则为非连通图的最大边数。

注意长三角地区铁路网不属于连通分量,因为它没有包含尽可能多的边和顶点,只有扩展到整个大路铁路网才是连通分量。

 把每一个连通分量生成与之对应的生成树,即可得到整个非连通图的生成森林。

生成树具有很强的现实意义,如果几个村庄之间需要修公路,那么在所有的施工方案中需要去选择既可以连通所有村庄的路又可以减少修建成本的方案,即减少一些冗余边,就是极小连通子图.

 

 6.2.1 邻接矩阵法

有时也会把0设置为两个顶点之间不存在边 

 6.2.2 邻接表法

 邻接表法类似于树中的孩子表示法

 

 

6.2.3 十字链表,邻接多重表

 

 删除边(A,B)

 删除点E 

 6.2.4 图的基本操作

 6.3.1 图的广度优先遍历

 

 

 对于无向图来说,调用BFS的次数=连通分量数(极大连通子图)

 

 6.3.2 图的深度优先遍历

 

 6.4.1 最小生成树

 

 

 

 

 如果一个顶点此时还没有加入一颗树里,那么此时可以检查一下这个顶点和新加入的顶点有没有边,如果他们之间有边,如果他们之间有边,并且这个值比以前的lowCast值更低的话,那么我们就需要去更新lowCast值。

 Kruskal算法中运用到了并查集的思想,判断两个顶点是否在同一个集合中,没有在同一个集合则并起来,同属于一个集合说明已经连通,则跳过

 6.4.2 最短路径问题

 单源--只有一个源头,最短路径--从这个节点到达其他任意节点的最短路径。

 

 

每一个节点在第几层也直接反映了从起点2达到这些节点的距离是多少。

6.4.3 最短路径问题(Dijkstra算法)

 

 注:检查所有邻接自Vi(能从Vi直接到达)的顶点

 

 Prim算法中的lowCast记录的是当前顶点加入到目前组建的最小生成树的最小代价。

而Dijikstra算法dist记录的是从从源头到指定顶点的最短路径的值。

 6.4.4 最短路径问题(Floyd算法)

 

 6.4.5 有向无环图描述表达式

 

 

 

 

 6.4.6 拓扑排序

 

 

 

 关于拓扑排序的程序堆栈流程查看王道对应课件。

 关于逆拓扑排序的堆栈细节查看王道课件

 6.4.7 关键路径

 

 

 

 

 

 

 

 

 

 

 

 

 具体算法细节见王道课件

 

 

 

若将切番茄这个活动缩短为0.5,那整个切番茄的活动就变成了非关键活动 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~|Bernard|

你的鼓励是我写下去最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值