美文网首页
算法基础+分治策略(算法复习第1弹)

算法基础+分治策略(算法复习第1弹)

作者: Moonsmile | 来源:发表于2016-12-28 21:25 被阅读0次

马上就要算法考试了,好紧张,先复习第一波....

参考文献(算法导论)+(张莉老师ppt)


函数的增长,对算法效率的描述

渐进记号:Θ、Ω、O、o、w(那个很像w的符号,不记得咋打出来了)

Θ标记(最常用):存在正常量c1和c2,使得当n 足够大的时候,能够让函数 f(n) 夹入c1g(n)和c2g(n)之间

如图:

f(n)=Θ(g(n)) 图一


称g(n)是f(n)的一个渐进紧确界,也就是f(n)得在c1g(n)和c2g(n)之间,不得越界


举个例子证明(考点):

证明这个式子
图二

Ω标记:渐进下界

如图,和图一相比,它没有上界要求,图一上下均不能越界,它只有下界要求,所以叫做渐近下界

图三

O:渐近上界

和Ω标记类似,上边不越界,下边不做要求

图四

o标记:非渐进紧确的上界,图一Θ是渐进紧确的,而O可以是Θ

也可以不是,而o有点像集合中真包含的概念,它不是Θ的O

w(那个很像w的符号,不记得咋打出来了)标记符:和o相反,非渐进紧确的下界


通过上边几个图的理解,下边表里边的式子就很好理解了

左边是满足的表达式,右边是两者的相对增长速度

图五

这也是比较两个函数之间增长速度的方法(n足够大的时候,求函数之比的极限,根据结果判断)

图六

分治策略

概念:将原问题分解成子问题,子问题与原问题一样,至少规模更小,直到规模足够小,递归停止,问题得以解决

包括的例子有,归并排序、实验中的gray码问题

分治算法的分析:

分治法解题的一般步骤

(1)分解,将要解决的问题划分成若干规模较小的同类问题;

(2)求解,当子问题划分得足够小时,用较简单的方法解决;

(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。

三个求解分治法Θ或Ω的方法

1、代入法

即假设一个界,然后数学归纳法证明

这种方法需要经验的积累,可以通过转换为先前见过的类似递归式来求解。

2、递归树法

在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。将递归树中每一层内的代价相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。

如归并排序,忘了归并排序的可以参照这里  归并排序

这是其递归式

图七

这是递归树的式子(主方法常用这个式子)

图八

递归树式子需要解释的地方有


cn其实就是一个函数f(n),这个函数所代表的意思是分解和合并步骤所花费的时间,哈哈

其(f(n))复杂度为Θ(n),由此再去理解图七中的式子就好理解了

下面来用递归树的方法求分治算法的渐进界:

下边这是ppt上的例子,怎么理解这个递归树例子呢,最顶层是cn,从它开始递归,首先你可以把n理解为2的某次幂,比如,n是2的4次幂,所以整个递归树就有(logn)也就是4层,每一层的代价刚好都是cn,可求出其T(n),第5层也就是常量的,为Θ(n),也可以回去图八和图七解释,哈哈

图九

这个例子也一样,只不过不是递归成一样的问题,是两个一样的子问题

图十


3、主方法法

它可以瞬间估计一个递推式的算法复杂度。但是我们知道,这后面肯定是严格的数学证明在支撑着,对于我们用户来说,我们只用知道怎么用就行了。

T(n) = aT(n/b) + f (n) ,函数f(n),这个函数所代表的意思是分解和合并步骤所花费的时间

下图就是主定理,记住就行,也可以自己去推导一蛤~

图十一

PPT上这样说主定理,一样的

图十二
图十三

下面贴一段gray码问题的分治解法


图十四

第一次写简书,写的乱乱的,明天将推出动态规划和毛概,希望写的更好,祝大家期末取得好成绩~


相关文章

  • 算法基础+分治策略(算法复习第1弹)

    马上就要算法考试了,好紧张,先复习第一波.... 参考文献(算法导论)+(张莉老师ppt) 函数的增长,对算法效率...

  • 09《算法入门教程》分治算法

    1. 前言 本节内容是分治算法系列之一:分治算法的介绍,主要介绍了分治算法的定义及基本思想和实现策略,然后我们介绍...

  • 分治算法

    文章结构 如何理解分治算法 分治算法应用举例 1. 如何理解分治算法 1.1 分治算法的核心思想 分治算法的核心思...

  • 最大子数组问题的几种解法

    分治算法 最近看到《算法导论》的分治策略一节,看到的一个题目可以优化引申出来多种解法,同时也可以帮助理解分治策略的...

  • python笔试面试项目实战2020百练6归并排序快速排序

    归并排序 现在,我们将注意⼒转向使⽤分治策略改进排序算法。要研究的第⼀个算法是归并排序 ,它是递归算法,每次将⼀个...

  • 分治策略——算法

    分而治之:据不同的成因选择不同的解决方案。成语大全如是说。而似乎分治只借了这个成语的名,意思却偏向于问题的拆解再合...

  • 算法面经--归并排序

    归并排序(递归合并) 一、算法思路 该算法采用经典的分治(****divide-and-conquer) 策略(分...

  • #2 归并排序算法的简单分析

    简介 归并排序是一种使用分治策略的排序算法,相比于之前介绍的插入排序算法,分治算法在数据量较大的场景中速度要快很多...

  • 归并排序

    1、分治法 归并排序是完全遵循分治策略的排序算法。什么是分治法? 分治法,即将原问题分解为几个规模较小的子问题,递...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

网友评论

      本文标题:算法基础+分治策略(算法复习第1弹)

      本文链接:https://www.haomeiwen.com/subject/yaayvttx.html