分治法

作者: tangrl | 来源:发表于2020-03-19 17:29 被阅读0次

前言

这学期学算法设计与分析,因为在家看直播学效率不如在学校高,故在此记录学习过程中遇到的问题和学到的东西,希望能帮助到别人也能帮助自己更加牢固的掌握知识。


分治法是什么

分治法,顾名思义就是分而治之,即将一个大问题分解为若干个不相交的同类型的小问题,分别解决每个小问题(因为是同类型的问题,所以可以递归地求解;当问题规模足够小时,就直接求解),然后将得到的结果重新组合成为大问题的解。

简而言之,分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。


使用分治法解决问题的步骤

(1) 分: 将原问题分解为同类型不相交的若干子问题
(2) 治: 递归地解决这些子问题;当规模足够小时,可以直接求解
(3) 合: 将子问题的解合并为原问题的解


分治法适用情况

如果原问题可以分割成k个子问题,1<k<=n,且这些子问题均可解并且利用这些子问题的解求出原问题的解,那么分治方法就是可行的。
例如,二分查找就是可以用分治法的典型问题。第一步 分: 如果中位元素不是要找的,将n个元素的序列分成两个含有n/2个元素的子序列。第二步 治: 递归查找其中⼀一个子序列直到序列只有一个元素。第三步 合: 返回查找结果。


分治法的复杂性分析

这里以归并排序为例,使用分治法时归并排序的时间复杂度如下 image

那么如何算出T(n)呢,这里我推荐两种方法

法一:递归树法 image

法二:数学运算法

image image

分治法主定理

image

打扰了,上面那张图是我们老师上课的时候给我们放的,翻译成人话就是

image

还是打扰了,其实简单理解一下就是

image

有了主定理,我们进行时间复杂度的求解只需把中心放在T(n)表达式的求解上


总结

学习分治法,你应该知道其使用的条件,如何写出T(n)表达式,如何解出T(n),掌握分治法主定理。

如果需要更多实例去理解,可以自行百度搜索,根据例子去理解动手,是最有效的方法。

相关文章

  • 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/ucwlyhtx.html