【问题标题】:Difference between two complexity recurrence relations两种复杂递归关系的区别
【发布时间】:2015-07-24 07:19:22
【问题描述】:

以下是两个递归关系

  1. T(n)= T(n/2)+T(n/2) + C
  2. T(n)= T(n/2)*T(n/2) + C

两者的时间复杂度相同吗?我可以这样写两个递归关系吗?

  1. T(n) = 2T(n/2) + C

【问题讨论】:

  • 当然不是!!!为什么!???
  • 2T(n/2) 并不意味着函数 T 会被调用两次。

标签: algorithm recursion recurrence


【解决方案1】:

(1) 显然与 (3) 相同:T(n/2) + T(n/2) = 2 T(n/2)。这是初等数学。

(1) 和(2) 不一样,不难看出这些关系的解是完全不同的。 (1) = (3) 意味着对于两倍大的数据,复杂度度量大约是两倍大——线性复杂度。 (2) 意味着对于两倍大的数据,复杂度是平方的——指数复杂度。

【讨论】:

  • 非常感谢您的热情回复。如果我使用主定理来计算 T(n) = 2T(n/2) + 1 的复杂度,它会得到 Theeta(n) 或者我使用反向替换方法来解决它。你能帮我解决 T(n) = T(n/2)*T(n/2) + 1 吗?我认为复杂性不会是指数级的,但会是 O(n^2),如果我错了,请纠正我。谢谢!
猜你喜欢
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多