浅谈算法,一些感悟
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈算法,一些感悟相关的知识,希望对你有一定的参考价值。
最近看到好几个同学在学算法,看了一些书,另外跟一个算法较好的同学讨论了一下,若有所悟,作此文,以求各位大神指教;
现在看到好多同学学算法,可是,事实上看起来,真正明白理解了算法是一种什么东西的极少,很多都是为了参加ACM而去学算法,并没有对算法有真正意义上的研究,甚至说,他们拿到了ACM的入场券的时候还不知道算法是什么,我感到很惋惜,从我个人的理解来说,算法其实一直都在我们身边,它就是一切可以通过逻辑解释的活动的一整个过程,这样说可能有点泛泛而谈了,总的来说,算法就是一个抽象的流程;而且在我看来,我们计算机领域内所谈的算法应该算是一种比较狭义上的算法,是一种基于计算机的算法,而此类算法,我觉得应该可以分两种类型:求解型和功能型,何为求解型呢?具体说来,就是当前各种算法大赛所要求的那种算法,是为了对一类题求解,至于功能型,就是软件设计方面所用到的算法,可以说是把一系列求解型算法整合在一起的算法,好了,说了这么多废话,该入正题了;
会算法的人很多,可是算法也是有好有坏的,对一个程序来说,在得到同等结果的情况下,能尽量地减少时间损耗的就是好算法,但是,很多人为了追求完成任务,在时间损耗上不加以注意,使用了很多很粗糙的算法,比如说:要做一个循环十次的算法,有的人使用了循环算法,有的就使用分步的算法,把每一步都写出来,这只是一种很极端的情况,一般已经入门的人都不会这样做,后者就是一种很粗糙的算法,不仅执行效率低,而且写起来也吃力不讨好,相对后者来说,前者就是一种较美的算法,简洁、执行效率高、写起来也方便,这就是我对算法美的一种定义;
至今为止,我也没写出多少美的算法,但是,可以说我一直在追求,我尝试通过不断地思考,学习去改善一个算法,一下就是在算法由粗糙到美这个过程的一些感悟:
1、模糊算法模型,在写算法之前,应该先对整个算法有一个比较模糊的算法模型,应该知道这个算法是干嘛的,要怎么实现等等,不要一拿到题目就急着写算法,然后一边写一边思考,这种行为会把一个原来比较容易写的美的算法写的粗糙的;
2、在模糊算法模型的基础上,一步步往模型中添加具体的算法,使整个模型清晰起来,如果只是做一些比较的小的算法的话,这种行为可能没太大必要,可是,对一些比较大的算法来说,或者一下子要把整个算法模型弄出来会很困难,而且很多细节地方会顾及不到,因此,在模糊算法模型的基础上,把整个完整的模型分解成很多小的算法,一些小的算法比较容易写得美;
3、整合所有小算法,往模糊模型中添加完小算法之后,最重要的就是如何把这些小算法连接起来,这又涉及到一些连接的算法,而这些连接算法,有可能是相同的;
4、很多人写完算法之后,就开始根据算法编程,可是,有的时候,我们没预料到的就是语言本身的一些问题,会导致我们的算法错误,因此,我们在写完算法,甚至在写的过程加入我们所需要注意的编程问题,以求最好的算法;
5、有的时候,我们看看身边事物,没有什么特别,可是当我们从算法的角度出发,思考每种行为的算法的时候,我们可以领悟到更多的算法,同时,这些算法也可以在某些时候被应用到我们的项目之中;
时间问题,这次就先写这么多吧,只是个人的一些感悟,可能不太正确,恳请各位赐教!
以上是关于浅谈算法,一些感悟的主要内容,如果未能解决你的问题,请参考以下文章