葡萄皮的个人空间分享 http://blog.sciencenet.cn/u/Hadron74

博文

学习算法的那点事儿

已有 8233 次阅读 2014-3-25 18:21 |个人分类:生物信息|系统分类:科研笔记| 算法, 生物信息

最近chinaunix论坛进行了关于算法学习的讨论(http://bbs.chinaunix.net/thread-4130313-1-1.html) ,下文是我的一点感受,放在这里:


1. 平常是如何学习(夯实)算法和数据结构基础知识的?
 本人的工作是生物信息,原来不是计算机专业出身,考博士的时候恶补了一下算法知识,用的是严蔚敏的算法书,受益颇深。幸好学到还好,考试成绩还不错。
感觉还是有考试压力下,有动力学习,做题加实践出真知。
 楼上有人把算法学习分为三个部分,我觉得分类分得很好,很多也说到我心里。也就这三个方面,谈一下自己的感受。
   1).基本数据结构及算法概念
    这部分确实需要自己下深功夫,如果没有硬功夫,很难理解透算法的基本概念,这里没有捷径可言。数据结构从简单的线性表开始,到树结构,图结构。算法的学习要与数据结构的学习结合,但要稍后。递归算法和动态规划是两个里程碑的算法概念,哈希和链表是用得最多的结构,只有深入掌握了这些,才算入门。其他的算法技巧在此基础上,才能慢慢展开。
   2).算法分析
   这个领域又叫算法复杂性研究,是一个计算机科学领域的金字塔的领域,要有较深的数学,包括离散数学和高等数学的基础。理解这个领域的概念非常有助于算法的重要性,理解别人的软件为什么会采用相应的算法和数据结构,如何评价它们等等。但毕竟这个领域是一个学术领域,如果不是为了在这个科学领域做出研究贡献,对于大多数的计算机应用人才,个人认为点到而止比较好。
   3).算法设计与应用
     这才是大多数计算机应用人才需要的部分,在算法设计时,我们一般考虑的因素
      a) 代码编写时间、可读性和程序运行效率的平衡;
      b)算法的时间效率和空间效率的平衡;
      c)算法的精确性和效率的平衡
      。。。。。
      这里仅就a)多说几句,有的学过一点算法的人可能对算法有痴迷,开发时总想把程序写得尽可能的快或少占内存,浪费很多时间在算法改良,同时使程序丧失了可读性,本人觉得这是不好的。当然这不是否定在算法学习阶段的精益求精。

2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
   算法对我的生物信息学工作非常有帮助,体现在这样几个方面:
  a)对程序设计的直接帮助。如图论算法应用于网络研究,动态规划用于序列分析,树的递归用于进化树研究等等。
  b)理解别人的软件的算法和数据结果,以便更好的应用。如Blast等常用的软件,生物信息的大部分工作在于软件整合,了解这些软件的内部,才能更好的应用,当然这里除了算法还有统计学等知识,也是很有必要的。
  c)真正欣赏到计算机科学的美感。当你理解了一种新的数据结构的妙处,当你把程序的速度或内存效率成十上百倍的提高,当你搭建了一个新的数据和计算平台,还有什么能比此时计算机带给你的美妙更能吸引人的呢?

3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。
   我面试过一些生物信息的学生,但大多在算法方面没有太深的基础。其实算法并不是那么难的,难的他们感兴趣的心。题目这里就不说了。




https://blog.sciencenet.cn/blog-565112-779129.html

上一篇:安装hadoop2.2.0 到Windows 7笔记
下一篇:儿子名子的故事
收藏 IP: 155.91.136.*| 热度|

5 徐绍辉 曹君君 tlw2013 htli yonghuidong

该博文允许注册用户评论 请点击登录 评论 (8 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-18 23:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部