美文网首页
第一章 算法基础——基础算法分析类型

第一章 算法基础——基础算法分析类型

作者: 文颜 | 来源:发表于2019-10-12 20:34 被阅读0次

1.1基础算法分析类型

1.1.1 分治法

核心思想:分而治之

原理:先将一个复杂的问题拆解为两个或多个相同的子问题,然后将子问题依然进行分治法处理,直到子问题已经可以直接求解,最终按照问题的拆解顺序,从子问题开始逐步将问题合并为一个大问题,层层向上,最后得到改实际问题的解。在算法领域通常是越是规模小的问题越容易求解,分治法也是充分利用此优势发挥其价值。

可解决问题的类型:

(1)待求解的问题是可以拆分为若干相同或相似的子问题,子问题之间相互独立。

(2)该问题可以在小规模情况下成立,并得到解。

(3)问题被拆分后的子问题的解之间可以进行合并。

解决问题的步骤:

一、分解问题;

二、解决子问题;

三、合并解,得到原始问题的解。

分治法常采用递归的方式进行求解,原因是递归可以有效地将问题拆解为相似且更小的子问题,并且子问题之间相互独立,互不干扰。例如:二分查找、归并排序等。

缺点:利用分治法时,子问题之间存在重复子问题,则可能影响分治法的计算效率,这是因为相同的问题在不同的子问题中均被求解。此时,可考虑利用动态规划的方式对问题进行求解。

1.1.2 动态规划法

动态规划是一种将原问题拆解为若干相对简单子问题的求解方法,常常用于重叠子问题最优子结构性能的问题。通过动态规划的方法,计算量则远远小于一般的解法。原因在于对于重叠子问题,一般情况下会被重复计算,而动态规划则是将重复计算简化问计算一次据放入到结果表中,在下一次计算时则从结果表中查询,从而直接获得结果,因此使性能得到提升。

动态规划的方法是一个从初始状态开始计算结果,后续的计算都依赖于前一个计算结果的状态,最终获得解的过程。

主要步骤:

(1)划分问题;

(2)确定状态和状态变量;

(3)确定状态转移过程;

(4)寻找终止条件。

1.1.3 回溯法

回溯法是一种不断尝试获得问题解的方法,尝试的过程是一种不断枚举的过程。

回溯法在所有的解空间中,按照深度优先尝试的原则,从初始状态不断深入到各个解空间中,解决过程如下:

(1)对需要解决的问题,确定问题的解空间,确保在解空间的范围内存在最优解。

(2)确定回溯法的尝试规则及寻找的方式,以减少不必要的计算。

1.1.4 分支限界法

分支限界法是通过广度优先或者最小代价优先的方式尝试性解决问题。其搜索策略是先通过在路径选择处,生成其所有的下一步分支,计算每一个分支的某个条件限定值,这些条件限定值即为分支的界限,然后从这些分支中选择某个的分支作为下一个节点,使问题的搜索路径向着最优解的分支进行,此处选择分支的方式主要有两种:

(1)FIFO(First In First Out):先进先出;

(2)最小代价。

分支界限法的核心思想:需要确定某个分支的上下界,一遍搜索一边移除某些不满足条件的分支,以提升问题解决得效率。

1.1.5 贪心法

”贪心“是指当前求解的过程在当前的条件下是最好的选择,并未从整体上触发考虑,属于局部最优解。改方法没有一定固定的解题框架,重点在于贪心法的贪心策略。

贪心算法并不是一定会使所有问题得到全局最优的解,因此贪心算法适用于通过局部最优解可以获得全局最优解的问题。

基本思路:

(1)通过数学模型描述问题;

(2)将原始问题拆解为若干子问题,并对每个问题求解,获得每个子问题的局部最优解;

(3)将每个子问题的局部最优解进行合并,获得对整个问题的全局最优解。

对若干个子问题的局部最优合并后的解是否是全局最优解的问题,需要通过实际问题进行分析,如果子问题之间相互独立,不相互影响,则通过合并基本上都属于全局最优解。

相关文章

  • 第一章 算法基础——基础算法分析类型

    1.1基础算法分析类型 1.1.1 分治法 核心思想:分而治之 原理:先将一个复杂的问题拆解为两个或多个相同的子问...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 一、基础算法分析类型

    常见的算法分析类型如下: 1、分治法 2、动态规划法 3、回溯法 4、分支限界法 5、贪心法

  • 如何学习数据结构与算法

    算法学习经验 推荐: 入门: 数据结构启蒙:《数据结构与算法分析——C 语言描述》 算法启蒙:《算法设计与分析基础...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 程序员算法基础——贪心算法

    程序员算法基础——贪心算法 程序员算法基础——贪心算法

  • 第1章 算法简介

    第一章 算法简介 学习目标 为学习本书剩余章节打下坚实的基础; 编写二分搜索算法的代码; 学会使用大O​记号来分析...

  • 算法分析基础

    算法分析基础 大O表示法(Big-O) 一个算法所实施的操作数量或这步骤数可作为独立于具体程序/机器的度量指标 赋...

  • 阶段02#大三·下

    A 书籍 C程序设计语言 Java学习指南 C++语言基础教程 数据结构与算法分析 算法设计与分析基础 计算机网络...

  • 算法与数据结构

    数据结构 数据结构与算法分析_Java语言描述(第2版) 算法 计算机算法基础算法导论编程之法_面试和算法心得 c...

网友评论

      本文标题:第一章 算法基础——基础算法分析类型

      本文链接:https://www.haomeiwen.com/subject/kkjcmctx.html