随笔分类 -  Algorithm

【SSSP】A forward-backward single-source paths algorithm
摘要:0. 引子基础的算法和数据结构已经学习的差不多了,上学期期末就打算重点研究研究STOC和FOCS上面的论文。做这件事情的初衷是了解别人是如何改进原有算法的,搞清楚目前比较热的算法问题有哪些,更重要的是acm的很多算法或者书里的算法都是别人整理的,很多年以前的了,学习新东西总会有很多收获的。关于算法,... 阅读全文

posted @ 2015-10-25 21:41 Bombe 阅读(708) 评论(0) 推荐(0)

【算法导论】学习笔记——第14章 数据结构的扩张
摘要:这一章节特别有意思。习题也比较多,但是很容易掌握。主要描述的就是在已知数据结构的基础上,通过增加或修改部分基础操作。来构造更加有效的新数据结构。14.1动态数据统计本节主要介绍如何修改红黑树,使得可以在O(lgn)时间内确定顺序统计量,如何在O(lgn)时间内确定一个元素的秩,即它在集合线性序中的位... 阅读全文

posted @ 2015-03-03 16:33 Bombe 阅读(552) 评论(0) 推荐(0)

【算法导论】学习笔记——第13章 红黑树
摘要:红黑树(red-black tree)是许多平衡搜索树中的一种,因此基本操作(查询、删除、搜索)等在最坏情况下的时间复杂度均为O(lgn)。13. 1红黑树的性质红黑树时一棵二叉搜索树,并且在每个结点上增加了一个属性表示颜色:红色或黑色。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红... 阅读全文

posted @ 2015-02-19 22:48 Bombe 阅读(766) 评论(0) 推荐(0)

【算法导论】学习笔记——第12章 二叉搜索树
摘要:搜索树数据结构支持多种动态集合操作,包括SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSRT和DELETE操作等。基本的搜索树就是一棵二叉搜索树。12.1什么是二叉搜索树1. 二叉搜索树的性质:设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点... 阅读全文

posted @ 2015-02-14 21:25 Bombe 阅读(793) 评论(0) 推荐(0)

【Algorithm】逆序数的分治求解
摘要:逆序数的分治求解,时间复杂度O(nlgn)。基本思想是在归并排序的基础上加逆序计数。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define MAXN 100005... 阅读全文

posted @ 2015-01-18 15:52 Bombe 阅读(364) 评论(0) 推荐(0)

【算法导论】学习笔记——第11章 散列表
摘要:11.1直接寻址表当关键字的全域U很小,可采用直接寻址的方式。假设动态集合S的元素都取自全域U={0, 1, ..., m-1}的一个关键字,并且没有两个元素具有相同的关键字。为表示动态集合,使用直接寻址表(diret-address table),记为T[0...m-1],其中的每个位置称为槽(s... 阅读全文

posted @ 2014-11-06 17:04 Bombe 阅读(665) 评论(0) 推荐(0)

【算法导论】学习笔记——第10章 基本数据结构
摘要:基本数据结构主要包括:栈、队列、链表和有根树。10.1 栈和队列栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素时预先设定的。在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出(LIFO)策略。队列实现的是一种先进先出(FIFO)策略。栈栈上的INSERT操作称为压入(PUSH)... 阅读全文

posted @ 2014-09-07 11:05 Bombe 阅读(1230) 评论(2) 推荐(0)

【算法导论】学习笔记——第9章 中位数和顺序统计量
摘要:在一个由n个元素组成的集合中,第i个顺序统计量(order statistic)是该集合中第i小的元素。用非形式化的描述来说,一个中位数(median)使它所属集合的“中点元素”。当n为奇数时,中位数是唯一的,位于i=(n+1)/2处。当n为偶数时,存在两个中位数,分别位于i=n/2和i=n/2+1... 阅读全文

posted @ 2014-09-01 15:07 Bombe 阅读(2600) 评论(0) 推荐(0)

【算法导论】学习笔记——第8章 线性时间排序
摘要:本章节主要证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过omega(nlgn)次比较。从而证明归并排序和堆排序是渐近最优的。同时,介绍了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。1. 排序算法的下界在确定排序算法的下界时,借助决策树模型。决策树模型是一棵完全二叉树... 阅读全文

posted @ 2014-08-29 16:03 Bombe 阅读(461) 评论(0) 推荐(0)

【算法导论】学习笔记——第7章 快速排序
摘要:对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为theta(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,期望时间复杂度是theta(nlgn),而且常数因子非常小,并可进行原址排序。1. 快速排序的描述快速排序可... 阅读全文

posted @ 2014-08-24 20:58 Bombe 阅读(500) 评论(0) 推荐(0)

【算法导论】学习笔记——第6章 堆排序
摘要:堆这个数据结构应用非常广泛,数字图像处理的算法里也见过。似乎记得以前老师上课说需要用树结构实现堆排序,看了一下算法导论才明白其精髓。堆虽然是一棵树,但显然没必要非得用树结构实现堆排序。堆排序的性质很好,算法时间复杂度为O(nlgn)。1. 堆排序的简要说明。二叉堆可以分为两种形式:最大堆和最小堆。在... 阅读全文

posted @ 2014-08-19 22:42 Bombe 阅读(444) 评论(0) 推荐(0)

【算法导论】学习笔记——第22章 图的基本算法
摘要:这两周,一直在做搜索类的题目,主要还是集中在深搜和广搜,下周将学习双广和A*。提到搜索,自然想到图,图这种数据结构,最开始学习的时候特别难。老师常说,树是特殊的图,图也比树一般化很多。深搜和广搜最开始的时候,总是搞不清楚,后来做课设的时候,总算会模拟了。现在才算系统的学习,可以运用自如。也因此,看了一下《算法导论》的搜索部分内容。1.广度优先搜索在给定图G=(V, E)和一个特定的源顶点s的情况下,广度优先搜索可以探索G中的边,从而发现s可到达的所有顶点,并计算s到各个可达顶点的距离,并生成以s为顶点、包含所有s可达顶点的最短路径。很多acm题目正是基于广搜的这样的特点而选择使用广搜而不是深搜 阅读全文

posted @ 2014-03-24 20:24 Bombe 阅读(656) 评论(0) 推荐(0)

【算法导论】学习笔记——第16章 贪心算法
摘要:贪心算法是使做出的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解。其实,这个定义旨在说明贪心算法必须伴随做出最优选择,如moving table,我们选择最大重叠数等等。当然,很多情况下,并不一定局部最优解就是全局最优解。与DP类似,很多贪心算法设计时都很容易想到递归的形式,然而由于深度太深,很容易stack overflow。因此,这时候,大多我们都需要将递归变为递推。以前,不是很会转化。现在,觉得很容易。递归是自顶向下求解,而递推则是自底向上求解。一般递推都需要伴随着表来实现。1. 在开发一个贪心算法时,我们一般要遵循如下几个步骤:(1)设计问题的最优子结构(2) 阅读全文

posted @ 2014-03-08 21:54 Bombe 阅读(461) 评论(0) 推荐(0)

导航