0
点赞
收藏
分享

微信扫一扫

Day 40

绪风 2022-04-13 阅读 54

Day 40

今天是学习java的第40天了,今天的任务是写之前十天的心得体会。

  1. 之前十天学习的是图的相关知识,是数据结构的一个重要章节,也是一个非常难的难点。数据结构在我看来难点有二,一个赫夫曼系列,另一个就是图这部分,其余的都还好。
  2. 图这个章节,理解是一方面,另一个难点是代码的实现。我在写这个章节的时候,常常会感觉到,逻辑理解了,但是代码写不出来。这个关系到代码的基本功。我觉得,我出现这种情况的原因就是代码量太少了,回头还得大量的练习。
  3. 图这个东西一般有两种实现形式,一个是邻接矩阵,另一个是邻接表。邻接矩阵非常的直观,方便我们看出节点之间的关系。邻接表的话,虽然不如邻接矩阵那么直观,但是胜在数据结构简单,几个链表就完事,后面对其的算法也比较容易实现。
  4. 除了上述两种外,还有一个十字链表,这个是结合了邻接表和逆邻接表。所以可以同时看出节点的入度和出度。但是这个有一个局限,就是只能存储有向图和有向网。
  5. 然后就是大名鼎鼎的迪杰斯特拉算法。作为计算机这门学科祖师爷级别的人提出的算法,是图这个章节中非常重要的一节。它的目的是求一个顶点到其余顶点的最短路径。它的主要内容是在待选的节点中选出距离最短的顶点,并将其入栈,然后由入栈的这个新顶点继续来进行上述操作。
  6. 和 Dijkstra 算法连在一起的是Prim算法,这个算法是在加权连通图里面搜索最小生成树。这个我对它的理解是大鱼吃小鱼,因为算法在实现的时候总是把节点分成了两类,然后从一个节点开始,找到权值最小的节点把它加到已找好的那一类里面。因此,在我们宏观上开来,就是一类不断吃掉另一类里面的节点,最后剩下的就是最小生成树。
  7. 然后这一章里面,我觉得最让我头疼的就是关键路径了。一直觉得绕,主要问题就是那个最早开始时间和最迟开始时间。具体内容可以去看我昨天的帖子,这里就不再赘述。另外我打算找个时间把昨天的代码remake一下,昨天写的时候电脑出了点小问题,很多地方没有打磨好就赶着交了。很有必要remake一下。
  8. 在我看来图是计算机中最灵活的数据结构,很多问题都可以用图来建模求解。图也是树的升级版,毕竟,在纸上画的话,很多棵树的集合就是图,或者说图是去掉了头节点的树。同时,在图中是可以一个节点有多个父亲节点的,这也是树和图最大的区别。
  9. 暂时只能想到以上的内容了,寝室熄灯了,电脑快没电了,今天暂时先这样吧,后面再补上。
举报

相关推荐

0 条评论