zoukankan      html  css  js  c++  java
  • 一边学算法,一边学c语言之分治法(二)

        在学会了替换法之后,就可以看到它的局限性,因为它的使用需要经验积累,毕竟我们不能随便猜测一个解去证明,所以呢,还有主方法这种方法来解决一般的问题。

        主方法提供了解如下形式的递归方程的一般方法:

            

        其中为常数,算法将规模为n的问题划分成了a个子问题,每个所需要的时间为。函数表示划分子问题与组合子问题解的开销。例如,对于递归方程

        每个子问题n/b未必为整数,但用代替它字上的向上取整和向下取整并不影响递归方程的渐进行为。

        

        主方法依赖以下定理。这个定理也称为主定理

        定理:设为常数,为一个函数。由以下递归方程定义:

            

        其中n为非负整数,则有如下的渐进界限:

          (1)若对某些常数,有,那么

          (2)若,那么

          (3)若对某些常数,有,且对常数与所有足够大的n,有,那么

        例1:

          

         由递归方程可得,。因此,,选取,则

                  

          递归方程满足主定理的第一种情形,因此

                  

        例2:

          

        解 由递归方程可得,,且。因此,,则

                  

          递归方程满足主定理的第二种情形,因此

                  

        例3:

          

        解 由递归方程可得,,且。因此,。选取,则

                  

          递归方程满足主定理的第三种情形。还需要证明,选,则成立,因此选择c,满足,则

        

  • 相关阅读:
    EF多个上下文迁移
    Ruby知识点三:运算符
    Ruby知识点二:类
    不用搭环境的10分钟AngularJS指令简易入门01(含例子)
    JavaScript DOM编程艺术第二版学习(1/4)
    VisualStudio2013&VS2015内置SQLServer入门 (三)
    VisualStudio2015内置LocalDB
    VisualStudio2013内置SQLServer入门
    Java反射学习(java reflect)(三)
    Java反射学习(java reflect)(二)
  • 原文地址:https://www.cnblogs.com/fenqi/p/recursion2.html
Copyright © 2011-2022 走看看