分治算法中的数学——求解递归式(代入法)

本文介绍了在分治算法中如何使用代入法求解递归式以确定时间复杂度。内容包括代入法的基本步骤、数学归纳法的定义和实用技巧,以及通过实例详细讲解如何运用数学归纳法证明递归式的解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

       在运用分治法将原问题分解成多个子问题后,通常可以得到一个关于时间复杂度的递归式,如T(n)=T(n/2)+O(1),如何求解递归式并得出该算法的时间复杂度O(f(n))就是我们要解决的问题。一般来说,有三种方法可以供我们选择,代入法、递归树法和公式法(即《算法导论》中所描述的主方法)。下面先从代入法开始讲起。


代入法

一、基本步骤

  1. 猜测解的形式,T(n)=O(f(n))
  2. 运用第二类数学归纳法,证明存在常数c使得 T(n))\leq cf(n)

二、数学归纳法

定义

数学归纳法是代入法的核心,此处使用的是其第二种形式,其具体过程如下:

  1. 当 n=1 时,命题成立;
  2. 假设当 n\leq k(k\in N) 时,命题成立,由此可推得当 n=k+1 时,命题也成立。

我们用一个例子来说明用数学归纳法证明递归式的解的过程。


例:求递归式 T(n)=2T(n/2)+n 的渐进上界。

解:第一步猜测的时候需要一些经验,观察递归式和已知确界的式子是否相似,选取相应的解的形式。这里我们猜测 T(n)=O(nlgn),然后用数学归纳法证明其正确性。

假设存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值