Day 40 十天小结

1、关于this常用用法的总结(参考两篇文章:1  &  2):

        表示成员变量(区分函数传入的形参);将自身传递给外部方法(使用其他类中的方法);

        表示当前这个对象;在构造器中调用构造器(只能在第一行调用)

2、关于图的连通性这一章,之前只是知道邻接矩阵的n次方表示某两点路径长度为n的条数,没想到0到n-1次方相加了之后可以直接判断图的连通性!感觉自己的基础还是差了些,还是得多学数学。

3、其实图的算法问题我都从来没有用代码实现过,看上去简单的深度和广度优先遍历,即使手算的时候轻松运用栈和队列进行push和pop,但实现起来还是逻辑混乱。

4、感觉数据结构的每章知识都是环环相扣,像图的DFS和BFS用到的栈和队列,平时学习的时候还是不能着急学习新知识,应该多思考自己现有的知识能不能解决问题,再学习新的方法。

5、以前没有接触过图的m着色问题,刚看到标题的时候在网上搜索了一下这个算法的原理,大部分解释的图都画的很好,但是我看不太明白(-_-|||)。后来直接看了张星移学长的博客,才明白了是什么意思(简直救了我的大命)。其中提到的回溯法,我个人感觉很像枚举,但是在枚举过程中遇到不可行的方案则直接放弃不再继续,然后回溯到上一步换个方案(不知道我理解对没有)。

6、从图的m着色问题起,开始复习一些有难度的基本算法。这几个经典算法对于我来说用java编写难度比较大,之前对于这些算法的处理都仅仅停留在能够手动计算,所以后期还需要不停翻看熟悉。

7、通过十字链表的代码,我才又对十字链表有了更深刻的理解:邻接表和逆邻接表的结合。(对于十字链表和关键路径两个模块,我自身手算阶段就觉得很绕,这里有一个关于十字链表理解视频,帮助我重新理解了十字链表)

8、贪心算法:根据当前最好的选择(局部最优)找到全局最优解,个人理解:局部其他选择不可能优于局部最优解,所以根据每步最优找到步步最优。

9、提到贪心算法,我不得不提到动态规划算法(感觉他们总是一起出现):以空间换时间的算法,其实不太明白为什么叫动态规划,我确实认为他叫“带备忘录的递归算法”更佳。(出处:动态规划解释视频)

10、关于图这一个大模块的知识点,对于我来说还需要再继续学习,同时需要再复习离散数学图论的知识,才有助于我对算法的理解和对逻辑思维的提升。

你可能感兴趣的:(贪心算法,算法)