分治法

作者: 萌妈码码 | 来源:发表于2018-07-26 10:32 被阅读0次

分治法求解的思想是将整个问题分成若干小问题后分而治之。通常,由分治法多得到的小问题与原问题具有相同的类型。并且在求出了这些子问题的解之后,还要找到适当的方法把它们合并成整个问题的解。基于此思想,使用递归描述这类(使用分治策略设计的)算法是一个很自然的选择。(当然,之后将递归再转为迭代,进一步优化是另一个话题。)

引用维基百科的一段话来帮助理解分治和递归的关系。

It is by definition that divide-and-conquer creates subproblems of the same form as the initial problem - these subproblems are continually broken down until some base case is reached, and the number of divisions correlates with the size of the input. Recursion is a natural choice for this kind of problem.

Or

In computer science, divide and conquer is an algorithm design paradigm based on multi-branched recursion. A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly.

列举一些典型的可以使用分治策略设计的算法:

【二分检索】

二分检索时间复杂度

成功检索 最好: O(1); 平均:O(logn); 最坏:O(logn)

不成功检索:最好,最坏,平均均为O(logn)

*****通过数学论证可知,任何一种以比较为基础的检索算法,其最坏情况时间都不可能低于O(logn).二分检索是解决检索问题的最优的最坏情况算法。

【找最大和最小元素】

*****当A(1:n)中的元素是多项式、向量、非常大的数或者字符串是,一次元素比较所用的时间比其他运算的时间要多得多。因为当分析这类算法的时间复杂度时,只需要将元素比较次数求出即可。

*****估算递归算法空间复杂度:递归级数*每次递归需要保留到栈中的元素大小

【归并排序】使用分治策略设计的排序算法。

*****任何以关键字比较为基础的排序算法,其最坏情况的时间下界都为O(nlogn)。

【快速排序】详情参考 快排

引申:几种典型排序算法的详细比较 参考 几种排序算法的总结和比较

【选择第k小问题】借助快排思想,划分,递归

备注:文中*****表示一些平时没有注意到的重要结论。

引用:

Divide and conquer algorithm

几种排序算法的总结和比较

相关文章

  • Divide and Conquer

    算法之 分治法 Divide and Conquer 分治法: 分治法的设计思想是:将一个难以直接解决的大问题,分...

  • 归并排序

    1、分治法 归并排序是完全遵循分治策略的排序算法。什么是分治法? 分治法,即将原问题分解为几个规模较小的子问题,递...

  • 分治法,动态规划及贪心算法区别

    原文:分治法,动态规划及贪心算法区别 1.分治法 分治法(divide-and-conquer):将原问题划分成n...

  • [算法导论]归并排序

    时间复杂度 《算法导论》2.3.1 分治法。 归并排序采用了分治法的递归排序。分治法:分解子问题,解决子问题,合并...

  • Divide and Conquer 分治法

    Divide and Conquer 分治法

  • 分治法

    分治算法也叫分治策略,把输入分为若干个部分,递归的解每一个问题,最后将这些子问题合并成为一个全局解。 由此可以得到...

  • 分治法

    分治法求解的思想是将整个问题分成若干小问题后分而治之。通常,由分治法多得到的小问题与原问题具有相同的类型。并且在求...

  • 分治法

    分治法是一种算法思想,顾名思义就是分而治之的意思。把一个很难解决的问题划分成许多小问题进行解决然后合并。在计算机算...

  • 分治法

    一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或...

  • 分治法

    整数划分 所谓整数划分,是指把一个正整数n写成如下形式:n=m1+m2+...+mi; (其中mi为正整数,并且1...

网友评论

      本文标题:分治法

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