读书笔记—《算法设计与分析基础》upstreamL

粗读了一遍,课后题也没有认真完成(实在耐不下性子),但感觉还是有必要先总结一下,以备日后再回头看。

有两种思想,像珠宝商放在天鹅绒上的宝石一样熠熠生辉,一个是微积分,另一个就是算法。微积分以及在微积分基础上建立起来的数学分析体系造就了现代科学,而算法则造就现代世界。——DavidBerlinski

本书的目的是:使读者了解计算领域中不同的问题的一系列标准算法;此外,还要具备设计新算法和分析其效率的能力。

学习算法的第一步,也是最重要的是要理解问题,否则你极有可能要返工。

一、算法求解基本步骤:

1.理解问题:最基础也是重要的一步,决定着算法的成败

2.了解计算设备的性能:根据不同计算设备的性能往往需要不同的算法策略(顺序算法、并行算法)

5.选择恰当的算法:即根据问题和数据结构本身选择恰当的算法,可以是成熟的,也可以是自己开创的

6.详细的表述算法:伪代码是一个不错的选择

9.实现算法并调试

二、重要的问题类型

排序;查找;串处理;图问题;组合问题;几何问题;数值问题;

三、基本数据结构

线性数据结构(数组和链表);图;树;集合与字典;

四、算法效率分析

1.常用符号

●O(读作“哦”):表示算法增长次数小于等于其参数函数的增长次数

●Θ(读作“theta”):表示等于

●Ω(读作“omega”):表示大于等于

算法的效率常见排序:常数(少有的极优秀的算法)>logn>n>nlogn>n^2>n^3>2^n>n!

2.算法的分析方法

●数学分析

●经验分析

●可视化分析

3.算法的效率分类

●最优效率:即算法在最理想的情况下能够达到的效率

●最差效率:即算法在最差的情况下达到的效率

●平均效率:顾名思义

●分摊效率:有些算法有这样的特性,随着算法运行的次数越多,算法效率会有变化,所以要考虑算法的平摊效率

==================================================================

算法的几大分类和简要说明:

一、蛮力法

就像宝剑不是撬棍一样,科学也很少使用蛮力。——EdwardLytton

蛮力法:一种简单直接地解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。(蛮力法虽然有时看着特别傻,但是他的确是应用范围最广的一类算法,事实上,他可以算是能够几乎解所有问题的一般性方法)

蛮力法在个别情况下效率还是比较理想的,我们可以把他作为“保底”算法,或者把他当做准绳来衡量和改进同类算法,以得到更高效的算法。(应用蛮力法得出的第一个算法,往往可以通过改进来提升他的性能)

蛮力法的主要实例:

●选择排序

●冒泡排序:(如果不是因为他有一个好记的名字,我们很可能不会对他有任何了解)

●模式匹配:(指采用蛮力法进行模式匹配)

●最近对和凸包问题的蛮力算法

二、分治法

分治法:将问题划分为几个规模尽量相似的子类,然后对较小的子类问题求解(一般采用递归来分解),然后合并子类以求解原始问题。

分治法可算是最著名的通用算法设计技术了(蛮力是解决,此处是设计),很多非常有效的算法实际上是他的特殊实现。

分治法实例:

●合并排序

●快速排序

一种较为出众的nlogn算法,而且他的最差效率是平方级的。(快排在对付随即产生的数据时,要比大部分排序算法更有优势,对基本有序的可能做许多无效功)

●折半查找

●大整数乘法和Strassen矩阵乘法

●用分治法解决最近对和凸包问题

三、减治法

减治法利用了一种关系:一个问题给定实例的解和同样问题较小实例的解之间的关系。

三种主要变种:

●减去一个常量

这个其实就是f(n)=f(n-1)+常数,减去的这个常量也往往是1。

●减去一个常数因子

意思是问题规模的缩小可能是每次缩小一倍,或者开方,总之是按照一种固定的规模缩减。

●减去的规模是可变的

问题规模的缩小是变化的,例如欧几里得算法(求最大公约数的经典解法):gcd(m,n)=gcd(n,mmodn)

我认为本章中有一个例子比较常用(或者说我就看懂了这一个。。。呵呵),就是生成具有N个元素集合的子集问题:

●一种是从下到上生成

第一次:空

第二次:空a1

第三次:空a1a2a1+a2

第四次:空a1a2a1+a2a3a2+a3a1+a2+a3

看出来了吗?每次都是上一次的集合加上上一次集合加上一个新元素。

●另外一种是比较简单,但是以前一直没想到过

就是用一个n位二进制数代表集合,每位是1或0则表示包不包含该位的元素,这样从0开始每加一,便生成了一个子集(用这种方法,往往会要求按照挤压序生成)

四、变治法

