0.算法

什么是算法

        在学习算法之前,先弄清楚算法是什么,能做什么。刚开始我也迷惑《算法导论》或者《数据结构与算法》中算法与图像算法工程师、AI算法工程师中算法的关系。后来才能明白前者是通用类算法,或者基础类算法,后者是专业类算法,需要有相关的专业知识,但是代码实现或优化却需要通用类算法作为基础。比如图形算法中补洞算法,其中三角化就是利用动态规划算法实现的。
        数据结构是算法设计的基础。算法常用的设计方法有:贪婪法、分治法、动态规划法、回溯法和枚举法。就算法模式而言,处理各种求最优解问题时,人们常用贪婪法、动态规划法等算法模式;处理迷宫类问题,穷尽式的枚举和回溯是常用的模式;如何设计算法?设计算法解决问题的步骤:

  • 建立问题的数学模型
  • 考虑输入输出问题
  • 算法的设计
    所以:数学模型、输入输出方法和算法步骤是编写计算机算法程序的三大关键因素。数学模型是使用数学概念和语言来对一个系统的描述。创建数学模型的过程叫做数学建模。数据结构在算法设计过程中扮演着非常重要的角色,输入输出方式和算法步骤设计都是基于响应的数据结构上的。

如何学习算法和数据结构

        首先入门的话,推荐《大话数据结构》和《算法图解》。用图来解释数据结构和算法,帮助我们快速了解它们。认门之后,需要夯实基础,推荐《数据结构和算法分析》。国内外很多大学都拿它当做教材。因为这本书非常系统、全面、严谨,而且又不是特别难,适合对数据结构和算法有些基本了解,并且掌握了至少一门编程语言的同学。而且,这个作者也很用心,他用了三种语言,写了三个版本,分别是:《数据结果与算法分析:C语言描述》、数据结果与算法分析:C++语言描述》、数据结果与算法分析:Java语言描述》。
        当然,《算法导论》和《算法》你肯定不会陌生。不过这两本书虽然经典、出名,但是也特别厚,看起来费劲。《算法导论》章节安排的先后顺序不是很循序渐进,里面充斥这各种算法的正确性、复杂度的证明、推导,数学公式比较多。《算法》相对友好很多,更容易看懂,但是缺点也很明显,就是内容不够全面,比如动态规划这么重要的知识点这本书就没有讲。
        维基百科上有个算法列表:List of algorithms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值