算法分析与设计---迭代法求解递推方程

1.迭代法

  • 步骤

    • 不断将递推方程的右部替代左部
    • 直到出现初值
    • 将初值带入,进行化简
    • 用数学归纳法进行验证
  • 备注:迭代法也可以进行换元后进行如例三
  • 例子

    • 汉诺塔问题
      • T(n)=2T(n-1)+1
      • T(1)=1

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

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

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

        ......

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

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

        T(1)=1, 2^(n-2)+2^(n-3)+...+2+1等比数列

      • 数学归纳法验证:
        • 第一步:n=1:T(0)=0,T(1)=1
        • 第二步:假设n时,T(n)=2^n-1成立
        • 第三步:带入n+1
        • T(n+1)=2T(n)+1

          =(2^n-1)*2+1

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

          =2^(n+1)-1 

    • 插入排序
      • W(n)=W(n-1)+n-1
      • W(1)=0
      • W(n)=W(n-1) + n-1

        =[W(n-2) + n-2] + n-1

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

        ......
        = W(1) + 1 +2 + ...+(n-2) + (n-1)

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

        = m(n-1)/2

        1 +2 + ... +(n-2) +(n-1)等差数列化简即可

    • 二分排序
      • W(n)=2W(n/2)+n-1
      • W(1)=0
      • 换元为:
        • W(2^k) = 2W(2^(k-1)) + 2^k-1

        • W(0) = 0

        • W(n)= 2W(2^(k-1))+ 2^k -1

          = 2[2W (2^(k-2))+ 2^(k-1) -1]+ 2^k -1

          = 2^2W(2^(k-2))+2^k -2+2^k -1

          = 2^2[2W(2^(k-3))+ 2^(k-2) -1]+ 2^k -2+2^k-1

          ......
          = 2^kW(1)+ k2^k -(2^(k-1) + 2^(k-2) + ...+ 2+1)

          = k2^k -2^k +1
          =nlogn-n+1

          (2^(k-1) + 2^(k-2) + ...+ 2+1)等比数列

          nlogn-n+1换元换回来


版权声明:本文为buwangchuxinking原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。