如何计算以下方程的Big O表示法?

时间:2015-04-15 01:43:40

标签: algorithm big-o

  1. 这是一个递归公式:
  2. E(r,n)=(E(r-1,n-1)-E(r,n-1))^ 2 + E(r,n-1)r< = n

    请说明获取Big O的过程。

    1. 从i = 0到r的总和,(r-i)(n选择i)(p ^(n-i)*(1-p)^ i)
    2. 我认为计算此等式的大O等于计算大O:

      从i = 0到r的总和,(n选择i)

      这是对的吗?

      请说明获取Big O的过程。

1 个答案:

答案 0 :(得分:1)

确定我正确地理解了问题,并且您希望执行以下每项操作的程序的时间复杂性:

  1. 该递归的基本情况是什么?假设E(0,0)是基本情况,E(r,0)是线性递归,直到E(0,0)并且r> 1。 ñ。想象一下,我们形成一个递归树。我们会得到每个级别的调用函数,前一级的n减去1,因为函数总是用n-1调用自身。现在分析树并将其分离,我们得到:

    • 三次递归,直到n = 0;
    • 在n = 0之后,我们得到线性递归的分支(a依赖于n和r)
  2. 对三重递归进行分析,我们可以通过各种方法(生成函数,主函数等)找到它的复杂性,但让我们使用更简单的方法。让我们假设每个节点使用一个时间单位。我们知道每个级别的级别节点是之前级别的3倍,第一级别有一个节点,树有n级,总时间是所有节点的总和。所以我们得到了 TotalTripleTime = 3 ^ k的Summ(0,n) 这可以通过几何级数的闭合公式给出: (1-3 ^ n + 1)/ - 2是O(3 ^ n)

    由于复杂的递归,计算量有点难以理解,而且我没有太多时间,也许我稍后会尝试。

    1. 假设r小于n,我们只需要O(r * O(组合))假设使用闭合公式计算简单组合是O(n),我们得到O(n * r)