惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
G
Google Developers Blog
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
P
Proofpoint News Feed
V
Visual Studio Blog
爱范儿
爱范儿
The Cloudflare Blog
博客园 - 叶小钗
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
H
Help Net Security
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
量子位
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - Brendan

[转载]Manually configuring Microsoft Internet Information Services (IIS) IIS与TOMCAT协同工作---在IIS下运行JSP页面 AXIS部署错误解决方案集锦 使用System.Web.Mail发送Mail的错误解决方案 类的XML序列化(XML Serialization) [翻译]你可以赚钱,但你不能赚时间 Windows 2003 Server配置IIS服务器(ASP, ASP.NET)全功略 Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive 用MS SQL Server事件探查器来跟踪数据库的操作 反反编译工具——Deploy.NET C中获取当前时间的函数 Buffered I/O 与 Non-Buffered I/O性能差异的实例体验 主定理(Master Theorem) Dynamic Programming之Longest Increasing Subsequence (LIS)问题 ADO.NET数据库连接模块 ASP.NET控件事件丢失的探究 SQLDMO For C#(翻译) 关联(Association)设计中的扇形陷阱(Fan Traps)和断层陷阱(Chasm Traps) 简单并发控制
替换函数(Substitution Function)
Brendan · 2006-04-11 · via 博客园 - Brendan

        在对算法进行分析的时候,常常要计算该算法时间复杂度的近似表示(Asymptotic Notation)。然而在求取的过程中,常常遇到递归函数,使求解陷入困境。

        一般的,解决上述递归的方法有三种:替换函数(Substitution Function),迭代(Iteration)和主定理(Master Thorem)。这里介绍替换函数(Substitution Function)。

替换函数(Substitution Function)替换函数(Substitution Function)的步骤一般有三:
1. 猜测(Guess)解的形式
2. 用数学归纳法验证(Verify)
3. 用满意的常量来
解答(Solve)

首先猜测(Guess)一般我们基于下表这些常用的Efficiency Class

名称 注释
1 常数 很少使用,可以忽略输入
log n 对数
n 线性 查找整个输入列表
n log n n-log-n 很多分治法算法
n2 二次 内嵌两个循环的算法
2n 指数 生成某一个集合的所有子集

对于后两步的说明可以用一个例子来表现:
T(n) = 4T(n/2)  + n
- 猜测T(n)=O(n3)

- 假设对于任何k<n有T(k) <= ck3用数学归纳法证明T(n) <= cn3
   T(n) = 4T(n/2) + n <= 4c(n/2)3 + n = cn3/2 + n = cn3 - (cn3/2 - n) <= cn3 (如果c >= 2 且 n>=1)
   那么T(n)=O(n3)

注意:证明数学归纳法的步骤中,使用(你需要的结果) - (某个式子) > 0

求取比较紧的一个上界,试试T(n)=O(n2)。

注意使用减去小的项来加强数学归纳法的假设
- 假设对于任何k<n有T(k) <= c1k2 - c2k,
   T(n) = 4T(n/2) + n <= 4(c1(n/2)2 - c2(n/2)) + n = c1n2 - 2c2n + n = c1n2 - c2n - (c2n - n) <= c1n2 - c2n
   那么T(n) = O(n2)