前言
在运用分治法将原问题分解成多个子问题后,通常可以得到一个关于时间复杂度的递归式,如T(n)=T(n/2)+O(1),如何求解递归式并得出该算法的时间复杂度O(f(n))就是我们要解决的问题。一般来说,有三种方法可以供我们选择,代入法、递归树法和公式法(即《算法导论》中所描述的主方法)。下面先从代入法开始讲起。
代入法
一、基本步骤
- 猜测解的形式,
- 运用第二类数学归纳法,证明存在常数c使得
二、数学归纳法
定义
数学归纳法是代入法的核心,此处使用的是其第二种形式,其具体过程如下:
- 当
时,命题成立;
- 假设当
时,命题成立,由此可推得当
时,命题也成立。
我们用一个例子来说明用数学归纳法证明递归式的解的过程。
例:求递归式 的渐进上界。
解:第一步猜测的时候需要一些经验,观察递归式和已知确界的式子是否相似,选取相应的解的形式。这里我们猜测 ,然后用数学归纳法证明其正确性。
假设存在,使得对

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

被折叠的 条评论
为什么被折叠?



