【发布时间】:2012-09-12 07:21:03
【问题描述】:
我最近在解决河内塔问题。我使用“分而治之”的策略来解决这个问题。我将主要问题分成三个较小的子问题,从而产生了以下递归。
T(n)=2T(n-1)+1
解决这个问题会导致
O(2^n) [指数时间]
然后我尝试使用记忆技术来解决它,但是这里的空间复杂度也是指数级的,堆空间很快就会耗尽,对于更大的 n 问题仍然无法解决。
有没有办法在不到指数的时间内解决问题?解决问题的最佳时间是什么时候?
【问题讨论】:
-
您所说的“河内塔”问题是什么意思?您的意思是确定 k 次移动后的状态,还是确定进入状态 X 需要多少次移动?
-
@MikeT 使用辅助(额外)peg 将 n 个磁盘从 src peg 移动到目标 peg 需要多少次移动,前提是您一次只能移动单个磁盘并且不能更大在运动过程中,圆盘可以放在更小的圆盘上。
-
(2^n)-1,恒定时间解。好吧,就 2^n 而言,“恒定”是恒定的,我认为实际上是 O(log(n))
-
@MikeT 加上将其转换为通常的 base-10 表示法 (cs.stackexchange.com/questions/21736/…) 以进行输出所需的时间。除非您从一开始就在正确的基础上计算算术运算。
标签: algorithm complexity-theory