算法为什么这么难学

简介: 算法为什么这么难学

算法学习瓶颈


很多人感叹:算法为什么这么难学!


个原因是,算法本身具有一定的复杂性。另一个原因是,讲得不到位!


算法的教与学有两个困难。


(1)我们学习了那些经典的算法,在惊叹它们奇妙的同时,难免疑虑重重:这些算法是怎么被想到的?这可能是最费解的地方。高手讲,学算法要学它的来龙去脉,包括种种证明。但对菜鸟来说,这简直比登天还难,他们很可能花费很多时间也无法搞清楚。对大多数人来说,这条路是行不通的,那怎么办呢?下功夫去记忆书上的算法?记住这些算法的效率?这样做看似学会了,其实两手空空,遇到新问题时仍无从下 F 。但这扁帰义是为重要的,论是做研究还是故头坏 L 作,计算儿专业人士最重要的能力就是鮮决题﹣解决那些不断从实际应用中冒出来的新问题。


(2)算法作为一门学问,有两条几乎平行的线索。条是数据结构(数据对象):数、矩阵、集合、、非列、餐、表认工 G 、力巾。另余是早法友格贵い绂路、分8绂路、绂格、生格、搜索策略等。这两条线索是相互独立的:对于同个数据对象上不同的问题(如单源最短路径和多源最短路径),就会用到不同的算法策略(如贪心策略和动态规划策略);而对于完全不同的数据对象上的问题(如排予和撃教來云)也许就会用到同 N 算去策略(如分治策路)。


两条线索交织在一起,该如何表述呢?我们早已习惯在一章中完全讲排序,而在另一章中完全讲图论。还没有哪一本算法书能够很好地解决这两个困难,传统的算法书大多注重内容的收录,却忽视思维过程的展示,因此我们虽然学习了经典的算法,却费解于算法设计的过程。


本书从问题出发,根据实际问题分析、设计合适的算法策略,然后在数据结构上操作实现,巧炒地将数舌结沟和算法策略庁成杀线。全书通过大重头例,充分展现法设计的思维过程,让卖者充分体会求鲜题的思路、如何分析、使用什么算法策略、采用什么数据结构、算法的复杂性如何、是否有优化的可能等等。这里,我们培养的是让读者怀着一颗好奇心去思考问题、解决问题,更重要的是﹣体会学习的乐趣,发现算法的美!


经过本文的学习,使我深深的了解到了:


将程序执行次数作为时间复杂度衡量标准。


时间复杂搜桶常用新 r 上界符号 Of ( n )表示。


衡量算法的好坏时通常考查算法的最坏情况。


空间复杂度只计算辅助空间。


递归算法的空间复杂度需要计算递归使用的栈空间。


设计算法时要尽量避免爆炸级增量复杂度。


通过本章的学习,对算法有了初步的认识,算法就在我们的生活中。任何一个算法都不是凭空造出来的,而是来源于现实中的某个问题,由此推及一类、一系列问题,所以算法的本质是高效地解决实际问题。本章中的部分内容或许你还不是很清楚,不必灰心,还记得我在本书第1版的前言中所说的“大视野,不求甚解”吗?例如斐波那契数列的通项公式推导,不懂没关系,只要知道斐波那契数列用递归算法,时间复杂度是指数阶,这就够了。就像面包师一边和面,一边详细讲做好面包要多少面粉、多少酵母、多大火候,如果你对如何做面包非常好奇,大可津津有味地听下去,如果你只是饿了,那么只管吃就好了。


通过算法,你可以与世界顶级大师进行灵魂交流,体会算法的妙处。


Donald Ervin Knuth 说:“程序就是蓝色的诗”。而这首诗的灵魂就是算法,走进算法,你会发现无与伦比的美!


相关文章
|
2月前
|
算法 搜索推荐
常用算法复杂度速查表,蹲坑的功夫都能背
常用算法复杂度速查表,蹲坑的功夫都能背
8 0
|
9月前
|
存储 机器学习/深度学习 自然语言处理
探索编程世界的宝藏:程序员必掌握的20大算法(下)
探索编程世界的宝藏:程序员必掌握的20大算法
97 0
|
9月前
|
搜索推荐 算法 程序员
探索编程世界的宝藏:程序员必掌握的20大算法(上)
探索编程世界的宝藏:程序员必掌握的20大算法
105 0
|
9月前
|
机器学习/深度学习 存储 运维
探索编程世界的宝藏:程序员必掌握的20大算法(中)
探索编程世界的宝藏:程序员必掌握的20大算法
113 0
|
9月前
|
存储 算法 搜索推荐
作为程序员必须掌握的经典算法
作为程序员必须掌握的经典算法
编程问题
hessian方法重载导致报错
|
存储 自然语言处理 算法
算法学习 | 从无到有,我为什么要学算法
开启算法学习之旅,对我来说,这是从无到有的过程,让我改变了原本对算法爱恨交织的态度,真是一个好的开始。
85 1
|
算法
算法学习 | 从几个有趣的故事说起,聊聊里面的算法
今天分享读了的故事、研究了的解题过程以及总结的一些算法知识点和经验。
303 1
|
存储 自然语言处理 算法
初入算法(1)—— 进入算法世界
了解算法,学习算法,应用算法
115 0
初入算法(1)—— 进入算法世界
|
机器学习/深度学习 算法 程序员
初入算法(2)—— 进入算法世界
本章将会继续在初入算法(1)——进入算法世界 的基础上继续通过趣学算法进行算法的学习。
119 1
初入算法(2)—— 进入算法世界

相关实验场景

更多