简单算法定义见解

1、回溯法(这个就和找迷宫出口一样)

  • 递归算法的一种特殊形式
  • 基本思想:对于包含多个节点,每个节点又由若干搜索分支的问题,,把问题分解为对若干子问题求解,当搜索到某个节点,无法在继续下去的时候,就让搜索过程回溯到该节点的前一节点,,继续搜索这个节点的其他未搜索过的分支,直到没有分支未搜索为止。
  运用回溯法解题的关键要素有以下三点:
    (1) 针对给定的问题,定义问题的解空间;
    (2) 确定易于搜索的解空间结构;
    (3) 以深度优先方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。

2、分治策略 (例子:快速排序、二分查找、归并排序

  若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

   分治法所能解决的问题一般具有以下几个特征:
  • 该问题的规模缩小到一定的程度就可以容易地解决;
  • 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
  • 利用该问题分解出的子问题的解可以合并为该问题的解;
  • 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

3、动态规划

  把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解

  动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。
  举例:
  线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;
  区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;
  树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等;
  背包问题:01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题,挤牛奶等;

4、贪心算法(典型例子:0-1背包问题)

 在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解

posted @ 2019-07-27 22:56  编程小白1024  阅读(226)  评论(0编辑  收藏  举报