【问题标题】:Solving Recurrence relation by master method and its analysis主方法求解递归关系及其分析
【发布时间】:2014-09-30 16:04:56
【问题描述】:

递归关系T(n)=aT(n/b)+f(n)中的f(n)是什么意思, 对于某些 e>0,f(n)=0(n^log(base b) a - e) 的含义是什么? 所以只是想知道这个日志(base b)a背后的原因。 我尝试了递归树但感到困惑,所以请帮助我。

【问题讨论】:

  • 如果你想用递归树来理解这个,给abf(n)一些值。例如a=2b=2f(n)=n。但是如果你想知道主方法为什么以及如何工作,那么你应该阅读它的证明。

标签: algorithm


【解决方案1】:

f(n) 表示有一个变量 n 的函数 f,表示某个算法的输入大小。 T(n) 给出给定输入大小 n 的算法运行时间。 f(n) 给出了该运行时的非递归部分。

如果 f(n) = O(n^[log_b a-e]),那么方括号中的所有内容都是一些常数;对于某个常数 k,这等效于 f(n) = O(n^k)。为什么他们选择那个常数是一个要问他们的问题,但我怀疑选择它是因为在使用主方法时必须进行比较,这可能是一个指导值:通过使用这个值执行主方法,你可能会学到一些关于主方法及其应用的知识。

【讨论】:

  • 谢谢先生,但有一些困惑,即采用该非递归组件的原因是什么以及它是如何计算的,比如在二叉搜索树的情况下,f(n) 是什么。我得到了答案是 theta(1),但只是混淆了我们将数字与中间元素进行比较,所以当我们从每个子问题中拥有超过 1 个中间元素时,将其视为常数时间的原因是什么,将与要搜索的数字进行比较。
  • @radhika 对于二分查找来说是 O(1),因为对于算法的每次调用,非递归工作量是恒定的。诚然,在每个递归调用中,您一遍又一遍地做同样数量的工作,但 Master Method 已经考虑到了这一点。将 f(n) 视为“胶水”;递归算法将问题分解为子问题,使用相同的方法解决这些问题,然后将各个部分“粘合”在一起以形成整体解决方案。 f(n) 表示“胶水”在给定输入大小上运行所需的时间。总运行时间是子问题上总运行时间的总和,
  • 在本地阶段加上“胶水”。
  • 那么根据我们解决的递归树,我们总是认为在最后阶段值减少到 order(1),当我们添加时,值怎么会变成 order(1)把所有的子问题计算起来,然后对于每个问题我们应该有 order(1),为什么我们得到它的 order(n^2) 或 order(n)
  • @radhika 如果您还有其他问题,能否将它们连同示例一起添加到您的问题中?很难理解 cmets 中的问题。感谢您的理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多