【问题标题】: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)。一般来说,这是完全可以理解的,但“#+”是什么意思?它是数学函数的一种符号形式还是什么?

【问题讨论】:

    标签: algorithm math language-agnostic big-o complexity-theory


    【解决方案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; }
      

      【讨论】:

        猜你喜欢
        • 2019-10-15
        • 2023-03-16
        • 1970-01-01
        • 2020-04-04
        • 2017-03-28
        • 2016-08-26
        • 2014-10-27
        • 2020-11-03
        • 1970-01-01
        相关资源
        最近更新 更多