变治策略:问题的实例-->更简单的实例、另一种表现或者另一个问题的实例-->解

该思想的实质是把一个新问题转化成一个有成熟算法的老问题进行求解,用到三种方法:实例化简,改变问题的表现形式,问题化简

常见的主要实例有:

●把查找问题转化为排序问题

●高斯消去法:即把多项式方程的系数矩阵进行行变换,化成上三角矩阵再从底向上求解(改变了问题的表现形式,即系数的表现形式)

●堆排序,将排序问题转化对完全二叉树的分析

●计算机应用中把乘法的运行次数降低(通过添加加法,或者记录每次的乘积结果例如霍纳法则)

五、时空权衡

最重要的事情用药不能受次要事情的支配。——JohannWolfgangvonGoethe

常见的实例有:

●计数排序

●KMP模式匹配算法、Horspool算法

●散列法(对问题的结构进行了预处理):哈希散列,开散列,闭散列

六、动态规划

如果问题是由交叠的子问题所构成的,我们就可以用动态规划技术来解决它。一般的方法是把之前的运算结果记录,然后后续运算利用之前的结果集来进行运算,最后得出解。

●背包问题

●Warshall算法、Floyd算法

●最优二叉查找树

总之,就是常用来解决一些涉及最优解的问题。

七、贪婪算法

贪婪,我找不到一个更好的词来描述它,它就是好!它就是对!它就是有效!——美国演员迈克●道格拉斯

每次选择时都尽量选择最符合问题的路径。

每一步必须符合的原则是:

●可行的:必须满足问题的约束

●局部最优:当前可行步骤中的最佳选择

●不可取消:一旦做出选择,在算法的后面步骤就无法改变

常见的实例:

●Prim算法:基于选择最小路径

●Kruskal算法:基于选择最小边(他在发明该算法时才研二!)

●Dijkstra算法:单起点最优,每次都选择离起点最近的路线

●哈夫曼编码:最小前缀的应用(他是在作课后作业是发明的!)

最后我还想说几点就是,算法千万不要把他简单的看做是某个领域内的求问题的方法,我的观念是,算法是一种哲学,一种你可以用来解决任何问题的方法,学习算法的过程中我对人生也有了许多感悟,总之越来越喜欢算法哲学了(虽然喜欢的好辛苦)。还有就是,书中一些算法的发明者往往都是在校大学生,这点让我十分惭愧,十分十分惭愧!

