【问题标题】:Easy: Solve T(n)=T(n-1)+n by Iteration Method简单:通过迭代法求解 T(n)=T(n-1)+n
【发布时间】:2012-11-20 09:57:55
【问题描述】:

有人可以帮我解决这个问题吗?

用迭代法求解。 T(n) = T(n-1) +n

非常感谢您解释步骤。

【问题讨论】:

  • 您是否需要使用特定的编程语言,或者您要求的是伪代码?
  • 伪代码..感谢您的即时回复! :D
  • 你熟悉递归吗?
  • @cruxi 不,我不是。不完全。

标签: algorithm iteration


【解决方案1】:
T(n) = T(n-1) + n

T(n-1) = T(n-2) + n-1

T(n-2) = T(n-3) + n-2

以此类推,您可以将 T(n-1) 和 T(n-2) 的值代入 T(n) 以大致了解该模式。

T(n) = T(n-2) + n-1 + n

T(n) = T(n-3) + n-2 + n-1 + n
.
.
.

T(n) = T(n-k) + kn - k(k-1)/2    ...(1)

对于基本情况:

n - k = 1 so we can get T(1)

=> k = n - 1
代入(1)

  T(n) = T(1) + (n-1)n - (n-1)(n-2)/2

你可以看到的顺序是 n2 => O(n2)。

【讨论】:

    【解决方案2】:

    展开!

    T(n) = T(n-1) + n = T(n-2) + (n-1) + n = T(n-3) + (n-2) + (n-1) + n
    

    以此类推,直到

    T(n) = 1 + 2 + ... + n = n(n+1)/2   [= O(n^2)]
    

    前提是T(1) = 1

    【讨论】:

    • 你确定这是 O(n²) 吗?
    • @ralu 更准确地说,它是 Theta(n²),因为 n² 从上方和下方限定了它。
    【解决方案3】:

    在伪代码中使用迭代:

    function T(n) {
        int result = 0;
    
        for (i in 1 ... n) {
           result = result + i;
        }
    
        return result;
    }    
    

    【讨论】:

    • 我想谢谢你,但它说我需要 15 个代表。谢谢你:D
    【解决方案4】:

    另一种解决方案:

    T(n) = T(n-1) + n
         = T(n-2) + n-1 + n
         = T(n-3) + n-2 + n-1 + n
         // we can now generalize to k
         = T(n-k) + n-k+1 + n-k+2 + ... + n-1 + n
         // since n-k = 1 so T(1) = 1
         = 1 + 2 + ... + n    //Here 
         = n(n-1)/2
         = n^2/2 - n/2
         // we take the dominating term which is n^2*1/2 therefor 1/2 = big O
         = big O(n^2)
    

    【讨论】:

      【解决方案5】:

      简单方法:

      T (n) = T (n - 1) + (n )-----------(1)
       //now submit T(n-1)=t(n)
      
      T(n-1)=T((n-1)-1)+((n-1))
      T(n-1)=T(n-2)+n-1---------------(2)
      
      now submit (2) in (1) you will get
      i.e T(n)=[T(n-2)+n-1]+(n)
      T(n)=T(n-2)+2n-1 //simplified--------------(3)
      
       now, T(n-2)=t(n)
      T(n-2)=T((n-2)-2)+[2(n-2)-1]
        T(n-2)=T(n-4)+2n-5---------------(4)
        now submit (4) in (2) you will get
         i.e T(n)=[T(n-4)+2n-5]+(2n-1)
        T(n)=T(n-4)+4n-6 //simplified
          ............
       T(n)=T(n-k)+kn-6
        **Based on General form T(n)=T(n-k)+k, **
        now, assume n-k=1 we know T(1)=1
                  k=n-1
      
          T(n)=T(n-(n-1))+(n-1)n-6
          T(n)=T(1)+n^2-n-10
         According to the complexity 6 is constant
      
               So , Finally O(n^2)
      

      【讨论】:

      • 请不要复活陈旧的低质量问题。
      • 我得到了一个简单的步骤来得到答案..我知道它太久了,但它不会复活@YSC
      • 你真的杀了它:/“我们知道 T(1) = 0”?为了有 k=n-1 你需要有 T(1) = 1 因此 n-k=1 => k = n-1
      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 2013-01-10
      • 2017-10-03
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 2017-12-22
      相关资源
      最近更新 更多