
算法设计与分析
文章平均质量分 71
Rosun_
风暖
展开
-
矩阵分析之QR分解
矩阵分析之QR分解1.定义QR分解法是目前求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量,在分解过程中利用Gram−SchmidtGram-Schmidt正交化。它是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法。原创 2016-10-24 16:38:57 · 16214 阅读 · 0 评论 -
Huffman编码之文件压缩问题
Huffman编码之文件压缩问题1.实际问题对于给定的.txt文本文件,用Huffman编码方法对.txt文件进行压缩,并计算压缩比。原创 2016-10-27 23:01:47 · 967 阅读 · 0 评论 -
贪心算法之Huffman编码
贪心算法之Huffman编码1.简要哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。2.具体实例给定一串字符,将其进行Huffman编码。原创 2016-10-27 00:34:36 · 1128 阅读 · 1 评论 -
Strassen算法之矩阵乘法
Strassen算法之矩阵乘法问题:给定两个n-by-n矩阵A和B,计算C=AB; 分析:如果采用一般方法求解矩阵C,我们根据乘法定义知道C中每个元素都需要O(n)次乘法,总共有n^2个元素,所以时间复杂度是O(n^3)。当n很大时,这个时间是非常久的。那我们有什么快速的方法计算矩阵乘法呢?采用Divide、Conquer and Combine思想,把矩阵A、B、C分别画成4个小矩阵,这样.把每原创 2016-09-28 17:45:08 · 2056 阅读 · 0 评论 -
快速傅里叶变换(FFT)
快速傅里叶变换(FFT)说到FFT,我们就不得不介绍傅里叶同学、傅里叶级数、傅里叶变换、离散傅里叶变换。下面对他们这些玩意一一介绍。 1.傅里叶同学简介让·巴普蒂斯·约瑟夫·傅里叶(Baron Jean Baptiste Joseph Fourier,1768-1830),男爵,法国数学家、物理学家,1768年3月21日生于欧塞尔,1830年5月16日卒于巴黎。1817年当选为科学院院士,原创 2016-10-31 16:40:56 · 9630 阅读 · 0 评论 -
线性规划之飞机航班调度问题
线性规划之飞机航班调度问题1.Problem : Airplane Landing ProblemWith human lives at stake, an air traffic controller has to schedule the airplanes that are landing at an airport in order to avoid airplane collision.原创 2016-11-13 20:08:29 · 10770 阅读 · 0 评论 -
图的路径搜索
1. 深度优先遍历(Depth-First Traversal)2.1 图的深度优先遍历的递归定义 假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶原创 2016-11-29 23:02:08 · 6200 阅读 · 1 评论 -
最大网络流之Ford-Fulkerson算法和ScalingFord-Fulkerson算法
1.最大网络流问题介绍 我们要解决的问题就是怎样分配,使得从城市s城市s流出的货物到城市ss的黄金最多,并且图中相邻城市之间实际运输的黄金数量不能超过他们的容量cc. 当然我们可以不加思索的用我们的超级武器$GLPK$来解决此问题,但这个问题比一般的线性规划问题更特殊,图的很多性质我们可以派上用场,关于图的知识可参见算法导论。下面我们介绍非常一个非常有套路的算法和它的改进版本。2.Ford-Fu原创 2016-11-30 15:31:09 · 5976 阅读 · 8 评论 -
最大流网络之Push-Relabel算法
上一篇文章介绍了网络最大流中的Ford-Forkerson算法和它的改进版本。对于解决网络最大流、最小割相关问题,今天我们来看一个效率更快的算法Push-Relabel算法。1.Push-Relabel算法思想对于一个网络流图: 该算法直观可以这样理解,先在源节点处加入充足的流(跟源节点ss相连的所有边的容量之和),然后开始按一定规则进行流渗透,一个边一个边的向汇点渗透,直到没法再渗透(类似于For原创 2016-12-11 17:23:40 · 14806 阅读 · 3 评论 -
动态规划之隐含马尔可夫模型(HMM)和维特比算法(Viterbi Algorithm)
动态规划之(HMM)和(Viterbi Algorithm)1. 实际问题HMM-韦小宝的骰子 • 两种骰子,开始以2/5的概率出千。 – 正常A:以1/6的概率出现每个点 – 不正常B: 5,6出现概率为3/10,其它为1/10 • 出千的随机规律 观测到其一次投掷结果Y={1,3,4,5,5,6,6,3,2,6}Y=\{1,3,4,5,5,6,6,3,2,6\} 问题是韦小宝何时出千原创 2016-10-28 22:56:30 · 8575 阅读 · 1 评论 -
动态规划算法之矩阵链式乘法
问题:一个矩阵序列相乘,A1,A2,A3,…,An;矩阵Ai是i-by-i+1型。相乘公式如下: P= A1*A2 A3…*An 。 求最好的加括号方案使得整体的运算次数最小。原创 2016-09-23 22:12:21 · 1445 阅读 · 0 评论 -
分治策略之最近点对问题
分治策略之最近点对问题问题:在平面给定N个点,求点对间最近距离。 分析:我们知道直线上找出2个最近的点,时间复杂度是O(NlogN),平面上比较所有的点对,直观上我们可以知道时间复杂度是O(N^2)。思考一下,当N非常大的时候,那不是得运算很久,有没有快速算法呢?我们采用分治策越,N个点我们不会做,我们进行Divide,分成两个子问题,N/2个点,依次进行下去。在子问题求出最小解,再回头进行Com原创 2016-09-24 19:04:06 · 1272 阅读 · 0 评论 -
动态规划之序列联配问题
动态规划之序列联配问题问题:Two sequence S and T,length(S)=m and length(T)=n。To identify an alignment of S and T that maximizes a scoreing function. 分析:Alignment是左右对齐的意思,经常表示产生式过程,即上面的序列S是怎么样通过下面的序列T变成的。关于序列联配问题的实际原创 2016-09-30 20:40:20 · 2678 阅读 · 0 评论 -
矩阵分析之LU分解
矩阵分解之LU分解问题:对于n-by-n矩阵A,对A进行分解,使得A=LU,L为下上角矩阵,U为上三角矩阵。实现过程如下:原创 2016-10-02 14:40:36 · 4423 阅读 · 1 评论 -
矩阵分析之Givens Reduction
矩阵分析之Givens Reduction1.Givens Rotation介绍 2.Givens Reduction算法原理(1).获取待约减的矩阵AA: (m−by−n)(m-by-n) ⎡⎣⎢⎢⎢a11a21⋯am1a12a22⋯am2a13a23⋯am3⋯⋯⋯⋯a1na2n⋯amn⎤⎦⎥⎥⎥ \left [ \begin{array}{} a_{11}& a_{1原创 2016-11-03 22:13:04 · 7721 阅读 · 1 评论 -
矩阵分析之Householder Reduction
矩阵分析之Householder reduction我们都知道通过高斯消元法、初等行变换可以得到一个矩阵的行阶梯表达。但这不是唯一的方法。Householder reduction就可以完成这项任务。1.Householder reduction原理 2.具体问题给定一个矩阵AA,求矩阵P,TP,T使得PA=TPA=T,其中矩阵TT为上三角矩阵,如果AA是实数矩阵,则PP为正交矩阵。给定AA如原创 2016-11-03 14:37:39 · 5609 阅读 · 1 评论 -
数据结构之Binary Heap(二叉堆)
数据结构之Binary Heap(二叉堆)1.Binary Heap的定义 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。二叉堆一般用数组来表示。原创 2016-10-22 15:11:50 · 6485 阅读 · 0 评论 -
Dijktra算法之单源最短路径问题
Dijktra算法之单源最短路径问题问题:求下图中点SS到其他所有点的最短距离。原创 2016-10-18 17:20:55 · 964 阅读 · 0 评论 -
动态规划之背包问题
动态规划之背包问题问题:给定n个物品,每个物品都有重量和价值,现在希望选择一个物品子集使得总重量小于给定的重量并且总价值最大。问题如下图所示: 分析: 可以把问题的求解过程看成是一系列的决策过程,在第ii步,我们决定ii个物品是否装。现在假装我们得到子问题的最优解,当前考虑最后一个物品是装还是不装。如果装,则原问题变成从前n−1n-1个物品中选择限重W−WnW-W_n的物品子集使得价值最大。原创 2016-10-15 13:42:00 · 528 阅读 · 0 评论 -
动态规划与贪心算法之课程安排问题
动态规划算法与贪心算法之课程安排问题动态规划算法之课程安排 问题:教务处给某一个教室安排课程,有很多老师都想来这个教室教授他们各自的课。假如第ii位老师讲的第AiA_i门课程,课程开始时间SiS_i,结束时间为FiF_i。那么教务处的老师就要利用这个时间如何安排课程,使得来这间教室上课的人数最多?原创 2016-10-10 23:14:53 · 8388 阅读 · 1 评论 -
动态规划之最长子序列问题
动态规划之最长子序列问题问题:给定一个序列a1,a2,a3,a4,⋯,ana_1,a_2,a_3,a_4,\cdots,a_n ,求该序列中最长的子序列s1,s2,⋯,sm,(m<=n)s_1,s_2,\cdots,s_m,(m<=n),子序列为严格的递增序列。原创 2016-10-07 19:59:24 · 1076 阅读 · 0 评论 -
Bellman-Ford算法之单源最短路径问题
Bellman-Ford算法之最短路径问题问题:求下图中点S到T的最短路径。 分析:这个问题于TSP问题有点像,不同点在于该问题不需要每个节点都遍历。对于大问题节点太多,眼花缭乱,不会做。先尝试把其分解成子问题,变得容易点。原创 2016-10-03 17:03:29 · 1737 阅读 · 0 评论 -
深度理解拉格朗日乘子法、KKT条件与线性规划对偶理论的微妙关系
本文主要讲述给定一个线性规划,我们为什么能按照对偶规则,机械地并且非常容易地写出其对偶。当然为便于理解,本文先介绍了什么是拉格朗日乘子法、KKT(KarushKuhnTucker)KKT(Karush Kuhn Tucker)条件。二者是求解有约束条件的优化问题的两个重要方法。1.优化问题常见类型通常我们需要求解的最优化问题有如下3类: (i) 没有约束条件: minf(x)min f(x)原创 2016-12-19 23:30:40 · 17001 阅读 · 7 评论