社区
数据结构与算法
帖子详情
用生成函数法求f(n)=2f(n/2)+n
liuting005
2008-04-01 11:31:44
用生成函数法求f(n)=2f(n/2)+n 的时间复杂度
...全文
1499
20
打赏
收藏
用生成函数法求f(n)=2f(n/2)+n
用生成函数法求f(n)=2f(n/2)+n 的时间复杂度
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VictorGun
2012-04-25
打赏
举报
回复
生成函数法在组合数学上应该是母函数法,
对序列(a0, a1, ..),定义函数:g(z)=a0+a1z+a2z2+..+anzn+..称为序列(a0, a1, ..)的生成函数。
利用递推公式建立关于生成函数的定解方程
解定解方程得到生成函数的级数形式,其系数即为序列的解。
FancyMouse
2010-12-17
打赏
举报
回复
生成函数和lz说的递归式一点关系都没。
lfc0416
2010-12-16
打赏
举报
回复
是使用幂级数展开式,然后应用微积分技术和数学变换求出有限解析表达式,再用微积分重新展开来求的通项。对递归很有用
lfc0416
2010-12-16
打赏
举报
回复
13楼应该对了
lfc0416
2010-12-16
打赏
举报
回复
你们都不对
arong1234
2008-04-02
打赏
举报
回复
可惜没时间学,否则倒是很感兴趣
[Quote=引用 13 楼 medie2005 的回复:]
主要思路是:
用生成函数变换,求得f(n)的生成函数F(Z)(可能要求指数型生成函数),利用拉格郎日求逆或者泰勒展开,求得F(Z)展开式中第n项的表达式,也可以是渐进表达式(只需要求时间复杂度).这样,得到的第n项的表达式,或渐进表达式就是要求的时间复杂度.
[/Quote]
tailzhou
2008-04-02
打赏
举报
回复
master method应该是使用生成函数对递归方程T(n)=aT(n/b)+ f(n) 的求解得到的结论;
medie2005
2008-04-02
打赏
举报
回复
主要思路是:
用生成函数变换,求得f(n)的生成函数F(Z)(可能要求指数型生成函数),利用拉格郎日求逆或者泰勒展开,求得F(Z)展开式中第n项的表达式,也可以是渐进表达式(只需要求时间复杂度).这样,得到的第n项的表达式,或渐进表达式就是要求的时间复杂度.
medie2005
2008-04-02
打赏
举报
回复
生成函数并不是master method(主方法).
生成函数不仅在处理递归上有用,在组合计数方面,公式推导方面也大有用处.
我看算法分析导论的时候学过一点,不过现在不怎么会了.
tailzhou
2008-04-02
打赏
举报
回复
生成函数法应该就是算法导论上所说的master method:
copy其中一段,但很多特殊符号粘贴不过来,有点乱:
The master method depends on the following theorem.
Theorem 4.1
Let a >= 1 and b > 1 be constants, let â(n) be a function, and let T(n) be defined on the nonnegative integers by the recurrence
T(n) = aT(n/b) + â(n),
where we interpret n/b to mean either n/b or n/b. Then T(n) can be bounded asymptotically as follows.
1. If â(n) = O(n^logb(a-e)) for some constant e> 0, then T(n) = (n^logb(a)).
2. If â(n) = (n^logb(a)), then T(n) = (n^(logb(a))lg n).
3. If â(n) = (n^logb(a+e)) for some constant e > 0, and if aâ(n/b) <= câ(n) for some constant c < 1 and all sufficiently large n, then T(n) = (â(n)).
对于lz的例子,a=2,b=2 ,â(n)==o(n)==o(n^logb(a)),适用第2条;
arong1234
2008-04-01
打赏
举报
回复
所谓的生成函数法不知道,时间复杂度也不知道。
总之通项公式我给你推出来了
arong1234
2008-04-01
打赏
举报
回复
今令f(1)=c
f(2)=2c+2
f(4)=2(2c+2)+4 = 4c+8
f(8) = 2(4c+8)+8 = 8c+24
f(16) = 2(8c+24)+16 = 16c+64
f(2^k) = c*2^k + P(k)
考虑P(k),
P(0) = 0
P(1) = 2 *P(0) + 2
P(2) = 2*P(1)+4
...
p(n-2) = 2*P(n-3)+2^(n-2)
p(n-1) = 2*P(n-2)+2^(n-1)
P(n) = 2* P(n-1) + 2^n = 2*2*P(n-2)+2*2^(n-1)+2^n = 4P(n-2)+2*2^n
= 4*2P(n-3)+4*2^(n-2)+2*2^n
归纳得到P(n) = 2^kP(n-k)+k*2^n = 2^nP(n-n)+n*2^n =n*2^n
很显然,P(n-1) = (n-1)2^(n-1)
2*P(n-1)+2^n = 2*(n-1)*2^(n-1) + 2^n=P(n) 得到验证
带回f(2^k)得到f(2^k) = c*2^k+k*2^k,对于任意常数c成立
其中^表示幂
rover___
2008-04-01
打赏
举报
回复
用生成函数法可用来求解递推关系。所求f(n)=2f(n/2)+n 是个非线性递推关系。
UP一下,不知道怎么解。
arong1234
2008-04-01
打赏
举报
回复
自动进行公式推导?这个蛮高深的,我觉得楼主应该到图书馆去找书学习,涉及比较高深理论的难以找到人问的。即使人家愿意教你,也不是三句两句能解释清楚的,谁有那么多时间解释复杂的东西啊
liuting005
2008-04-01
打赏
举报
回复
【引用 5 楼 medie2005 的回复:
生成函数,CSDN上会的人也是没几个的.】
那我应该问谁呢?感觉你们好像什么都会。
medie2005
2008-04-01
打赏
举报
回复
生成函数,CSDN上会的人也是没几个的.
liuting005
2008-04-01
打赏
举报
回复
例:A(x)=a0 +a1*x+a2*x^2+…..+an*x^n +…..
汉诺塔:an=an-1 +1
a1 =1
A(x) =∑ai*x^i
-2xa(x)=-2a1*x^2-2a2*x^3-…-2an*x^(n+1)…..
A(x)-2xA(x)= a1*x+(a2-a1)*x^2 +…+(an-2an-1)*x^n +…
= a1*x+ x^2+x^n +…
= a1 x+∑x^i (i从2开始到n)
=x/(1-x)
最后求出an 通项的表达式,再往后就不太会了
liuting005
2008-04-01
打赏
举报
回复
这好像是用递推方法做出来的
rushman
2008-04-01
打赏
举报
回复
关键词:递归,log2 n
大王派我去巡山
2008-04-01
打赏
举报
回复
生成函数法是什么方法?
f(n)=2*f(n/2)+n
=2*[2*f(n/4)+n/2]+n=4*f(n/4)+2*n
=4*[2*f(n/8)+n/4]+2*n=8*f(n/8)+3*n
=16*f(n/16)+4*n
=……
=(2^lgn)*f(n/(2^lgn))+n*lgn
=n*f(1)+n*lgn
所以时间复杂度为O(n*lgn)
用
生成
函数
求解下列递归方程f(n)=
2f
(n/2)+cn n>1 f(1)=0 n=1
递归方程 换元 求解 以上主要是九哥搞出来的东西,作为他的小迷弟当然要帮助传播啦,有问题联系他哦:QQ 1342409485
算法设计与分析-习题-用
生成
函数
求解递归方程f(n)=
2f
(n/2)+cn,f(1)=0
用
生成
函数
求解递归方程f(n)=
2f
(n/2)+cn,f(1)=0。
【C# 练习】用
函数
递归计算 f(n)=f(n-1)+f(n-2) f(0)=2 f(1)=3
题目:f(n)=f(n-1)+f(n-2) f(0)=2; f(1)=3 ,求f(40) 这个题需要用到
函数
递归来计算, 我们已知f(0)和f(1), 那么通过计算,f(2)就是f(0)+f(1)= 2 + 3 = 5; 创造
函数
F,传入值是 int n,返回值是int; static int F(int n) { } 在
函数
中直接返回公式: return F(n - 1) + F(n - 2);//
函数
递归调用 这个时候需要有一个终止递归的条件,把f(0)和f(...
若干递推数列的通项公式求解方法
一.等差与等比数列. 等差数列:以下数列被称为等差数列: fn=a+fn−1 f_n=a+f_{n-1} fn=a+fn−1 这个数列的通项公式为: fn=f0+na f_{n}=f_{0}+na fn=f0+na 设sn=∑i=0nfis_{n}=\sum_{i=0}^{n}f_{i}sn=∑i=0nfi,则有: sn=(n+1)f0+an(n+1)2 s_{n}=(n+1)f_{...
生成
函数
简单入门
生成
函数
可表示为F(x)=∑nankn(x)F(x) = \sum\limits_{n} a_n k_n(x)F(x)=n∑ankn(x),对于不同类型的
生成
函数
,有不同的核
函数
kn(x)k_n(x)kn(x)。 普通
生成
函数
:kn(x)=xnk_n(x) = x ^ nkn(x)=xn。 指数
生成
函数
:kn(x)=xnn!k_n(x) = \frac{x ^ n}{n !}kn(x)=n!xn。 迪利克雷
生成
函数
:kn(x)=1nxk_n(x) = \frac{1}{n ^ x}kn(x
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章