分治法

    分治,分而治之;各个击破。

   基本思想: 当输入规模n比较大的时候(难以直接解决),划分成等价的k个子问题(可解);

   适用条件:

   基本步骤:分治法在每一层递归上都有三个步骤:分解、解决、合并;

其一般的算法设计模式如下:

Divide-and-Conquer(P)
1.  if |P|≤n0 
2.    then return(ADHOC(P))
3.  将P分解为较小的子问题 P1 ,P2 ,...,Pk
4.  for i←1 to k 
5.    do yi ← Divide-and-Conquer(Pi)    △ 递归解决Pi
6.  T ← MERGE(y1,y2,...,yk)             △ 合并子问题
7.  return(T)
其中|P|表示问题P的规模;n0为一阈值,表示当问题P的规模不超过n0时,问题已容易直
接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的
问题P。因此,当P的规模不超过n0时,直接用算法ADHOC(P)求解。算法MERGE(y1,y2,
...,yk)是该分治法中的合并子算法,用于将P的子问题P1 ,P2 ,...,Pk的相应的解y1,
y2,...,yk合并为P的解。
  复杂性分析:

  
  
  实例分析--二分查找法(Binary Search)

 
 

  

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值