美文网首页算法简单学习
算法简单学习(一)—— 前言

算法简单学习(一)—— 前言

作者: 刀客传奇 | 来源:发表于2017-08-12 11:07 被阅读108次

版本记录

版本号 时间
V1.0 2017.08.11

前言

将数据结构和算法比作计算机的基石毫不为过,追求程序的高效是每一个软件工程师的梦想。下面就是我对算法方面的基础知识理论与实践的总结。

算法是干什么的

当我们编写程序时,一般是实现一种先前设计好的、用来解决问题的方法。这种方法一般与使用的计算机无关,可能对多种计算机和多种语言同样适用,计算机里面算法(algorithm)用来描述适合用计算机程序实现的问题——解决方法。

大部分算法的重点在于计算中涉及的数据的组织方法,按照这种创建的对象被称为数据结构(data structure),也是计算机科学中的研究对象。一般认为数据结构是算法的最终产品。想学好算法也要学习数据结构,简单的算法可能导致复杂的数据结构,复杂的算法也可能使用简单的数据结构。


算法的重要性

学习算法设计的主要原因是,设计原理赋予我们节省巨大开销的潜力,甚至可以完成那些原本无法完成的任务,足可见其重要性。当我们开发一个庞大的系统时,可以分解成很多的subTask,分解之后的算法是很好实现的,但是一定要选择好算法,不好的算法会额外消耗很多的资源。

执行特定任务的算法选择是一个很复杂的过程,这里包括复杂的数学分析,甚至包含计算机科学的分支算法分析(analysis of algorithms),通过详细理性的科学分析,找到科学的实现方法。


如何学习算法

算法的学习是一个循序渐进的过程,这主要有两个方面的因素。

  • 其一是计算机相关基础知识是否扎实。
  • 其二是思维逻辑的强化和算法实践需要时间。

如果要学习算法,找到合适的书籍是很重要的,比较推荐算法导论这本书,下面会给出这本书的链接大家可以买或者在网上找电子免费版。

学习算法一般都是按照下面流程进行学习的:

1. 基础数学知识储备要过硬

学习算法数学一定要好,数学中与算法相关的有微积分线性代数概率论离散数学图论

  • 微积分:可以帮助你理解算法中时间复杂度、空间复杂度的概念。
  • 线性代数:帮助你理解矩阵算法中的图算法。
  • 概率论:帮助你理解随机算法,估计时间复杂度等。
  • 离散数学:离散数学里面有算法、计数和归纳等你需要知道的知识。
  • 图论:有关树、图和流的基础知识你都可以在这里找到。

有了上面的数学知识做基础,我们才可以进入计算机方面算法的学习。

2. 计算机相关知识要精通

  • 数据结构:它很重要,可以让你把树、图能用计算机语言表达出来。
  • C语言:C语言是国内大部分高校工科生接触的第一门计算机语言,上手也会比较快,要比C++更好的让人理解。

3. 可以系统的啃算法了

有前面数学和计算机相关的基础,下面可以系统的开始啃算法了,比较推荐的书籍就是算法导论算法设计。看算法导论看的头晕不知所云的时候,可以看这里。这里还有算法笔记

在学习算法导论的时候还可以结合MIT的公开课进行学习。

4. 真正的实践可以开始了

有了前面对算法的系统学习,下面就可以实践了,我们平时可以在家里系统的实现一些小的算法,当然,如果你的项目里面经常用到很多大的算法,同事还有很多算法大牛的话,你的进步一定会快的飞起来,但是那是可遇不可求的事,毕竟自己如果技术不行,去的公司也十有八九也不会有技术大牛,总之,打铁还需自身硬,只有自己的技术到了一定层次,才会有机会和更高层次的人交流的机会。

还有就是学习算法不能一蹴而就,一定是厚积薄发,贯穿整个编程的职业生涯,不能急躁,程序 = 算法 + 数据结构,刚开始起步很难,不要贪多,但是一定要学的扎实。


几本推荐书籍

1. 编程之美
2. 数据结构与算法分析:C语言描述
3. 算法设计与分析基础
4. 算法引论
5. 编程的本质(英文版)
6. C语言接口与实现:创建可重用软件的技术 (这本书侧重算法的实现)
7. 编程语言实现模式
8. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology
9. Writing Efficient Programs
10. 算法导论(原书第2版)
11.算法设计
[12. 离散数学及其应用]
[13. 图论]
[14. Algorithms]

这些书不用全部都读,比较经典的就是算法导论,大家可以根据自己算法学习阶段,选择适合自己的参考书。找到一个好的书,多读多练,不要贪多,但是一定要精通。

后记

后面我会持续和大家分享我的学习成果,希望对大家有所帮助,也希望大家能和我一起探讨其中的问题,指出我的不足,一起进步,未完,待续~~~

相关文章

  • 算法简单学习(一)—— 前言

    版本记录 前言 将数据结构和算法比作计算机的基石毫不为过,追求程序的高效是每一个软件工程师的梦想。下面就是我对算法...

  • 朴素贝叶斯算法

    1、前言     朴素贝叶斯方法的实现相对简单,但是学习与预测的效率较高,该算法是除了集成学习算法之外较为常用的一...

  • K近邻算法

    前言 这是机器学习最简单的算法,当然并不是说简单就没人用。knn算法的优点就是简单而且便于实现,并且有一定好的效果...

  • Java虚拟机(三)垃圾标记算法与Java对象的生命周期

    相关文章Java虚拟机系列 前言 这一节我们来简单的介绍垃圾收集器,并学习垃圾标记的算法:引用计数算法和根搜索算法...

  • 《机器学习(周志华)》学习笔记(三)

    Q:机器学习中最简单的学习算法是什么? A:最简单的机器学习算法莫过于线性回归算法了。线性回归算法的基本形式如下:...

  • 维特比算法学习

    前言:作为堂堂数学系的学生,竟然很多算法都不会。表示对自己很失望,今天学习了一下维特比算法,发现很简单,而且隐约中...

  • 机器学习(1)——几个基本要素

    学习算法 什么是学习算法,学习当然不是一个动词,学习算法最简单的理解便是能够从数据中学习的算法,学习的解释根据 M...

  • 降维与PCA算法

    前言 在之前的学习中,已经学习了无监督学习中的K均值算法。除此算法之外,无监督学习还有另外一种新的算法,该算法被称...

  • Python案例实战,机器学习算法,实现垃圾邮件识别

    前言 利用简单的机器学习算法实现垃圾邮件识别。 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关...

  • A-LeetCode-算法-总纲

    前言: 标签说明,A为困难,B为中等,C为简单 1、子目录纲要(算法) 1、A-LeetCode-算法-贪心算法[...

网友评论

  • Yohohoho:www.coursera.org
    还可以关注下这个网站的数学和计算机课程,免费且有中文字幕
    Yohohoho:@刀客传奇 客气了,你的文章写得很好
    刀客传奇:谢谢分享,太感谢了

本文标题:算法简单学习(一)—— 前言

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