【问题标题】:How is the recurrence relation of Karatsuba algorithm M(n) = 3M(n/2) for n > 1, M(1) = 1?对于 n > 1,M(1) = 1,Karatsuba 算法 M(n) = 3M(n/2) 的递归关系如何?
【发布时间】:2016-03-22 12:48:03
【问题描述】:

该算法对 n/2 个实例中的每一个实例进行 3 次乘法运算。因此,对于 n > 1, M(1) = 1,递归关系不应该是 M(n) = M(n/2)+3 吗?

【问题讨论】:

  • 每个 n/2 个实例的 3 次乘法。 -> 例如,您购买的每瓶啤酒 3 美元
  • “3 次乘法”表示“进行 3 次乘法”表示“支付 3 次乘法的成本”。如果您查看代码,您会看到实例上有 3 个函数调用,每个实例的大小都是输入的一半。如果自然语言语义变得混乱,最好的办法是查看形式化。
  • 谢谢大家。这有帮助!

标签: algorithm integer multiplication


【解决方案1】:

关键是准确了解分而治之的发生方式。在the case of the Karatsuba Algorithm:

Karatsuba 算法的基本步骤是一个公式,它允许使用三个较小数字的乘法来计算两个大数 x 和 y 的乘积,每个小数的位数大约是 x 或 y 的一半,加上一些加法和数字轮班。

所以,这就是说,要解决一个大问题,你递归地解决三个小半基本相同的问题(然后执行一些重组步骤)。您在标题中提出的复杂性递归公式正是这个公式。

【讨论】:

  • 更准确地说,应该是 M(n) = 3M(n/2) + 2 + cn 其中 2 占 (z2*10^(2*m2))+((z1-z2 -z0)*10^(m2))+(z0) (en.wikipedia.org/wiki/Karatsuba_algorithm) 和cn是加减法吗?
  • 类似的东西。 2 几乎没有意义(如果你考虑这样的事情,你需要考虑更新程序指令计数器)。它是 M(n) = 3M(n/2) + Theta(n),其中最后一项由加法/减法运算来解释。
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 2018-10-21
  • 2010-12-02
  • 2023-03-08
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
相关资源
最近更新 更多