主定理

                                                                                      《目录》

使用主定理求解递归式

主定理是分治算法分析中非常重要的定理。

如,我们要处理一个 规模为 《主定理》 的问题通过分治,得到 《主定理》 个规模为 《主定理》 的问题,分解子问题和合并子问题的时间是 《主定理》

  《主定理》

在上面这个式子里,我们得要求 《主定理》 (如果 《主定理》 时,递推无意义),《主定理》 是渐进意义上的正数。

 

回顾一下,《主定理》 和 《主定理》 的含义:

  •   《主定理》 个子问题,即 《主定理》 是原问题分为子问题的个数;
  •   每个子问题的规模是 《主定理》
  •   分治算法共三部分,分治合,而 《主定理》 就是分+合的时间。

    《主定理》  和  《主定理》  ,向下取整和向上取整的细节,并不会影响主定理的推导,具体的数学证明,略。

如果对分治算法不熟悉,建议先看《递推式分析》。

 

而后呢,根据上面的式子我们会得到三种情况:

  • 若有实数大于零(《主定理》),《主定理》,则 《主定理》
  • 若 《主定理》,则 《主定理》
  • 若有实数大于零(《主定理》),《主定理》,且有一个实数小于一(《主定理》),使得较大的 《主定理》,满足 《主定理》,这时候则 《主定理》

这三种情况看起来很复杂,搞清楚他们之间的关系,快速记忆就简单了。

对于三种情况的每一种,我们将函数 《主定理》 与 《主定理》 比较,俩个函数较大者将决定递归式的解。

  • 若函数  《主定理》  更大,如情况1,则解是 《主定理》;注意 《主定理》 小于 《主定理》 是渐进意义上的,要差一个因子量级 《主定理》
  • 若函数 《主定理》 更大,如情况3,则解是 《主定理》;注意 《主定理》 大于 《主定理》 是渐进意义上的,要差一个因子量级 《主定理》,还要满足 《主定理》
  • 若俩个函数相等,如情况2,则乘上一个对数因子,解为 《主定理》
  • 上面的三种情况并未覆盖 《主定理》 的所有可能性,情况1、情况2 之间存在间隙,《主定理》 可能小于 《主定理》 但不是多项式意义上的小于;情况2、情况3 之间也存在间隙,《主定理》 可能大于 《主定理》 但不是多项式意义上的大于;若函数 《主定理》 在这俩个间隙中,或者是 情况3 中要求的 《主定理》 条件不成立,就不能使用主方法来解决递归式。

 

首先,得明白一个基准函数:《主定理》

有了基础函数之后,就可以根据 TA 来判定情形之间的关系。

那我们该如何记忆这个基准函数呢 ??

原来的函数是:《主定理》《主定理》 为底数,如果化为对数形式也是以 《主定理》 为底(《主定理》);

原函数是一个多项式,《主定理》 和 《主定理》 都是常数,算出来肯定也是一个具体的数值。

所以,我们要记这样一个基准多项式(基准函数):《主定理》,次方(即 《主定理》 )是取对数的。

接下来,是以上三种情况的判定:

  • 《主定理》 是弱于基准的(渐进意义上),《主定理》
  • 《主定理》 是等于基准的(渐进意义上),《主定理》
  • 《主定理》 是强于基准的(渐进意义上),《主定理》

 

? 算例 ?

        算例1:《主定理》  (乐高铺积木)

        分析,《主定理》,基准函数是 《主定理》,因为 《主定理》,所以基准函数是 《主定理》

        那 《主定理》 又是什么呢 ???

        《主定理》《主定理》 比基准函数 《主定理》 要弱,我们取一个实数(《主定理》) ,即 《主定理》

        得到 《主定理》.

 

        算例2:《主定理》    (二分查找)

        分析,《主定理》,基准函数是 《主定理》,因为 《主定理》,所以基准函数是 《主定理》

        那 《主定理》 又是什么呢 ???

        《主定理》,基准函数也是 《主定理》 ,《主定理》 = 基准函数,再乘上一个 《主定理》,即 《主定理》

 

         算例3:《主定理》  (归并排序)

         分析,《主定理》,基准函数是 《主定理》,因为 《主定理》,所以基准函数是 《主定理》

         那 《主定理》 又是什么呢 ???          

         《主定理》,基准函数也是 《主定理》《主定理》 = 基准函数,最后 《主定理》

 

         算例4:《主定理》  (Strassen 算法)

         分析,《主定理》,基准函数是 《主定理》,大概是 《主定理》

         那 《主定理》 又是什么呢 ???          

         《主定理》,基准函数是 《主定理》 在这基础上减去 0.1 即俩者相等 《主定理》,最后 《主定理》

 

         算例5:《主定理》  (摘自《算法导论》)

         分析,《主定理》,基准函数是 《主定理》,大概是 《主定理》

         那 《主定理》 又是什么呢 ???   

          《主定理》《主定理》 比 《主定理》 要强,《主定理》 (取 0.1 依然比 《主定理》 大), 《主定理》

          强的话,再看看是否满足 《主定理》 。

          把 《主定理》 代入:《主定理》

          得到 《主定理》, 《主定理》,满足条件,因此 《主定理》。  

        

 

证明主定理

          已经知道了基准(函数)怎么使用,可我们还不知道为什么会得到若干个渐进记号,我们会使用递归树来证明。

          假设 《主定理》,每一次除以 《主定理》,除 《主定理》 次会为 1。

          举个例子, 《主定理》

          我们想知道的是,《主定理》

          从上面的式子看出 :

  •        《主定理》 即基准函数;
  •        《主定理》 注重的是 基准函数 和 《主定理》 的强弱关系;
  •        《主定理》 是递归树的高度。

            在递归树上证明时,我们写的简单些,直接把结点 f(m) 调用开销画上去。

          

《主定理》

 

  •             第一层的代价是:《主定理》
  •             第二层的代价是:《主定理》
  •             第三层的代价是:《主定理》
  •              《主定理》             《主定理》             《主定理》            《主定理》
  •             负一层的代价是:《主定理》

            整个递归树高度是 《主定理》,总的代价是:《主定理》

 

            《主定理》 这些项会造成什么影响 ?

            对于 《主定理》 的影响,我们要分析三种情况:

            总个的表达式:《主定理》

  •             第一种情况:《主定理》《主定理》,我们求的就是这个项 :《主定理》

            思考一下,我们能不能这个式子化为等比数列 ?

            无关的项:《主定理》 提出来,里面是  《主定理》

            《主定理》《主定理》《主定理》

            《主定理》         

            得出,《主定理》

 

  •             第二种情况:《主定理》《主定理》,我们求的就是这个项 :《主定理》

            把 《主定理》 提出来,里面是  《主定理》

            《主定理》,消掉后 《主定理》 这个求和就是对一求和,那是多少个一呢 ?

            一共 《主定理》 个一,这个结果也等同于 《主定理》

 

  •             第三种情况:《主定理》《主定理》,我们求对就是这个项:

            这个证明会麻烦一些,因为多了一个条件:《主定理》

              《主定理》       

                                                       《主定理》

                                                        《主定理》               《主定理》              《主定理》

                                                        《主定理》     

              形成一个 《主定理》 的等比数列,而 《主定理》 在里头保持不变,可以挪出来。

              而这些等比数列最终加起来也不会超过 《主定理》,因此 《主定理》  乘的,也是一个常数项,总时间是 《主定理》

              

              

                                                           

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    原文作者:Debroon
    原文地址: https://blog.csdn.net/qq_41739364/article/details/101224786
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