赞
踩
很多人感叹:算法为什么辣么难!
首先,算法本身具有一定的复杂性,还有一个原因:讲的太烂!
算法的教与学有两个困难:
(1)我们学习了那些经典的算法,在惊叹它们奇思妙想的同时,难免疑虑重重:这么刁,怎么想到的?对学生来说,这可能是最费解、也最让人窝火的地方。高手讲,学算法要学它的来龙去脉,包括种种证明。但这对菜鸟来说,简直比登天还难,很可能花费很多时间也无法搞清楚。这条路对大多数人来说,是行不通的,那怎么办呢?下功夫去记忆书上的算法?记住这些算法的效率?看似学会了,其实两手空空。遇到一个新问题,仍然无从下手。可这偏偏又是极重要的,无论作研究还是实际工作,一个计算机专业人士最重要的能力,就是解决问题——解决那些不断从实际应用中冒出来的新问题。
(2)算法作为一门学问,有两条几乎平行的线索。一个是数据结构(数据对象):数、矩阵、集合、串、排列、图、表达式、分布等等。另一个是算法策略:贪心、分治、动态规划、线性规划、搜索等等。这两条线索是相互独立的:同一个数据对象(例如图)上有不同的问题,例如单源最短路径和最优二叉树,就可以用到不同的算法策略,如贪婪和动态规划;而同一个算法策略,例如排序和整数乘法,也会用到不同的数据结构。它们之间是多对多的关系。
两条线索交织在一起,该如何表述?
我们早已习惯《数据结构》中讲数据结构,《算法设计与分析》里面讲算法策略。各说各的,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。