![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法分析
文章平均质量分 71
风成雨化
多试几次又有何妨,无论是bug或推理,今天或明天
展开
-
算法分析--回溯法
一、回溯法基本概念 1.基本做法:搜索 2.指导思想:走不通就回头 3.求解问题:回溯到根,且根结点的所有子树都被搜索遍才结束 4.求解步骤: (1)确定问题的解空间 (2)确定结点的扩展规则 (3)搜索解空间 搜索代价: (1)剪枝:通过状态估值,判断是否继续扩展 (2)估值与检查机制:好的机制能显著的减少所生成的结点数 回溯算法的效率: (1)产生X[K]的时间 (2)过程中检查X[K]的个数 (3)计算估值函数的时间代价 二、PPT例题 1.找出n个数中r个数的组合 使用dfs+回溯 参考 #incl原创 2021-01-06 21:39:25 · 552 阅读 · 0 评论 -
算法分析--图的搜索
一、图搜索概论 树的定义: 树 (Tree) 是 n (n≥0) 个结点的有限集。若 n = 0,称 为空树;若 n > 0,则它满足如下两个条件: (1) 有且仅有一个特定的称为根 (Root) 的结点; (2) 其余结点可分为 m (m≥0) 个互不相交的有限集 T1, T2, T3, …, Tm,其中每一个集合本身又是一棵树,并称为 根的子树 (SubTree)。 基本术语: 根节点:非空树中无前驱结点的结点 结点的度:结点拥有的子树数,度=0就是叶子即终端结点 森林:是由m棵互不相交的树的原创 2021-01-06 19:45:43 · 640 阅读 · 0 评论 -
算法分析--分治法
分治法 一、算法基本思想 将整个问题分解为若干个小问题后分而治之。 如果分解后得到的子问题相对来说还是太大了,则可以反复使用分治策略。 二、基本步骤 1.分解:将原问题分解为若干个规模小,相互独立,与原问题形式相同的子问题。 2.解决:若子问题容易被解决则解决,若不容易解决则继续分解为更小的问题解决。 3.合并:将已求解的各个子问题的解,合并为原问题的解。 三、适合用分治法求解的问题 当求解一个输入规模为n,取值又相当大的问题时,满足以下几点: (1)能将这n个数据分解成k个不同子问题,,且得到k个子集合都原创 2021-01-06 11:40:01 · 1156 阅读 · 0 评论 -
算法分析--动态规划
动态规划 一、动态规划的基本思想:求解问题分为多个阶段或多个子问题,然后按顺序求解各个问题,最后一个子问题就是初始问题的解。 动态规划=贪婪策略+递推+存储递推结果 空间换取时间 二、主要概念 阶段:把问题分为几个相互联系的有顺序的几个环节,这些称为阶段。 状态:某一阶段发出的位置称为状态。 决策:从某一阶段的一个状态演变到下一个阶段的某一个状态的选择。 状态转移方程 三、适合解决的问题 最优化原理:最优子结构 无后向性:某状态一旦确定后,就不受这个状态以后决策的影响。 四、步骤 (1)划分阶段(2)选择状原创 2021-01-04 21:15:46 · 213 阅读 · 0 评论 -
算法分析-贪心算法
一、贪心算法的根本思想 例如:求生存某种商品的所花费的时间最少; 最直接方法:枚举; 高效一点方法:逐步的局部最优实现全局最优 二、贪心算法的基本要素: 贪心选择性质和最优子结构性质 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。 与动态规划主要区别是,动态规划是自底向上解决问题,贪心算法是自顶而下解决问题。 动态规划中父问题与子问题是有相关依赖性,父问题是以子问题为条件,而贪心算法父子无相关依赖性原创 2021-01-04 16:05:26 · 1260 阅读 · 0 评论