算法为什么这么难学

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

算法学习瓶颈


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


相关文章
|
4月前
|
算法 搜索推荐 程序员
程序员常用算法详细讲解
每一种算法都有其适用场景,了解并熟悉这些常用算法的策略和实现,对于解决实际编程问题具有重要的意义。需要注意的是,理论知识的重要性虽然不言而喻,但真正的理解和掌握,还需要在实践中不断地尝试和错误,以达到深入理解的目的。
44 1
|
4月前
|
存储 算法 搜索推荐
编程之旅中的算法启示
【8月更文挑战第31天】在编程世界的迷宫里,算法是那把钥匙,它不仅能解锁问题的答案,还能引领我们深入理解计算机科学的灵魂。本文将通过一次个人的技术感悟旅程,探索算法的奥秘,分享如何通过实践和思考来提升编程技能,以及这一过程如何启示我们更深层次地认识技术与生活的交织。
|
7月前
|
算法 搜索推荐
常用算法复杂度速查表,蹲坑的功夫都能背
常用算法复杂度速查表,蹲坑的功夫都能背
29 0
|
存储 算法 搜索推荐
作为程序员必须掌握的经典算法
作为程序员必须掌握的经典算法
|
机器学习/深度学习 存储 运维
探索编程世界的宝藏:程序员必掌握的20大算法(中)
探索编程世界的宝藏:程序员必掌握的20大算法
167 0
|
存储 机器学习/深度学习 自然语言处理
探索编程世界的宝藏:程序员必掌握的20大算法(下)
探索编程世界的宝藏:程序员必掌握的20大算法
147 0
|
搜索推荐 算法 程序员
探索编程世界的宝藏:程序员必掌握的20大算法(上)
探索编程世界的宝藏:程序员必掌握的20大算法
163 0
|
存储 自然语言处理 算法
算法学习 | 从无到有,我为什么要学算法
开启算法学习之旅,对我来说,这是从无到有的过程,让我改变了原本对算法爱恨交织的态度,真是一个好的开始。
127 1
|
算法
解决这三个误区,才能真正学好算法
记录一下最近学习算法的一些思考
111 0
|
算法
算法基础课第六章。解决一些问题。(一)
算法基础课第六章。解决一些问题。(一)
98 0