随笔分类 -  算法

摘要:本章阐述图的表示方法和图的搜索方法。图的搜索指的是系统化的沿着图的边访问所有顶点。图的搜索算法可以用来发现图的结构。许多图的算法在开始时,都是通过搜索获取图结构信息。另外还有一些图的算法实际上是由基本的图搜索算法经过简单扩充而成的。因此。图的搜索技术是图算法领域的核心。 一:图的表示 对于图G=(V 阅读全文
posted @ 2015-05-10 08:58 gqtc 阅读(584) 评论(0) 推荐(0)
摘要:在某些应用中,要将n个不同的元素分成一组不相交的集合。不相交集合上有两个重要操作,即找出给定的元素所属的集合和合并两个集合。 一:不相交集合的操作 不相交集合教据结构维护一组不相交的动态集合的集合S={S1, S2, ..., SK}。每个集合通过一个代表来识别,代表是集合中的某个成员,在某些应用中 阅读全文
posted @ 2015-05-09 16:48 gqtc 阅读(409) 评论(0) 推荐(0)
摘要:可合并堆是支持以下5种操作的数据结构,其中每个元素都有一个关键字: MAKE-HEAP():创建和返回一个新的不含任何元素的堆。 INSERT(H, x):将一个已填入关键字的元素x插入堆H中。 MINIMUM(H):返回一个指向堆H中具有最小关键字元素的指针。 EXTRACT-MIN(H):从堆H 阅读全文
posted @ 2015-05-09 16:36 gqtc 阅读(499) 评论(0) 推荐(0)
摘要:磁盘作为辅存,它的容量要比内存大得多,但是速度也要慢许多,下面就是磁盘的的结构图: 磁盘驱动器由一个或多个盘片组成,它们以固定的速度绕着主轴旋转,数据存储于盘片的表面,磁盘驱动器通过磁臂末尾的磁头来读写盘片。礠臂可以将磁头向主轴移近或移远。当一个磁头处于静止的时候,它下面经过的磁盘表面称为磁道。 磁 阅读全文
posted @ 2015-05-09 13:05 gqtc 阅读(220) 评论(0) 推荐(0)
摘要:在摊还分析中,通过求数据结构的一系列的操作的平均时间,来评价操作的代价。这样,即使这些操作中的某个单一操作的代价很高,也可以证明平均代价很低。摊还分析不涉及概率,它可以保证最坏情况下每个操作的平均性能。 摊还分析有三种常用的技术: 聚合分析,它确定n个操作的总代价的上界为T(n),所以每个操作的平均 阅读全文
posted @ 2015-05-09 10:42 gqtc 阅读(356) 评论(0) 推荐(0)
摘要:动态规划方法求解最优化问题时,每个步骤都面临多种选择。对于许多最优化问题,使用动态规划算法来求解最优解有些杀鸡用牛刀了,可以使用更简单更高效的贪心算法。贪心算法在每一步的选择中,都选择当时最佳的情况。即局部最优的选择。贪心算法并不能保证总能得到最优解,但是很多问题确实可以求得最优解。 一:活动选择问 阅读全文
posted @ 2015-05-09 10:12 gqtc 阅读(603) 评论(0) 推荐(0)
摘要:动态规划(dynamic programming,这里的programming不是程序,而是表示表格)。它与分治算法类似,都是通过组合子问题的解来求解原问题。分治算法是将原问题分解为互不相交的子问题,递归的求解子问题,然后将解组合起来。 动态规划则不同,它应用于求解子问题重叠的情况,也就是不同的子问 阅读全文
posted @ 2015-05-06 09:08 gqtc 阅读(559) 评论(0) 推荐(0)
摘要:一:概述 一些工程应用只会使用教科书式的标准数据结构,但是也会有些应用需要对现有的数据结构进行少许的创新和改造,只有很少的情况会创造全新的数据结构。 二:动态顺序统计 顺序统计:n个元素中第i个顺序统计量,就是具有第i小关键字的元素。对于一个无序的集合,可以在O(n)的时间内得到任意的顺序统计量。 阅读全文
posted @ 2015-04-27 21:27 gqtc 阅读(212) 评论(0) 推荐(0)
摘要:一:红黑树的其他特点 1:对于一颗用RB-INSERT插入n个结点形成的红黑树,如果n>1,则该树至少有一个红结点。 2: 如果用RB-INSERT将节点x插入一颗红黑树,然后接着用RB-DELETE删除,则结果红黑树是否和原始红黑树一样? 不一样,因为RB-INSERT可能会进行旋转而改变树的结构 阅读全文
posted @ 2015-04-26 18:32 gqtc 阅读(204) 评论(0) 推荐(0)
摘要:红黑树的删除操作花费O(lg n)时间,删除算法与二叉搜索树的删除类似,首先红黑树的TRANSPLANT版本有些许不同,主要是因为红黑树使用nil结点代替NULL指针造成的: RB-TRANSPLANT(T, u, v) if u.p ==T.nil T.root= v else if u== u. 阅读全文
posted @ 2015-04-26 18:11 gqtc 阅读(233) 评论(0) 推荐(0)
摘要:红黑树的插入可在O(lg n)完成,红黑树的插入类似于二叉搜索树的插入,为了尽量维护红黑树的性质,将插入的新节点标记为RED,然后调用RB-INSERT-FIXUP对红黑树的性质进行维护,RB-INSERT代码如下: RB-INSERT(T,z) y = T.nil x = T.root while 阅读全文
posted @ 2015-04-26 18:02 gqtc 阅读(217) 评论(0) 推荐(0)
摘要:因二叉搜索树的字典操作的时间复杂度都是O(h),所以,当二叉搜索树的高度较小时,可以获得较快的执行。只有当二叉搜索树变得“平衡”时,高度才会达到最低。 红黑树是许多“平衡”搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间为O(lg n)。 一:概念与性质 红黑树是一种二叉搜索树,同时它又具 阅读全文
posted @ 2015-04-26 17:47 gqtc 阅读(235) 评论(0) 推荐(0)
摘要:1:概念 二叉搜索树也叫二叉排序树,它支持的操作有:SEARCH, MINIMUM, MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, DELETE。所以,一颗二叉搜索树既可以作为一个字典,又可以作为一个优先队列。 二叉搜索树的基本操作时间与这棵树的高度成正比。二叉搜 阅读全文
posted @ 2015-04-26 17:04 gqtc 阅读(240) 评论(0) 推荐(0)
摘要:在前面讨论的各种数据结构中,记录在各种结构中的相对位置是随机的,和在记录的关键字之间不存在有确定的关系,因此在查找记录是需要进行一系列和关键字的比较。 而理想的情况是不希望进行任何的比较,一次存取便能得到所查记录。那就必须在记录的存储位置和它的关键字之间建立一种确定的关系f,使每个关键字和结构中有一 阅读全文
posted @ 2015-04-26 16:46 gqtc 阅读(501) 评论(0) 推荐(0)
摘要:一:基本数据结构之栈队列链表树 1:数据结构就是一种动态的可变集合,不同的算法对动态集合有不同的操作,支持插入,删除,测试元素是否属于集合这些操作的动态集合成为字典。集合中的对象,一般都有关键字,有的对象还有卫星数据。 动态集合上的操作可以分为:查询操作和修改操作,任何具体应用通常只会进行下面操作的 阅读全文
posted @ 2015-04-25 16:27 gqtc 阅读(389) 评论(0) 推荐(0)
摘要:1:n个元素组成的集合,第i个顺序统计量,就是该集合中第i小的元素。所以,集合中的最小值就是第1个顺序统计量,最大值就是第n个顺序统计量。中位数是所属集合的“中点元素”,当n是奇数的时候,中位数唯一,位于(n+1)/2处。如果n是偶数,中位数有两个,分别位于n/2和(n/2) + 1。 2:选择问题 阅读全文
posted @ 2015-04-23 22:41 gqtc 阅读(221) 评论(0) 推荐(0)
摘要:之前的排序算法都是比较排序:在排序的最终结果中,各元素的次序依赖于他们之间的比较。任何比较排序在最坏情况下,都要经历Ω(n lgn)次比较,所以,归并排序和堆排序都是渐进最优的。 除了比较排序之外,还有其他的排序方法,但是都必须满足一定的前提条件,这些排序算法的下界不再是Ω(n lgn),而可以达到 阅读全文
posted @ 2015-04-23 22:28 gqtc 阅读(174) 评论(0) 推荐(0)
摘要:1:快速排序 快速排序的最坏情况时间复杂度为Θ(n^2)。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能很好。它的期望运行时间复杂度为Θ(n lg n),而且Θ(n lg n)中蕴含的常数因子非常小,而且它还是原址排序的。 2:基本思想 快速排序采用分治法进 阅读全文
posted @ 2015-04-22 21:41 gqtc 阅读(205) 评论(0) 推荐(0)
摘要:满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点(也可以这样理解,除叶子节点外的所有结点均有两个子结点。节点数达到最大值。所有叶子结点必须在同一层上) 1:堆排序的时间复杂度为O(nlgn)。具有空间原址性的特点,也就是任意时刻只需常数个额外元素空间存储临时数据。 2:堆是一颗近 阅读全文
posted @ 2015-04-22 21:16 gqtc 阅读(378) 评论(0) 推荐(0)
摘要:数学之美番外篇:快排为什么那样快 By 刘未鹏(pongba) 目录 0. 前言 1. 猜数字 2. 称球 3. 排序 3.1 为什么堆排比快排慢 3.2 为什么快排其实也不是那么快 3.3 基排又为什么那么快呢 4. 信息论!信息论? 5. 小结 0. 前言 知道这个理论是在TopLanguage 阅读全文
posted @ 2015-04-22 09:11 gqtc 阅读(253) 评论(0) 推荐(0)