社区
数据结构与算法
帖子详情
Show that the solution to T(n)=2T(n/2+17)+n is O(nlgn)//lgn是以2为底的
frog2006
2006-04-22 01:17:56
不知道如何去证明,大家帮我想想办法,我的分数也不多了,就给10分吧!
...全文
1680
8
打赏
收藏
Show that the solution to T(n)=2T(n/2+17)+n is O(nlgn)//lgn是以2为底的
不知道如何去证明,大家帮我想想办法,我的分数也不多了,就给10分吧!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CD2006
2006-04-24
打赏
举报
回复
呵呵,看到你的信息了,谢谢!我也回了短消息!
你的来信主要是集中在我不能丢弃17的问题上,显然,只要充分说明丢弃17,不影响最后结果就行了,如果不影响最后结果,带着它又有什么意义呢?反而使整个证明晦涩。
O表示复杂度,本身就是近似的,所以只要找到算法的最高阶项,就可以了,如果你觉得17不能丢弃的话,那我还想说,为什么证明中,n可以假设成2的整幂次呢?(不妨去看看一般的算法分析书)你要严格说明的话只能假设: 2^(m-1) < n <= 2^m,然后带着顶函数或底函数往下证明,这明显是不必要的。
如果你能说明你的近似不影响最终结果,那么就不失去数学的严格性。而且这种简化应当积极采纳,因为你的证明将更简洁,更容易被更多的人看懂。
也是因为编辑和版面的原因,不能写的更好,希望能原谅,书面表达肯定更好。
最后你觉得我的证明走了弯路,想恳请你再指点一二,谢谢!!
frog2006
2006-04-24
打赏
举报
回复
小英雄,我已经给你发过短消息了
CD2006
2006-04-24
打赏
举报
回复
呵呵,为何?敢请frog2006(青蛙)指点一下?
frog2006
2006-04-24
打赏
举报
回复
楼上的朋友,你的方法证明的不对!
CD2006
2006-04-24
打赏
举报
回复
清华的那本算法设计与分析的书上好像有这类递归方程的一般通解式
CD2006
2006-04-22
打赏
举报
回复
算了,本来想让你自己解出来的,但忍不住杀题欲望:
首先补一个边界条件:T(0)=h; h为常数;
为了求O表示的时间复杂度,常量级的17可以省去不考虑,直接设n=2^k
那么原方程转化为:T(2^k)=2*T(2^(k-1))+2^k;
令:g(k)=T(2^k),则方程进一步转化成:
g(k)=2(k-1)+2^k;
通过迭代可得:g(k)=2^m * g(k-m) + m * 2^k;
m = k时;
g(k)=2^k * g(0) + k * 2^k;
because : g(0)=h;
so: O(g(k))=O(2^k * h + k * 2^k)=O(k * 2^k)=O(nlogn)
证毕收工
jp1984
2006-04-22
打赏
举报
回复
发现大家写递归方程总不给初始条件.
CD2006
2006-04-22
打赏
举报
回复
通常都是使用展开递归式的方法来解这类方程
static 关键字静态导包
我们知道 Java 中的 static 关键字表示静态,可以用于修饰字段、方法、代码块、类(静态内部类)。但是除了这些作用外,还有一个就是静态导包。 静态导包是 jdk1.5 提供的一种新的机制,使用方式为 import static packageName.className.* 或 import static packageName.className.methodName,其中 * 表示导类...
java中static用法-静态导包
static用法一: 这大家应该都知道 1.修饰成员变量和方法 在类中,被static修饰的方法称作静态方法。同静态变量一样,静态方法可通过“类名.方法名”直接调用,而不需要创建对象调用。 2.静态代码块 随着类的加载而执行,而且只执行一次。执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。 执行顺序:静态代码块----->main方法----->非静态代码块-------->构造方法----->普通方法
static的特别用法:静态导包
平时使用导入类的时候是:import ....,静态导包格式为import static ... 静态导包为jdk1.5的新特性,之前的版本不支持 写java类的时候通常需要导入需要的包,例如“import java.util.ArrayList”。实际上也可以不导包而在使用的使用直接写上类的完整路径,如“java.util.ArrayList al = new java.util....
java静态导包
import static java.lang.invoke.MethodHandles.lookup;使用时,lookup().xxxx参考文章:https://blog.csdn.net/u012338954/article/details/510103371.静态导包就是java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性。一般我们导入一个类都...
java关于静态导包与正常导包的小东西
##静态导包与正常导包的区别 //(这里以DBUtil数据库连接工具导包为例)// import com.teach.commons.DBUtil;//正常导包,(类.调用方法) //import static com.teach.commons.DBUtil.getConnection; //这是代表getConnection这一个静态方法,这个class里面就不要用对象去调用了 (JDK1.8)后的新特性。 import static com.teach.commons.DBUtil.*;//静态导入
数据结构与算法
33,026
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章