THE END
1.算法分析与设计(豆瓣)《算法分析与设计:图灵计算机科学丛书》系统地阐述了算法设计的方法、技术和应用实例。全书内容包括基础算法、基本数据结构、基本算法设计技术、图算法、网络流和匹配、文本处理算法、数论算法、网络算法、NP完全性、近似算法、回溯法和分枝限界法、外存算法、并行算法和在线算法。Java实现示例覆盖了软件设计方法、面向对象实https://book.douban.com/subject/1896756/
2.清华大学出版社图书详情算法分析与设计 提供课件、大纲,咨询QQ:2301891038(仅限教师)。算法设计与分析理论和上机实验相结合,每章后精选了一些基础的算法习题,针对各章节不同的算法设计技术,设计了多个上机实验,并提供多套自测试卷。 作者:李少芳、卓明秀 丛书名:高等学校计算机专业系列教材 http://www.tup.tsinghua.edu.cn/booksCenter/book_09510301.html
3.算法基础:概念设计复杂度分析与应用,算法分析与设计 1.算法的基本概念 1.1算法的含义 算法是为了解决某一问题而采取的方法与步骤,通常来说,如果一个算法对于任意一个输入都能够输出一个正确的结果并终止,就成为正确的算法,反之,则称为错误的算法。 1.2算法的作用 程序=算法+数据结构 问题解决:算法提供了解决问题的方法和步骤,通过设计和实现算法,我们https://blog.csdn.net/2201_75879431/article/details/134745444
4.算法分析与设计.pdf文档全文预览算法分析与设计.pdf 98页内容提供方:开心果 大小:4.45 MB 字数:约3.79万字 发布时间:2019-01-12发布于湖北 浏览人气:331 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)算法分析与设计.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 算法分析与https://m.book118.com/html/2019/0111/7201153030002001.shtm
5.算法分析与设计教案(精选8篇)篇2:算法分析与设计教案 一、教学目标 1、知识与技能 (1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力; (2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。 2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信https://www.360wenmi.com/f/file3q7r893g.html
6.算法分析与设计下载算法分析与设计PDF高清版(2023)下载2. 数学基础强:算法分析与设计需要运用很多数学知识,尤其是离散数学和图论。因此,对于从事算法分析与设计的人员而言,数学基础至关重要。 3. 实践性强:虽然算法分析与设计主要是理论问题,但它的实际应用非常广泛。因此,对于从事算法分析与设计的人员来说,需要具备一定的实践经验,能够将理论知识转化为实践的解决方案。 http://www.kkx.net/soft/73253.html
7.算法设计与分析(人民邮电出版社出版的书籍)第1章 算法设计与分析基础 1 1.1 算法概述 2 1.1.1 什么是算法 2 1.1.2 学习算法的重要性 6 1.2 问题的求解过程 6 1.2.1 问题及问题的求解过程 6 1.2.2 算法设计与算法表示 7 1.2.3 算法确认和算法分析 8 1.3 算法的复杂性分析 8 1.3.1 算法评价的基本原则https://baike.baidu.com/item/%E7%AE%97%E6%B3%95%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%86%E6%9E%90/62691912
8.算法设计与分析清华大学算法设计与分析是计算机科学及运筹学的一门基础性课程,在清华大学数学系已经开设了10几年的时间,一般在秋季学期开设,4学分64课时,有来自数学系,计算机系,工业工程,经管学院及一些工科院系的学生选课,选课学生比较踊跃,课容量多次扩大。学生普遍反映课程内容精彩、有用、有趣。在算法广泛应用和飞速发展的时代,学生通过https://www.xuetangx.com/course/THU08091001409/7754812
9.《算法设计与分析》(张小东)简介书评在线阅读算法设计与分析C语言程序设计与应用实验指导书(第2版)计算机图形处理及其在工程中的应用C语言程序设计与应用工程设计图学基础 人民邮电出版社当当自营 进入店铺收藏店铺 商品详情 开本:128开 纸张:胶版纸 包装:平装 是否套装:否 国际标准书号ISBN:9787115509024 http://product.dangdang.com/29208883.html
10.算法设计与分析(第3版)本书以算法设计技术为主线组织素材,以伪码描述算法,深入分析了各种设计技术的使用范围、设计步骤、算法正确性证明与时间复杂度估计方法,以及改进算法的途径、局限性等,为实际问题的建模与算法设计在理论上提供清晰的思路。从对具体算法的设计与分析,自然过渡到对问题难度的分析和界定,系统地介绍了一些关于问题复杂度的https://lib-nudt.wqxuetang.com/book/3242420
11.算法设计与分析总结2016 summer & 1、递归与分治法 递归的基本思想:一个直接或间接调用自身的算法 (1)斐波那契数列: 分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子https://www.jianshu.com/p/510541ee2169
12.计算机算法设计与分析(第5版)PDF51CTO博客《计算机算法设计与分析(第5版)》是2018年电子工业出版社出版的图书,作者是王晓东。 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法。 网络上许多的算法文章都出自于这本书,该书成为了很多开发者学习算法的典藏,网上一直找不到这本书第五版的电子书,个人掏钱买了https://blog.51cto.com/u_12039705/6269782
13.算法设计与分析第2版李春葆PDF下载Java知识分享网本书系统地介绍了各种常用的算法设计策略,包括递归、分治法、蛮力法、回溯法、分枝限界法、贪心法、动态规划、概率算法和近似算法等,并详细讨论了各种图算法和计算几何设计失效链接处理 算法设计与分析 第2版 李春葆 PDF 下载 下载地址: 版权归出版社和原作者所有,链接已删除,请购买正版 用户下载说明: 电子版仅供http://java1234.com/a/javabook/javabase/2022/0303/21906.html
14.算法设计与分析DesignandAnalysisofAlgorithmsCoursera算法设计与分析 Design and Analysis of Algorithms 关于 单元 推荐 评价 审阅 What will I get if I purchase the Certificate? When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to https://www.coursera.org/learn/algorithms
15.算法设计与分析王红梅算法设计与分析王红梅在线免费阅读看算法设计与分析_王红梅算法设计与分析_王红梅最新章节, 算法设计与分析_王红梅 番茄小说网下载番茄小说免费阅读全文。https://fanqienovel.com/reader/7346790152150191156
16.《算法设计与分析(第3版)(新时代高等学校计算机类专业教材)》(王京东JD.COM图书频道为您提供《算法设计与分析(第3版)(新时代高等学校计算机类专业教材)》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13623398.html
17.国科大计算机算法设计与分析课件以及讲义国科大计算机算法设计与分析马丙鹏与马菲菲老师的算法课件以及讲义https://www.iteye.com/resource/ggsimida2016-10880996
18.算法设计与分析王晓东pdf版电子书下载算法设计与分析 王晓东著,电子书格式pdf,书籍系统的介绍了计算机的算法设计方法和分析技巧,为计算机科学技术提供坚强有力的算法基础知识。本教程的算法语言载体为Java,可读性和使用性都非常强,可以作为计算机院校的教材或自学教程。 算法设计 下载地址 下载错误?【投诉报错】 https://www.jb51.net/books/41900.html