在算法复杂的情况下,“#+(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) =”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

O(n)是啥

快排算法是啥意思?

时间为O(nlg n)的排序算法 如快速排序 堆排序 nlg是啥意思。好象是lgn。 啥意思?

如何计算算法复杂度

用啥软件来计算算法的复杂度??

人工智能算法效率怎么算