在算法复杂的情况下,“#+(n) =”是啥意思?
Posted
技术标签:
【中文标题】在算法复杂的情况下,“#+(n) =”是啥意思?【英文标题】:What does "#+(n) = " means in case of algorithms complexity?在算法复杂的情况下,“#+(n) =”是什么意思? 【发布时间】:2021-12-11 17:19:51 【问题描述】:我正在阅读 Alexander A. Stepanov 和 Daniel E. Rose 的《从数学到通用编程》一书,第二章包含对埃及乘法算法的描述。它的复杂性描述为#+(n) = [log n] + (ν(n) - 1)
。一般来说,这是完全可以理解的,但“#+”是什么意思?它是数学函数的一种符号形式还是什么?
【问题讨论】:
【参考方案1】:'#' 常表示“个数”,'+' 号用作索引。所以我们有“加法数”。
【讨论】:
【参考方案2】:在给出方程式之前的那本书中,作者说,
multiply1 要做多少次加法? 每次调用该函数时,我们都需要在 a+a 中执行 + 指示的加法。 由于我们在递归时将值减半,因此我们将调用 函数logn 次。有时,我们需要做 结果+a中的+表示另一个加法。所以加法的总数将是
#+(n) = ⌊log n⌋ + (ν(n) − 1)
int multiply1(int n, int a)
if (n == 1) return a;
int result = multiply1(half(n), a + a);
if (odd(n)) result = result + a;
return result;
bool odd(int n) return n & 0x1;
int half(int n) return n >> 1;
【讨论】:
以上是关于在算法复杂的情况下,“#+(n) =”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章