算法基础知识

一、算法的特征
1、有穷性:算法在执行有限步之后必须终止。
2、确定性:算法的每一个步骤必须有确切的定义。
3、可行性:在有限时间内完成计算过程。
4、输入:一个算法有0个或多个输入,作为算法开始执行前的初始值或初始状态。
5、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。

二、算法的设计
1、穷举搜索法(Exhaustive Search Algorithm)
对可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。
特点:算法简单;运行花费时间大
2、迭代算法(Iterative Algorithm)
数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或方程组)的过程。
举例:斐波那契数列:1、1、2、3、5、8、13、21…(从第3项开始,每一项等于前两项之和)
3、递推算法(Recursive Algorithm)
利用问题本身所具有的一种递推关系求问题解的一种方法。将问题分成若干步,找出相邻几步的关系。
【迭代与递归】
迭代:不断用变量的旧值推出新值的过程;
递推:根据递推关系式不断推出新值的过程
递推往往设置数组,而迭代只要设置迭代的简单变量
两者有很多共同之处,很多迭代过程可以应用递推来解决,反之亦然。
4、递归算法(Recursive Algorithm)
一种直接或间接地调用自身的算法。
例子:数的阶乘
5、分治算法(Divide and Conquer Algorithm)
把一个复杂问题分成两个或者更多的相同或相似的子问题,再把子问题分成更小的子问题,直至最后的子问题可以简单直接求解,原问题的解即子问题解的合并。
【递归与分支】
递归是一种方法;分治是一种思想;分治可以用递归来实现,也可以不用递归
6、贪心算法(Greedy Algorithm)
在对问题求解时,总是做出在当前看来是最好的选择。(不从整体最优上加以考虑,做出的仅是在某种意义上的局部最优解)
7、动态规划算法(Dynamic Programming Algorithm)
用于求解包含重叠子问题的最优化问题的方法,是对解的最优化问题的一种途径、一种方法,而不是一种特殊的算法,不具有一个标准的数学表达式和明确清晰的解题方法。
8、回溯算法(Back Tracking Algorithm)
一种选优搜索法,按选有条件向前搜索,以达到目标。当搜索到某一步时,发现原先的选择并不优选或达不到目标,就退回一步重新选择。
举例:迷宫问题。
9、分支限界算法(Branch and Bound Algorithm)
一种在表示问题解空间的树上进行系统搜索的方法。回溯法使用深度优先策略,而分支限界法采用广度优先策略,同时还采用最大收益(或最小损耗)策略来控制搜索的分支。一般可以求得最优解。

三、算法的复杂性
算法效率的度量,与运行该算法所需要的计算机资源的多少有关
1、时间复杂性(Time Complexity)
执行算法所需要的时间,记作T(n)=O(f(n))。问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关。
2、空间复杂性(Space Complexity)
算法需要消耗的内存空间,记作S(n)=O(f(n))。计算与表示与时间复杂度类似,分析较T(n)简单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值