Algorithms, Part I

前言

目前我已暂停学习深度学习课程,虽然之前的学习过程很愉快,但我现在想要挑战一下自己。机器学习在很多大学都被分在计算机科学底下,而我又了解到要学习compute science几乎不可能绕过数据结构和算法这一部分内容,这一部分的知识也决定着一个高级程序员的功底。
为了补充自己在数据结构和算法这一部分的知识,我决定修一门相关的课程,选来选去最终决定学习普林斯顿教授在Cousera开设的一门算法课。这门课程是基于Java语言讲解的,所有的编程作业都需要用Java完成,由于我之前从未了解过Java这门语言,是真正的零基础。为了应对这门课程,我又在实验楼快速补充了Java编程的基础知识。我觉得自己会Perl、Python和R语言,熟悉编程思想,想要学会Java应该不是一件遥不可及的事情。

该课程第一周的内容为如何快速合并并查找目标的类别。

怎样在迷宫图中,判断两点之间是否相连?
这里写图片描述

可以采用Quick-find的方法:
这里写图片描述

然而这个方法太慢了,作者又提出了一种树形结构的Quick-union的方法
这里写图片描述

然而上述两种方法正像它们的名字一样,Quick-find在union的时候很慢,Quick-union在find的时候很慢。

weighted quick-union 是quick-union的升级版。
这里写图片描述
这里写图片描述

三种方法运行时间的比较:
这里写图片描述

Quick union with path compression是另一种速度比较快的方法。
这里写图片描述

总结比较

这里写图片描述

扫描二维码关注公众号,回复: 3479001 查看本文章

(第一次写这门课程的笔记,有点无从下手的感觉,难道是我理解得不够——反正第一次编程作业折腾了我好长时间)
注:如无特殊说明,以上所有图片均截选自Coursera平台algorithms课程的讲义。

猜你喜欢

转载自blog.csdn.net/maryyu8873/article/details/78786369