[置顶] 编程思想 - 五大常用算法详解

标签: 思想总结
23人阅读 评论(1) 收藏 举报
分类:

https://www.cnblogs.com/brucemengbm/p/6875340.html

https://blog.csdn.net/changyuanchn/article/details/51476281

https://www.cnblogs.com/chuninggao/p/7295793.html

分治法

  • 基本思想
    • 将一个问题,分解为多个子问题,递归的去解决子问题,最终合并为问题的解
  • 适用情况
    1. 问题分解为小问题后容易解决
    2. 问题可以分解为小问题,即最优子结构
    3. 分解后的小问题解可以合并为原问题的解
    4. 小问题之间互相独立
  • 实例
    1. 二分查找
    2. 快速排序
    3. 合并排序
    4. 大整数乘法
    5. 循环赛日程表
动态划分算法
  • 基本思想
    • 将问题分解为多个子问题(阶段),按顺序求解,前一个问题的解为后一个问题提供信息
  • 适用情况
    1. 最优化原理:问题的最优解所包含的子问题的解也是最优的,即最优子结构
    2. 无后效性:某个状态一旦确定,就不受以后决策的影响
    3. 有重叠子问题
  • 说明
    • 递推关系是从次小的问题开始到较大问题的转化,往往可以用递归来实现,可以利用之前产生的子问题的解来减少重复的计算
回溯法
  • 基本思想
    • 选优搜索法,走不通就退回重选,按照深度优先搜索的策略,从根节点出发,深度搜索解空间
  • 步骤
    • 确定解空间
    • 确定节点的扩展搜索规则
    • 深度优先方式搜索解空间,用剪枝法避免无效搜索
分支界限法
  • 基本思想
    • 与回溯法类似,也是在解空间里搜索解得算法,不同点是,回溯法寻找所有解,分支界限法搜索一个解或者最优解
    • 分支:广度优先策略或者最小耗费(最大效益)优先
    • 分支搜索方式:FIFO、LIFO、优先队列式、分支界限搜索算法
贪心算法
  • 基本思想
    • 不从总体最优考虑,仅考虑局部最优解,问题必须具备后无效性
  • 步骤
    • 将问题分解为多个子问题
    • 得到问题的局部最优解
    • 合并子问题的局部最优解
  • 适用情况
    1. 局部最优策略能导致全局最优解
    2. 子问题后无效性


参照:

https://blog.csdn.net/beyond59241/article/details/50728614

查看评论

五大基本常用算法概述

一,贪心算法的设计思想         • 从问题的某一个初始解出发逐步逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解。当达到某算法中的某一步不需要再继续前进时,算法停止。 ...
  • xingzheouc
  • xingzheouc
  • 2015-10-04 17:06:22
  • 3848

5大常用算法总结

算法一:动态规划算法 一、基本概念     动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程...
  • piriter
  • piriter
  • 2014-12-09 18:46:56
  • 1981

五大常用算法&实例列举

五大常用算法&实例列举 1.分治法 · 话说递归与HANOI塔 · 二分法求方程近似解 · 用C++实现合并排序 ...
  • Scotfield_msn
  • Scotfield_msn
  • 2016-09-14 01:16:49
  • 850

技术文章|详解个性化推荐五大最常用算法

推荐系统,是当今互联网背后的无名英雄。 我们在某宝首页看见的商品,某条上读到的新闻,甚至在各种地方看见的广告,都有赖于它。 昨天,一个名为Stats&Bots的博客详解了构建推荐系统的五种方法。 量子...
  • CS13522431352
  • CS13522431352
  • 2017-08-04 14:59:59
  • 133

五大常用算法思想

最近有空学习了一下算法,参考网上文章,将五中常用的算法思想汇总一下,方便以后工作使用1 分治算法一、基本思想及策略 分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以...
  • zzd1506619299
  • zzd1506619299
  • 2016-08-18 17:32:30
  • 437

在编程中五大常用算法...

  • 2011年07月20日 21:26
  • 45KB
  • 下载

C++面向对象编程思想

1、概述:  面向对象编程思想是很早就提出来早在1967年的时候,在挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的...
  • weikangc
  • weikangc
  • 2015-05-19 11:13:15
  • 536

五大常用算法:分治法、动态规划、贪心法、回溯法、分支界限法

五大常用算法:分治法、动态规划、贪心法、回溯法、分支界限法。。。
  • lincoln_2012
  • lincoln_2012
  • 2015-11-06 16:41:34
  • 492

温故知新——五大常用算法总结

分治法 动态规划 贪心 回溯法 分支
  • dd864140130
  • dd864140130
  • 2016-03-05 12:07:08
  • 1048

五大常用算法详解

分治算法 一、基本概念   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后...
  • wxliu1989
  • wxliu1989
  • 2014-04-16 19:41:43
  • 387
    个人资料
    等级:
    访问量: 1289
    积分: 256
    排名: 29万+
    博客专栏
    最新评论