《算法导论》第四章——分治策略

第四章——分治策略

求解递归式的方法

  • 代入法:我们猜测一个界,然后用数学归纳法证明这个界是正确的。
  • 递归树法:将递归式转换为一棵树,其结点表示不同层次的递归调用产生的代价。然后采用边界和技术来求解递归式。
  • 主方法

最大子数组问题

  1. 分析:

在这里插入图片描述
2. 伪代码:

FIND-MAX-CROSSING-SUBARRAY(A,low,mid,high)
// 求左边的最大子数组
left-sum = -无穷;
sum = 0;
for i = min downto low
	sum+=A[i];
	if sum > left-sum;
		left-sum = sum
		max-left = i;
		
//求右边的最大子数组
right-sum = -无穷
sum = 0
for j = min+1 to high
	sum += A[j];
	if sum > right-sum
		right-sum = sum
		max-right = j
		
return(max-left,max-right,left-sum+right-sum);
	

在这里插入图片描述
3.运行时间的T(n)的递归式:
在这里插入图片描述

矩阵乘法的Strassen算法

  1. 分析
    假设矩阵的规模N是2的幂,则可以把nn的矩阵划分为4个n/2n/2的子矩阵,然后再计算矩阵的乘法。
  2. 伪代码
    在这里插入图片描述
  3. Strassen方法
    不过多介绍,具体方法在书上p46页。
  4. 运行时间的T(n)的递归式
    普通分治算法:
    在这里插入图片描述
    在这里插入图片描述
    Strassen算法:
    在这里插入图片描述
    在这里插入图片描述

求解递归式的方法

一. 用代入式法求解递归式

步骤:1.猜测解的形式。2.用数学归纳法求出解中的常数,并证明解释正确的。

二.用递归树方法求解递归式
三.用主方法求解递归式

主方法求解递归式形式为 T(n) = aT(n/b) + f(n)
在这里插入图片描述
在这里插入图片描述

四.证明主定理

本节无需掌握,若需要了解见书p55。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值