美文网首页
分治算法和回溯算法

分治算法和回溯算法

作者: 文景大大 | 来源:发表于2020-11-14 13:48 被阅读0次

一、分治算法

核心思想就是分而治之,将原问题划分为n个规模较小的,并且结构与原问题相似的子问题,而后递归地解决这些子问题,最后将其结果进行合并,得到原问题地解。但是要求,分解问题和合并结果不能太复杂。

分治算法是一种处理问题的思想,递归是一种编程技巧。一般情况下,分治算法都比较适合使用递归来实现。

比如在讲解八大排序算法中的归并排序时,就是将大的排序问题分解为小的排序问题,再将小的有序数列合并起来形成最开始问题的解。

分治算法应用比较广泛,并不仅限于指导算法思想上,在海量数据处理场景中也可以大显身手。比如海量数据无法直接加载到一台机器的内存中进行处理,那么可以将海量数据分解到n台机器的内存中分别处理,最后将每台机器的处理结果合并再进行最后的处理。当然,并不仅限于内存敏感的问题,CPU敏感的问题也都是同一思路。

二、回溯算法

回溯算法常用于求解路径搜索类的问题。比如,每个路口都有很多岔路,如何选择最优的路径。

其实回溯算法算是作用在枚举之上的,我们需要枚举出来所有的解,然后根据这些解之间的比较得到最有的那个解。而回溯算法在这其中起到的作用就是帮助我们毫不遗漏地枚举每一个解并找到最优解。

比如在图的应用那篇文章里面,我们提到的深度优先搜索算法,先随意选择一条路走到头,然后退回一个继续寻找其它的路,当所有路都找完了,再退回一个继续寻找,如此回溯。

还有八皇后问题,我们需要在8*8的棋盘上,放置8个皇后,使得每个皇后所在的行、列、对角线上都不能有另外一个皇后,总共有多少种放法。这个问题我们把其分为八个步骤,每一个步骤都是先随便放置,看看当前的方案是否符合要求,如果不符合要求,就回溯寻找其它位置,如果符合要求就进行下一个步骤。

还有0-1背包问题,正则表达式匹配问题等,都可以使用回溯的算法思想。

相关文章

  • 分治算法和回溯算法

    一、分治算法 核心思想就是分而治之,将原问题划分为n个规模较小的,并且结构与原问题相似的子问题,而后递归地解决这些...

  • 数据结构与算法简述(下)

    目录: 算法简介 排序算法 递归与穷举 贪心与分治 动态规划和回溯 1.算法简介 解题方案的准确而完整的描述,是一...

  • 高级算法设计与分析

    目录 算法基础 算法复杂性 递归与分治 回溯法与分支限界法 贪心算法 动态规划法 NP问题 概率算法 现代优化算法...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 五大常用算法

    引言 据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不...

  • 那些经典算法:贪心算法

    贪心算法和分治算法、动态规划算法、回溯算法都是一种编程思想,深入理解这些编程思想,我们也可以根据实际情况设计自己的...

  • 算法汇总

    关于算法: 基础技巧:分治、二分、贪心排序算法:快速排序、归并排序、计数排序搜索算法:回溯、递归、深度优先遍历,广...

  • 算法与数据结构简介

    0x01 算法 基础技巧:分治、二分、贪心 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、深度优先...

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • 分治算法

    文章结构 如何理解分治算法 分治算法应用举例 1. 如何理解分治算法 1.1 分治算法的核心思想 分治算法的核心思...

网友评论

      本文标题:分治算法和回溯算法

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