0
点赞
收藏
分享

微信扫一扫

算法与数据结构-分治法

陆佃 2022-03-30 阅读 94
算法

分治法

分治法的思想

将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。

分治模式在每层递归时都有三个步骤:

  • 分解:将原问题分解为若干子问题,这些子问题是原问题的规模较小的实例。
  • 解决:递归地求解这些子问题。当子问题规模足够小时,可直接求解。
  • 合并:合并子问题的解成原问题的解。

一个经典的分治法的例子就是归并排序。

分析分治算法

当一个算法包含对自身的递归调用时,我们往往可以用递归式来描述其运行时间。按照分治模式的三个步骤依次分析。假设 T ( n ) T(n) T(n) 是问题规模为 n n n 的一个问题的运行时间。若问题规模足够小,如对于某个常量 c c c n ≤ c n \le c nc,则直接求解需要常量的时间。假设把原问题分解为 a a a 个子问题,每个子问题的规模是原问题的 1 / b 1/b 1/b,则为了求解 a a a 个规模为 n / b n/b n/b 的子问题,我们需要 a T ( n / b ) aT(n/b) aT(n/b) 的时间。设分解的总时间为 D ( n ) D(n) D(n),合并的总时间为 C ( n ) C(n) C(n),则递归式如下:
分治算法递归式分析

举报

相关推荐

0 条评论