
算法导论
文章平均质量分 91
lymcool
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法导论(八)——动态规划&贪婪算法
算法导论(八)——动态规划&贪婪算法【主要参考资料:MIT算法导论视频,《数据结构,算法与应用,c++语言描述》】动态规划方法通常用来求解最优化问题,从可行解中寻找具有最优值的解,得到的是问题的一个最优解(an optimal solution)。求解的问题需具备要素:最优子结构和子问题重叠。算法对每个子问题只求解一次,将其解保存在一个表格,从而无需每次求解一个子问题时都重新计算,避免翻译 2017-11-19 22:04:09 · 1336 阅读 · 0 评论 -
算法导论(六)——扩充的数据结构的应用
算法导论(六)——扩充的数据结构的应用 选择数据结构(红黑树);决定附加信息(计算节点子树大小);验证数据结构不受修改操作影响(插入删除后需旋转);在新的结构上进行新的操作 1. 动态有序统计:(SELECT在动态集中返回第i小的数,RANK在有序集中返回排名为i的元素)【已知】对于一个无序的集合,能够在O(n)的时间内确定任何的顺序统计量【目标】修改红黑树,使得在O翻译 2017-11-04 10:52:05 · 406 阅读 · 0 评论 -
算法导论(五)——树
算法导论(五)——树【主要参考资料:MIT算法导论视频,《数据结构,算法与应用,c++语言描述》】完全二叉树:只有最下面两层度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。已知节点总数为n,则叶子结点数n0=(n+1)/2。 假设元素编号i[1,n],若i==1,则为根元素,i>1则父节点的编号为i/2;若2i>n,则该元素无左孩子,翻译 2017-11-04 09:40:50 · 1034 阅读 · 0 评论 -
算法导论(三)——分治法
divide conquer combine分而治之:例子:求x的n次方: a^n传统的做法就是循环相乘n次,算法效率为Θ(n)。但是如果采用分治法的思想,算法效率可以提高到Θ(lgn)二分查找;归并排序;快速排序;http://www.cnblogs.com/zhoutaotao/p/3970099.html(快排,随机快排)斐波那契数列http://www.cn翻译 2017-10-22 17:01:07 · 618 阅读 · 0 评论 -
算法导论(二)——排序算法整理
算法导论(二)——排序算法整理【主要参考资料:MIT算法导论视频,《数据结构,算法与应用,c++语言描述》】排序算法:1. 时间开销•排序的时间开销可用算法执行中的数据比较次数与数据移动次数来衡量。•算法运行时间代价的大略估算一般都按平均情况进行估算。对于那些受对象初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算2. 空间开销算法执行时所需的附翻译 2017-10-22 16:36:25 · 563 阅读 · 0 评论 -
算法导论(四)——哈希表&平摊分析
算法导论(四)——哈希表1. 背景: symbol-table problem(tableS holding n records),执行操作插入,删除,搜素。要使在列表中查找元素的效率达到Θ(1)【给定一个关键字Key(整数),通过一个定义好的散列函数,可以计算出数据存放的索引位置,这样免去遍历】 若直接映射,则占用的存储空间太大。2. 哈希表:压缩存储空间。翻译 2017-10-22 22:14:36 · 1051 阅读 · 0 评论 -
算法导论(七)——跳跃表&自组织表,竞争性分析
算法导论(七)——跳跃表&自组织表,竞争性分析1. 背景:①为了提高有序链表的查找性能,考虑在部分或全部节点上增加额外的指针,以便查找时跳过若干点,不必从左到右连续查看。方法:1. 散列表(哈希表):操作时间提至O(1),但最坏是O(n)【应用】文本压缩解压p.260LZW压缩:把文本映射为数字编码(关键字为字母,键值为对应的代码。在字符串中寻找于字典中一个字符翻译 2017-11-06 20:05:10 · 1430 阅读 · 0 评论 -
算法导论(一)——渐近分析,递归解法
算法导论(一)——渐近分析,递归解法前言:算法分析即关于计算机程序性能和资源利用的理论分析。好的程序需要具有:正确性,安全性,用户友好性,可维护性,简洁性……程序性能指一个程序对内存和时间的要求,可以通过性能分析或者性能试验来确定。分析一般有时间复杂度和空间复杂度两个方面。空间复杂度包括:指令空间,数据空间,环境栈空间,一般计算空间需求的可变部分(动态分配空间+递归翻译 2017-09-08 11:01:30 · 1484 阅读 · 1 评论 -
算法导论(九)——图
算法导论(九)——图 广度优先搜索(Breadth First Search):从一个顶点开始,搜索所有可到达的顶点。它将邻接未访问点都加入队列,在对当前访问点进行邻接搜索。从图的某个顶点v0出发,在访问v0之后,依次搜索访问v0的各个未被访问过的邻接点w1,w2,…。然后顺序搜索访问w1的各未被访问过的邻接点,w2的各未被访问过的邻接点,…。——》使用队列【类似二叉树的层次遍历】翻译 2017-11-20 21:14:47 · 376 阅读 · 0 评论