• 简单算法定义见解


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

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

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

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

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

    3、动态规划

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

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

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

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

  • 相关阅读:
    Git远程操作详解
    Markdown介绍
    Git & GitHub 学习
    小甲鱼Python笔记(类)
    小甲鱼Python笔记(下)
    小甲鱼Python笔记(上)
    compare.go
    compact_op.go
    cluster.go
    client.go
  • 原文地址:https://www.cnblogs.com/karrya/p/11257173.html
Copyright © 2020-2023  润新知