我只是想知道电力运营及其时间效率。由于电力运行是有效的:
x^n = x*x*x...[n times]
这是否意味着计算x ^ n需要大约O(n)时间(假设乘法是O(1),我不确定它是多少)?或者现代编程语言/硬件架构是否具有将其减少到O(1)或类似的优化?如果存在优化,请解释(或发布解释链接)。
答案 0 :(得分:4)
基于successive squaring的优化允许您以对数乘法计算功率。例如,不是将b 8 计算为b * b * b * b * b * b * b * b,而是可以计算
b 2 = b * b
b 4 = b 2 * b 2
b 8 = b 4 * b 4
有关更多详细信息,请参阅SICP 1.2.4 Exponentiation。我的博客上还有一篇文章,显示了Scheme中的fast exponentiation实现。