`
evasiu
  • 浏览: 165241 次
  • 性别: Icon_minigender_2
  • 来自: 广州
博客专栏
Fa47b089-e026-399c-b770-017349f619d5
TCP/IP详解卷一>阅读...
浏览量:12243
社区版块
存档分类
最新评论

《算法引论》之算法分析

 
阅读更多
上次写博客,已经是半个月之前了。我也不知道我这段日子在干嘛了,没有具体的目标与计划,比较随性,看了几本原本束之高阁的书,包括那本室友推荐,买来后一直搁在床头,不少著名的书里提到的《怎样解题》,以及那本曾经感觉不能理解的《孤独及其所创造的》,还看了一部《中国近代史》,因为还未买到港版,至今还在看小小的手机屏幕。昨夜清风习习,凉意袭人,没有负担,没有烦恼,可以看书看到自然睡,睡觉睡到自然醒,何其的幸福呵。然后又想起被搁置很久的《算法引论》,于是今天又开始阅读了。

第三章《算法分析》主要用于计算算法的复杂度,记得以前《算法导论》也有仔细介绍过,不过没有仔细去了解。关于上界、下界等标记也没有仔细去理解。今天算是认真了一回吧。

首先介绍一下这三个符号:Ο、Ω、Θ

如果存在常数项c和N,使得对于所有的n>=N,有g(n)<=c f(n),则称函数g(n)相对于另一函数f(n)是Ο(f(n)),换句话说,对于足够大的n,函数g(n)不超过函数f(n)的一个固定倍数。Ο是函数的上界。

如果存在常数项c和N,使得对于所有的n>=N,在输入规模为n是解决问题的步数T(n)至少为c g(n),则我们说T(n)=Ω(g(n))。

如果一个特定函数f(n)同时满足f(n)=Ο(g(n))和f(n)=Ω(g(n)),则称f(n)=Θ(g(n))。

符号Ο、Ω、Θ分别大致对应的是"<=",">="和"="。

另外,有如下定理:
1. 对于所有常数c>0和a>1,以及所有单调递增函数f(n),有(f(n))^c = Ο(a^f(n))
换句话说,一个指数函数要比一个多项式函数增长得快。
2. 如果f(n)=Ο(s(n))并且g(n)=Ο(r(n)),则f(n)+g(n)=Ο(s(n)+r(n))
3. 如果f(n)=Ο(s(n))并且g(n)=Ο(r(n)),则f(n).g(n)=Ο(s(n).r(n))

关于算法的复杂度分析,有两种情况:
(1)如果算法由几个部分组成,则它的复杂度通常是这些部分的复杂度的总和。算法可能包含一个执行多次的循环,每一次都有不同的复杂度。这涉及到求和。
(2)分治算法常常把一个大规模的输入递归地分成小规模输入,最后再从小到大整合起来,其算法的复杂度常常具有递推关系。另外,一些算法本身也是递推的,如Fibonacci数列。
熟悉这些将对我们分析算法的复杂度有很大的帮助。

1. 我们知道sum(i)=n(n+1)/2,现在让我们求和:sum(i^2)



2. 分治算法常常具有如下的算法运行时间表达式:



该式的含义为,算法将问题分为a个子问题,每个子问题的规模是原始问题的1/b,用于合并各个子问题的算法运行时间是cn^k。a, b, c, k均为常数。
尝试着把它拆开,假设当n=b^m,且T(1)=c,有:



这是一个简单的几何级数,分三种情况,分别取决于(b^k/a)是大于1, 等于1还是小于1.
情况1:a>b^k
此时,当m趋向于无穷大时,级数收敛于常数。因此T(n)=Ο(a^m),而m=log_b(n),因此有



情况2:a=b^k



情况3:a<b^k
在此情况下,几何级数的因子大于1,为了计算几何级数的和,可以使用标准表达式。用F(F是一个常数)来表示b^k/a,由于级数的第一个元素是a^m,所以有:




再来看一下著名的Fibonacci数列:
F(n)=F(n-1)+F(n-2), F(1)=1, F(2)=2
一个合理的猜测是F(n)每次都被加倍,即它大约为2^n,尝试F(n)=c2^n,则有:



显然c2^n太大了,并且c在等式中并不起作用。我们尝试使用一个小一点的底数a,令F(n)=a^n,则有:




还有一种递推关系,它涉及全部历史,例如:



  • 大小: 25.5 KB
  • 大小: 2.4 KB
  • 大小: 22.7 KB
  • 大小: 3.6 KB
  • 大小: 5.6 KB
  • 大小: 6 KB
  • 大小: 2 KB
  • 大小: 15.5 KB
  • 大小: 66 KB
分享到:
评论

相关推荐

    计算机算法引论——设计与分析技术.rar

    计算机算法引论——设计与分析技术.本书讲述计算机算法的各种设计策略,包括分治技术、贪心技术、动态规划技术回溯和分支限界技术等。介绍算法分析技术、算法的时间和空间复杂度分析方法;讨论各类经典的应用问题...

    算法引论:一种创造性方法.pdf

    全书共分12章,是按照领域进行分类的:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了几个领域的算法,如序列和集合...

    算法引论一种创造性方法

    全书共分12章,是按照领域进行分类的:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了几个领域的算法,如序列和集合...

    计算机算法引论——设计与分析技术(书签版)

    《计算机算法引论:设计与分析技术》是一本面向计算机、软件工程和网络工程专业及相关专业的本科生(高年级)和研究生教材,根据国内外计算机技术的最新发展,讲述计算机算法的各种设计策略,包括分治技术、贪心技术、...

    算法引论+数据结构与算法分析+代码之美

    《算法引论:一种创造性方法》是国际算法大师乌迪.曼博(Udi Manber)博士撰写的一本享有盛誉的著作。全书共分12章,是按照领域进行分类的:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第...

    算法引论 高清 带标签

    到第4意为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的 算法设计思想;第6拿到第9宣言分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法、代数 和数值...

    计算机算法引论:设计与分析技术

    算法的理论处于计算机科学的核心地位,同时,它与计算机应用的许多实际问题有着 直接的关系,例如,网络技术、多媒体技术、汁算机安全技术等,其最关键的部分都是算法 ...以及人们如何是进行计算机算法的设计与分析的c

    算法分析与设计:01 第一讲_算法引论.pdf

    算法分析与设计:01 第一讲_算法引论.pdf

    算法引论:一种创造性方法.[美]Udi Manber(带详细书签).pdf

    全书共分12章:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法...

    第1章 算法引论

    算法设计与分析,第1章算法引论

    同伦算法引论(王则柯 高堂安)

    介绍各种同伦算法的相关基础知识,以及不同情况下的算法分析讲解,内容比较全面。

    数据结构与算法分析C.描述

    Mark Allerl Weiss教授撰写的数据结构与算法分析方面的著作曾被评为20世纪最佳的30部计算机著作之一,已经成为公认的经典之作,被全球数百所大学采用为教材,广受好评。 本书秉承Weiss著作一贯的严谨风格,同时又...

    数据结构与算法分析C++描述

    《数据结构与算法分析C++描述》 (第3版)是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法...

    数据结构与算法分析第二版 ---C语言描述(附加答案)

    本书目录:出版者的话专家指导委员会译者序前言第1章 引论1.1 本书讨论的内容1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数1.2.4 模运算1.2.5 证明方法1.3 递归简论总结练习第2章 算法分析2.1 数学基础2.2 模型...

    数据结构与算法分析

     本书是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找...

    计算机算法分析与设计(共33张PPT).pptx

    选用教材: 《计算机算法基础》(第二版) 余祥宣,崔国华,邹海明 华中科技大学出版社 参考书目: 《算法引论》 张益新,沈雁 国防科技大学出版社 《算法设计与分析》 周培德 机械工业出版社 计算机算法分析与设计...

    数据结构与算法分析_Java语言描述(第2版)

    中文名: 数据结构与算法分析_Java语言描述(第2版) 作者: 韦斯 译者: 冯舜玺 图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 机械工业出版社 书号: ISBN:9787111231837 发行时间: 2009年01月01日 地区: 大陆 ...

    数据结构与算法分析c语言描述

    《数据结构与算法分析:C语言描述(原书第2版)》是国外数据结构与算法分析方在的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。本书的编写目标是同时廛授好的程序设计和算法...

    算法分析与设计德课件

    算法分析与介绍,第一章算法引论 的ppt课件

Global site tag (gtag.js) - Google Analytics