• 简单算法定义见解


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

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

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

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

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

    3、动态规划

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

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

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

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

  • 相关阅读:
    TinyEditor:简洁且易用的html所见即所得编辑器
    arguments.callee 调用自身
    java.io.IOException: 设备未就绪
    关于vcastr3播放器自动播放的问题
    javascript中IE浏览器不支持NEW DATE()带参数的解决方法
    Oracle常用查看表结构命令
    java通过文件头内容判断文件类型
    RS开发日期提示控件默认为昨天
    Cognos更新问题之利用Transform实现Cube增量更新
    SqlServer中从字符串中获取项目指标方法charindex月substring结合
  • 原文地址:https://www.cnblogs.com/karrya/p/11257173.html
Copyright © 2020-2023  润新知