24小时热门版块排行榜    

查看: 2267  |  回复: 8

rainchxy

木虫 (小有名气)

算法官

[交流] 算法为什么那么难?——算法学习秘籍 已有6人参与

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

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

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

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

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

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

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

《趣学算法》,从问题出发,根据实际问题进行分析,选择合适的算法策略,并分析为什么采用这种算法策略,然后选择什么数据结构,不同的数据结构复杂性会有什么区别,巧妙地将数据结构和算法策略拧成了一条线。通过大量实例,充分展现算法设计的思维过程,让学生充分体会遇到一个问题,如何分析,使用什么算法策略,采用什么数据结构,算法的复杂性如何?是否有优化的可能?
西方教育旨在激发学生对世界的好奇心,而在这里,我们培养的是让学生怀着一颗好奇心,思考问题、解决问题的能力。更重要的是——体会学习的乐趣,发现算法的美!

发自小木虫Android客户端
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

Constanteffortyieldssuresuccess.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
送红花一朵
2楼2017-10-19 16:51:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainchxy

木虫 (小有名气)

算法官

引用回帖:
2楼: Originally posted by lion-wolf at 2017-10-19 16:51:02

谢谢

发自小木虫Android客户端
Constanteffortyieldssuresuccess.
3楼2017-10-19 17:27:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

521741shan

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
请问,您知道目前对于结构优化这方面,哪种算法比较好吗

发自小木虫Android客户端
4楼2017-10-26 21:50:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asd159357

新虫 (初入文坛)

看看可能看咯
5楼2017-12-01 00:19:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr.snowden

新虫 (初入文坛)

引用回帖:
1楼: Originally posted by rainchxy at 2017-10-19 13:28:26
很多人感叹:算法为什么辣么难!
首先,算法本身具有一定的复杂性,还有一个原因:讲的太烂!
算法的教与学有两个困难:
(1)我们学习了那些经典的算法,在惊叹它们奇思妙想的同时,难免疑虑重重:这么刁,怎么想到 ...

请问怎么获取

发自小木虫Android客户端
6楼2018-01-23 12:40:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainchxy

木虫 (小有名气)

算法官

内容已删除
Constanteffortyieldssuresuccess.
7楼2018-01-23 20:51:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianwk

至尊木虫 (知名作家)

支持楼主
8楼2018-06-07 23:20:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

神级呆呆贼

禁虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
本帖内容被屏蔽

9楼2018-06-09 13:37:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 rainchxy 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见