数据结构当中的图怎么都弄不懂怎么办?

最近在看数据结构,也遇到了这个问题,觉得知乎上这些解答很棒,特此把好的回答摘抄下来

原文链接:数据结构当中的图怎么都弄不懂怎么办?


参照以下步骤,对着书看,包会。如果你按照这样的步骤学会了,欢迎留言让我知道。如果没学会,欢迎提问我会尽力解答。

学习先决条件:指针基础 数组和链表 图的基本概念(如边,顶点,路径,权值)

1 理解图的两大存储结构
1-1 邻接矩阵
1-2 邻接表
注意:邻接表中,指针数组里的每一个指针都是一个单链表的头指针
注意:单链表里每个节点里存储的是图中每条边的信息。

2 理解图的遍历算法
2-1 深度优先遍历 dfs
注意:花半小时看懂dfs的递归代码。
2-2 宽度优先遍历 bfs
注意:又叫广度优先算法,需要一个队列,用非递归实现,请用半小时看懂实现代码。

3 图的最小代价生成树算法
3-1 普里姆算法
注意:把书上给的图文例子看懂。
3-2 克鲁斯卡尔算法
注意:把书上给的图文例子看懂
注意:克鲁斯卡尔的时间复杂度

4 AOV和AOE网络
4-1 AOV 拓扑排序算法过程
注意:AOV和AOE都可以理解为一个工程图,工程由很多项目组成,项目直接有相互依赖。不同的是,AOV图中的顶点代表项目,对比后文的AOE。
4-2 AOE 最长路径
注意:与AOV相反,AOE用边来代表项目,因此边的权值可以理解为这个项目消耗的时间。

5 图的最短路径算法
5-1 迪杰斯特拉算法
注意:把书上给的图文例子看懂。
注意:此算法求的是某个给定顶点到其他各顶点的最短路径(单源)。
5-2 弗洛伊德算法
注意:把书上的图文例子看懂。
注意:此算法求的是图中所有顶点 的两两最短路径。


首先我们把图理论和编程分开看,图的概念算法应用等,可以看看离散数学。现实中图的应用很多也很有意思,比如送外卖路线规划啊,微博舆论传播分析之类的。 图算法实现就不同了,首先要理解图算法的步骤,然后设计实现的方法,在数据结构课程中无非也就是分治(也就是递归),贪心,用什么栈和队列。 你看深搜用递归,广搜用队列,最短路径用贪心去贪。总之,图算法是理论上的东西,图算法的实现则与你是否理解基础算法有关,如果是算法理论不理解建议看离散,如果是实现上的代码不理解建议先理解基础算法,把图算法的实现作为案例去练习,相信提高会很快的。至于上面说的背下来,虽然也是一种方法,但是个人感觉不是很好,实现算法这种事情,盗用贵乎的一句话,无它,唯手熟耳!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值