算法学习对很多人来说都是一个在意的问题。在知乎上随手一搜,这类问题都是上万人关注,几百万的围观:
▲ 知乎上关于“学算法”的热门提问
在许多回答和评论中,可以看到大家在学习算法时遇到的各种困难:看不懂、题目刷了忘然后忘了刷、大部头算法书啃不动。不少人学算法都开始怀疑自己是不是太笨不适合编程了……
《趣学算法(第2版)》作者陈小玉老师在自己多年的教学实践中,也遇到了不少有同样经历的学生,并发现了他们问题的根本所在:没有用到合适的方式学习算法。通过大量的研究和实践,她发现了算法学习的诀窍,综合成书助力学生算法学习,并向广大读者提供了几个非常有效的算法学习建议。
▲ 正确的算法学习姿势
算法是程序的灵魂
算法就是对特定问题求解步骤的一种描述,它具有有穷性、确定性、可行性、输入/输出的特性。而好的算法应该是正确的、易读的、健壮的、高效的和低存储的。
作者在本书中写道:数据结构是程序的骨架,算法是程序的灵魂。这和瑞士著名的科学家Niklaus Wirth教授的经典观点一致:数据结构+算法=程序。她一直以来的梦想,就是希望每一位提到算法的人,不再立即紧皱眉头,脑海里闪现枯燥的公式、冗长的代码;她希望每一位阅读和使用算法的人,体会算法之美,就像感受食物的美味、大自然的芳香一样舒心。
她想让程序灵魂——算法的学习变得不再困难。
算法学习的正确姿势
作者曾遇到过各种各样在算法学习上碰壁的学生,有完全看不懂的、有因为书里代码无法执行而抓狂的、有问是不是if、else这种英文单词也要特别去记的,凡此种种不一而足。她才终于理解为什么在上课的时候讲一些简单的问题,很多学生就是不明白——有时候是真的枯燥无聊,有时候是真的晦涩难懂。
从实际出发,突破算法学习瓶颈
她认为算法学习困难的原因有两个:一是算法本身具有一定的复杂性,另一个原因是讲得不到位。比如数据结构和算法策略本身就不简单,如何把两条线索交织在一起向读者讲清楚,更不是一件容易的事情。
为了解决这两个问题,作者在本书中从问题出发,根据实际问题分析、设计合适的算法策略,然后在数据结构上操作实现,巧妙地将数据结构和算法策略宁城一条线。
再通过大量的实例,充分展现算法设计的思维过程,帮助读者充分体会求解问题的思路、如何分析、使用什么算法策略、采用什么数据结构、算法和复杂度如何、是否有优化的可能等等。
本书最终目的在于培养读者怀着一颗好奇心去思考问题、解决问题,更重要的是体会学习的乐趣,发现算法的美!
不再枯燥,从趣味故事中体验算法之美
而且作者意识到学生们的是需要一本真正的算法入门书,基本原则就是简单,再简单,然后更简单。入门搞得神神秘秘、那么高大上完全没必要,枯燥的公式、晦涩的描述、难懂的推导过程严重打击了初学者的学习积极性,导致他们对算法学习无所适从。
所以首要的就是让学生对算法感兴趣,告诉他们算法并不高深,相反是优美而有趣的,甚至可以像对待休闲读物一样来读这本算法书。她采取的方法是用有趣的故事,引出算法问题,然后用大量的实例和轻松简洁的绘图来展示、分析算法本质。
比如书中就用了经典的棋盘和麦子的故事讲爆炸增量函数:
▲ 书中故事示例
通过几个简单的步骤计算下来得知这些麦粒的重量大约为772900亿千克!当这种情况出现在算法时间复杂度上时,很明显算法也会“爆掉”,然后系统宕机。通过这个简单的例子,学生就能够完全无压力地理解算法时间复杂度的概念和表现,同样会认识到它的“威力”,从而建立优化算法的意识。
基本上书中每一个知识点,都是用类似的有趣故事来引出问题,然后用简单明了的文字去描述和分析问题。当然,为了让这个过程变得更轻松、直观,作者还配上了大量可爱、有趣的绘图,辅助展示更多信息。并且这些项目实例的代码都是可以直接运行的,读者可以拿来即用。
▲ 书中关于“神奇的兔子数列”问题的图示
正是基于简单的原则,采用趣味讲述的方法,这本书可以说做到了让读者抛却算法晦涩难懂、无所适从的感觉,从而真正去开始体验算法之美。
五大建议,完全搞定算法学习
当然不管是学习算法还是其他内容,这些知识都在于长期的积累。针对大多数人的学习习惯,作者在书中提供了5个有效的学习建议,帮助读者们更好地进行算法学习。
1.多角度,对比学习
在学习算法的时候,可以先阅读像本书一样的简单入门类,再综合几本书横向多角度看,有了基础的理解后,就能够得到更清晰的分析,有时候会有一种恍然大悟的感觉,原来是这样!
2.大视野,不求甚解
学算法就是学算法本身,首先是算法思想、解题思路、然后是算法实现。为了完全搞懂一个公式的推导和实现一个算法而导致学习进度停滞,或者是纠结使用哪种语言,就完全是得不偿失。暂时的不理解是没关系的,暂时的实现困难也是每个人都会经历的,先把它们放下不要影响整体的学习进度,以后翻翻其他书你就会有“初极狭,才通人。复行数十步,豁然开朗”的体验。
3.多交流,见贤思齐
和他人一起学习和讨论问题,是取得进步最为有效的办法之一,也是分享知识和快乐的途径。不管是论坛、交流群,还是老师朋友,他们都可能给你带来醍醐灌顶的喜悦,还能给你带来意想不到的优秀学习资料。
4.勤实战,越挫越勇
实践是检验真理的唯一标准。只有在一次次小的实战中积累经验,才能获得使用算法解决实际问题的能力。在错误中不断成长,越挫越勇,终会搞定算法学习并熟练掌握。
5.看电影,洞察未来
作者在讲人工智能和算法课的时候,都会建议学生们去看一看科幻电影。以前的那些科幻内容在一步步地被实现,靠的就是人工智能,和其核心——算法。科幻电影并不是简单的消遣,它们能够帮助读者们建立更宏大的未来观,从而提升对算法学习的兴趣,并更为坚定。
作者强调:没有人能一蹴而就,付出总有回报。算法学习更是如此,保持一颗好奇心去学习,然后不停地总结和反思,计划未来,这样对算法学习就会充满信心。
综合资源,多方位入手搞定算法学习
这样看来算法学习是不是毫无问题了?作者觉得还不够。
尽管本书第1版重印了22次,成为“十四五”普通高等教育规划教材,受到了广大师生、其他读者的欢迎和一致好评,但为了跟上新技术发展满足新工科人才培养的需要,作者还是对第1版进行了修订。
本书不仅融入了学科领域的新发展技术,还增加了跨学科、多学科融合的项目实例,并增加了实际工程应用中的算法和面试算法;同时精简了描述文字,重写了所有代码,增加了爬楼梯、最长上升子序列、完全背包、树形动态规划、广度优先搜索等大量新的内容。
而整本书中所有的实战代码都能下载并随意修改使用!同时还提供课件、视频、教学大纲、教学日历、教案、习题等丰富的教学资源下载服务。在线答疑、在线测试系统更是能直接帮助读者一站式解决算法学习难题!
这样应该是够了吧?书已经这么简单又有趣,还提供了这么多实用的学习资源和答疑服务,这学算法岂不是手到擒来?
不不不,作者想让你真正学会并体验算法之美的决心是你想不到的!
学算法,就现在
算法学习并没有大多数人想得那么困难,不要被还未接触或一时的困难打倒。
正所谓“独行快,众行远”,一群人学习算法,相互帮助,共同克服困难,会让我们在算法学习路上走得更远。
快加入14天阅读计划,跟陈小玉老师一起学《趣学算法 第2版》,体验算法之美吧!
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|