社区
数据结构与算法
帖子详情
递归
jp1984
2005-04-14 10:01:28
在利用最佳原理中求TSP问题中的比较次数中得到结果
T(n) = (n - 1)T(n - 1) + n - 1
请问该递归关系如何求解?
...全文
170
8
打赏
收藏
递归
在利用最佳原理中求TSP问题中的比较次数中得到结果 T(n) = (n - 1)T(n - 1) + n - 1 请问该递归关系如何求解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jp1984
2005-04-20
打赏
举报
回复
To : dengsf
谢谢回复。
不错的,我和您得到相同的结果
S(n) = (n-1) + (n-1)(n-2) + ... + (n-1)(n-2)..2*1
但是对S(n)无法取得简单形式。主要对TSP组合分析算法复杂度可取得精确的比较次数,含2^n 。我想这个递归解得的肯定是含 n! 项的表达式。然后用Stirling公式近似可取得和前面同阶的复杂度。
求解到这里 其实也差不多了,总归还是个求复杂度的问题 。
jp1984
2005-04-18
打赏
举报
回复
谁帮下忙。
dengsf
2005-04-18
打赏
举报
回复
更正一点,
因 S(n) = HAHA(n-2)*(n-1)!
严格来说, S(n) = SITA[(n-1)!] = o(n!)
个人觉得应该没有没有较简单的通式——觉得而已~
实际的 S(n) = (n-1) + (n-1)(n-2) + ... + (n-1)(n-2)..2.1
它如果有简单形式的话,看上去似乎会是 f(n)^g(n) 的形式,但要符合
lim(n->无穷)(f(n)^g(n))/(n-1)! = e = lim(n->无穷)HAHA(n) = lim(n->无穷)(1+1/n)^n
不知从这里会否有所进展。
PS:楼主为什么一定要求精确值?
& 楼主说话很客气~
dengsf
2005-04-15
打赏
举报
回复
有点遗漏
S(n) = HAHA(n-2) + C
C为常数 = S(1) = T(1)
但对最后的 SITA(n!) 没影响。
dengsf
2005-04-15
打赏
举报
回复
两边除以 (n-2)! 得:
T(n)/(n-1)! = T(n-1)/(n-2)! + 1/(n-2)!
令: S(n) = T(n)/(n-1)!
得:S(n) = S(n-1) + 1/(n-2)!
记 HAHA(n) = sum[0 to n](1/n!)
很明显 S(n) = HAHA(n-2)
而 1 <= HAHA(n) <= 1 + 1 + 1/2 + 1/4 + ... = 3 ( n >= 0 )
所以 T(n) = (n-1)! * HAHA(n-2) = SITA(n!)
mmmcd
2005-04-15
打赏
举报
回复
如果要求通式,就要解非齐次差分方程
gumbour
2005-04-15
打赏
举报
回复
边界
T(0) = ?
假设 T(0) = T0
int Fun(int n)
{
if (n == 0)
return T0
else
return (n-1)*Fun(n-1)+n-1
}
jp1984
2005-04-15
打赏
举报
回复
to dengsf:
不管怎样,谢谢您的回复。
其实题目已经给出了T(1),一个顶点时的TSP问题显然T(1) = 0
您的结论是正确了, 参照您上面的结论,C = 0.
得到T(n) ~ sita(n!).
我要问的不是渐进情况下的复杂度问题 。我说的是准确的比较次数,换句话说,就是通式。您的思路很好,但是对于HAHA(n - 2)仍然无法取得通式。
我曾考虑用n去乘等式的两边,用H(n)=nT(n)做替换,也可以取得您的结论,但是依旧求不出通式。
读懂C++
递归
程序
递归
在计算学科中是一种非常重要的方法,计算理论中到处都有用
递归
进行表述的问题及求解方法。 在程序设计中,数据描述和算法表达也常用
递归
,通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,
递归
策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 掌握
递归
,计算机类专业的学生必须要做到。 本文基于一个C++
递归
程序,分步骤进行演示,帮助你知道其执行过程,试图帮助你啃下这块硬骨头。
什么是
递归
函数?
递归
函数
递归
例题 特点 效率 优点
递归
函数
递归
递归
就是一个函数在它的函数体内调用它自身。执行
递归
函数将反复调用其自身,每调用一次就进入新的一层。
递归
函数必须有结束条件。 当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。 所以
递归
要有两个要素,结束条件与递推关系 注:
递归
的时候,每次调用一个函数,计算机都会为这个函数分配新的空间,这就是说,当...
Java实现简单的
递归
操作
在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做“
递归
”,这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意的。虽然对于很多
递归
算法都可以由相应的循环迭代来代替,但是对于一些比较抽象复杂的算法不用
递归
很难理解与实现。
递归
分为直接
递归
和间接
递归
,就简单分享一下两个小的直接
递归
。 对于
递归
的概念,其实你可以简单的理解为自己定义自己,记得小时候看过一部电视剧《狼毒花》,...
什么是
递归
,通过这篇文章,让你彻底搞懂
递归
想了解更多数据结构以及算法题,可以关注微信公众号“数据结构和算法”,每天一题为你精彩解答。也可以扫描下面的二维码关注 啥叫
递归
聊
递归
之前先看一下什么叫
递归
。
递归
,就是在运行的过程中调用自己。 构成
递归
需具备的条件: 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非
递归
状况处理。
递归
语言例子 我们用2个故事来阐述一下什么叫
递归
。 1,从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正
【C语言】函数
递归
的简单理解 &画图理解
递归
过程_[初阶篇 _学习专用]
递归
(recursion):程序调用自身的一种编程技巧。😀如何理解函数
递归
:1.从调用自身层面:函数
递归
就是函数自己调用自己。2.从编程技巧层面:一种方法(把一个大型复杂的程序转换为一个类似的小型简单的程序),这种方法的主要思想就是把大事化小。
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章