[王道考研计算机机试指南--专题训练]Chapter5图论

知识清单

基础预备知识:图的表示,结点和边。
图在计算机中的表示实现:
①邻接矩阵:适用于边稠密图,或者需要经常判断两个结点直接的关系的情况。
②邻接链表:适用于边稀疏图,或者经常需要遍历某一个结点的邻接结点的情况。

  • 1.最小生成树(Prim)[结构体排序]
  • 2.最短路径(Dijkstra(单源)、Floyd(多源))
  • 3.拓扑排序(有向无环图)
  • 4.并查集(方便集合操作的数据结构)

1.并查集

主要用于集合的先关操作,比如确定集合中含有哪些元素,判断两个元素是否处在同一个集合中,求集合中元素的个数,求图总连通分量的个数等。

下面为典型例题:
求解图中连通分量的个数(顶点数已经确定):
畅通工程 OJ 1012
How Many Tables(九度OJ 1445)
求解图中连通分量的个数(顶点数需要自己统计):
第一题
求解每个连通分量中元素的个数:
More is better (九度 OJ 1444)

2.最小生成树(MST)

Kruskal算法(采用并查集实现):
算法步骤描述:

① 初始时将所有的结点设置为孤立的集合。
②按照边权递增的顺序遍历所有的边,若遍历到的边连接的两个点仍然属于不同的集合,那么,改变为最小生成树的边,合并两个结点所在的集合。
③当所有的结点遍历完成之后,图上的所有结点均属于同一个集合,则最小生成树确定完毕。否则会,该图为非连通图,不存在最小生成树。

还是畅通工程 (九度 OJ 1017)
Freckles(九度 OJ 1144)
Jungle Roads(九度 OJ1154 )
畅通工程II(九度 OJ1024 )[最小生成树可能不存在]

3.最短路径

在求解最短路径的问题中主要包括以下两种方法:
全源最短路径:Floyd算法
单源最短路径:Dijkstra算法
最短路
最短路径问题:此题有坑,慎点[图可能为多重图,即a->b可能有多条边,需要存储权值最小的边]
I wanna go home[涉及到对存储的图结构进行适当的限制]

4.拓扑排序

拓扑排序的思路(只有有向无环图才存在拓扑序列):

  • 1、首先将图中入度为0的结点取出来,并删除以该结点作为弧尾的边。
  • 2、重复1的过程知道不存在入度为0的结点,如果此时剩余的图中已经没有节点,那么说明该图是可拓扑排序的,如果此时图中仍有结点,那么剩余的结点必构成环路,该图不存在拓扑序列。

Leagal or Not (九度 OJ 1448)
(九度 OJ1449 )确定比赛名次
产生冠军(九度 OJ1450)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值