美文网首页算法程序员数据结构和算法分析
算法为什么那么难?——算法学习秘籍

算法为什么那么难?——算法学习秘籍

作者: rainchxy | 来源:发表于2017-10-01 20:43 被阅读148次

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

首先,算法本身具有一定的复杂性,还有一个原因:讲的太烂!

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

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

(2)算法作为一门学问,有两条几乎平行的线索。一个是数据结构(数据对象):数、矩阵、集合、串、排列、图、表达式、分布等等。另一个是算法策略:贪心、分治、动态规划、线性规划、搜索等等。这两条线索是相互独立的:同一个数据对象(例如图)上有不同的问题,例如单源最短路径和最优二叉树,就可以用到不同的算法策略,如贪婪和动态规划;而同一个算法策略,例如排序和整数乘法,也会用到不同的数据结构。它们之间是多对多的关系。

两条线索交织在一起,该如何表述?

我们早已习惯《数据结构》中讲数据结构,《算法设计与分析》里面讲算法策略。各说各的,讲算法设计时就假设你已经对数据结构了如指掌,还没有哪一本算法书很好的解决这两个困难,传统的算法书,大多注重内容的收录,但却忽视思维过程的展示,因此我们学习了经典的算法,却费解于算法设计的过程。遇到一个实际问题,通过问题分析,选择使用什么样的算法策略,基于这种算法策略选择什么样的数据结构,有时算法策略和数据结构的选择并不是唯一的,不同的算法策略和数据结构设计的算法,其复杂性是不同的。而很多书就是灌输式的讲一个实例,一下子就选择了一个认定是最优的算法策略,告诉你就这样干,不谈数据结构,然后分析算法复杂性,就结束了。原则上讲算法策略就讲算法策略,不依赖任何程序设计语言和数据结构,但对很多学生来讲,尤其是语言没学好,数据结构也不熟练的同学,只讲算法策略,如同空中楼阁。自己用算法解决实际问题,一头雾水。

《趣学算法》,从问题出发,根据实际问题进行分析,选择合适的算法策略,并分析为什么采用这种算法策略,然后选择什么数据结构,不同的数据结构复杂性会有什么区别,巧妙地将数据结构和算法策略拧成了一条线。通过大量实例,充分展现算法设计的思维过程,让学生充分体会遇到一个问题,如何分析,使用什么算法策略,采用什么数据结构,算法的复杂性如何?是否有优化的可能?

西方教育旨在激发学生对世界的好奇心,而在这里,我们培养的是让学生怀着一颗好奇心,思考问题、解决问题的能力。更重要的是——体会学习的乐趣,发现算法的美!

相关文章

  • 算法为什么那么难?——算法学习秘籍

    很多人感叹:算法为什么辣么难! 首先,算法本身具有一定的复杂性,还有一个原因:讲的太烂! 算法的教与学有两个困难:...

  • 算法概述

    算法是什么 为什么要学习算法 怎样学习算法 算法是什么 算法是计算机用来解决问题的一系列指令。(1)算法的每一个步...

  • 什么是算法? 算法的2大类

    都说算法工程师工资高,你了解什么是算法吗? 武功有秘籍,歌曲有乐谱!而程序员的秘籍和乐谱就可以说是算法,音乐家用乐...

  • 字节跳动大神手写长达1134页的数据结构与算法刷题指南,简直绝了

    前言 为什么要学习数据结构与算法呢?归根结底,你学习一个东西是因为你觉得他有收益,那么学习数据结构与算法,收益在哪...

  • 第一阶段:Java内功秘籍-线性表

    前言 为什么要学习数据结构与算法,如果你学会了做安卓,javaweb,前端等,都是你的武功秘籍,但是如果你的内功不...

  • 第一阶段:Java内功秘籍-线性表

    前言 为什么要学习数据结构与算法,如果你学会了做安卓,javaweb,前端等,都是你的武功秘籍,但是如果你的内功不...

  • 算法分析

    在《为什么要学习算法》中,我们讨论了什么是算法分析,以及为什么要进行算法分析,今天,回过头来再看其中内容,觉得仍需...

  • 每天一章西瓜书

    绪论 学习算法:基于数据产生模型的算法 模型:用来提供判断 ?那么模型是什...

  • 集成学习算法

    什么是集成学习算法?集成学习算法就是将多个弱分类器(回归器)合并,组合成一个新的学习器 2.为什么用集成学习算法?...

  • 实用教学|算法中的距离计算:距离度量的几种方法

    算法是什么?为什么要学习算法?请看下面这个案例(外行看热闹,内行看门道)。 懂算法的程序员: 不懂算法的程序员: ...

网友评论

    本文标题:算法为什么那么难?——算法学习秘籍

    本文链接:https://www.haomeiwen.com/subject/vmbaextx.html