算法常用范式笔记


算法常用范式记录如下:

暴力破解法

由名称可知,此范式主要的方式是将所有情况进行穷举,逐个尝试。
优点:应用此模式,理论上能够解决任何问题。
缺点:实际应用中,由于算法对于时间和空间的要求,规模大时无法满足。
也称为了线性算法,常用的模式有:
1、冒泡排序
2、选择排序
3、顺序查找

分治法

顾明思议,就是将大的问题,分解成若干个小结构的,与原问题相似的子问题,以便更好的分析和讨论,然后再递归的解决这些问题,最后将其合并,以便得到原问题的解。
常用的模式有:
1、二分查找法
2、快速排序法
3、合并排序法
一般步骤:
1、分解:将原问题分解成一系列与原问题同质的子问题。
2、解决:递归解决各个子问题,若子问题足够小,则直接求解。
3、合并:将子问题结果合并成原问题的解。

动态规划法

核心是将问题分解成若干个子问题,再按照顺序进行求解,前一个子问题的解为后一个子问题求解提供依据。
基本步骤:

贪心算法

贪心算法在求解问题时,总是做出当前看来最好的选择,算法设计的关键是贪心策略的选择。
贪心策略选择的前提是:局部的最优策略能导致产生全局最优解。
所以实际上,贪心算法适用的场景很少。
基本思路:
1、建立数学模型来描述问题。
2、把求解的难问题分成若干个子问题。
3、对每个子问题求解,得到子问题的局部最优解。
4、把子问题的局部最优解合成原来问题的一个解。

回溯法

可以理解成隐式的深度优先搜索算法。
就是按照优选条件向前搜索,但当探索到某一步时,发现原来的选择并不优,或者达不到目标,此时就退回一步重新选择,这种走不通就退回再走的,称为回溯法,而满足回溯条件的某个状态的点,称为回溯点。
许多复制的,规模较大的问题都可以使用回溯法,有通用解题法的美称。
一般步骤:
1、针对给定问题,确定问题解空间,问题的解空间应至少包含问题的一个(最优)解。
2、确定问题的扩展搜索规则。
3、以深度优先的方式索索解空间,并在搜索过程中用剪支函数避免无效搜索。

分支界限法

类似于回溯法,也是在问题的解空间 树上搜索问题的解法,但一般情况下,分支界限法与回溯法求解目标不同。
回溯法求解目标是,找出树中满足约束条件的所有解,而分支法是找出满足约束条件的一个解,即在某种意义下的最优解。
所谓分支,就是采用广度优先搜索算法, 依次搜索节点的所有分支,抛弃不满足条件的节点,然后从余下节点中选择一个节点作为下一个搜索节点继续搜索,以最小耗费优先的方式搜索结果树空间。
一般步骤:
1、在扩展节点,先生成其所有的子节点,然后再从当前活节点表中选择下一个扩展节点。
2、为有效的选择下一个节点,以加速搜索进程,在每一个活节点,计算一个函数值(界限),并根据这些已计算出的函数值,从当前活节点表中选择一个最有利的节点作为扩展节点。
3、根据节点使搜索朝解空间树上有最优解的分支推进,一遍尽快找出一个最优解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值