随笔分类 -  Algorithm

摘要:问题定义这个问题来自网上看到的百度算法题,感觉很不错,问题定义如下:假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个,怎么做?解决方法这里其实有很多解决方法,笨拙的或者巧妙的。这里介绍一个非常不错的方法,使用最大堆堆排... 阅读全文
posted @ 2014-06-18 16:19 ywl925 阅读(4274) 评论(0) 推荐(2) 编辑
摘要:问题定义给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。求解蓄水池抽样算法:该算法是针对从一个序列中随机抽取不重复的k个数,保证每个数被抽取到的概率为k/n... 阅读全文
posted @ 2014-06-17 16:22 ywl925 阅读(2862) 评论(1) 推荐(0) 编辑
摘要:近期看到有个有趣的问题,我简称为“空瓶子换水”问题,这里分两种情况,一种是有空瓶子,直接换水问题;另一种是知道怎么用空瓶子换水,如果满足一定数量的人喝水,需要至少买多少瓶问题。这里假设3个空瓶子可以换1瓶水,那么针对上面的两个问题,有如下解释。1.有空瓶子,直接换水对于计算方法,我这里提供两种,第一... 阅读全文
posted @ 2014-06-09 17:27 ywl925 阅读(9505) 评论(0) 推荐(0) 编辑
摘要:Questin:There is an array A[N] of N numbers. You have to compose an array Output[N] such that Output[i] will be equal to multiplication of all the ele... 阅读全文
posted @ 2014-05-19 15:56 ywl925 阅读(276) 评论(0) 推荐(0) 编辑
摘要:实现一下。IDQuestionDiffFreqData StructureAlgorithms1Two Sum25arraysortsetTwo Pointers2Add Two Numbers34linked listTwo PointersMath3Longest Substring Without Repeating Characters32stringTwo Pointershashtable4Median of Two Sorted Arrays53arrayBinary Search5Longest Palindromic Substring42string6ZigZag Conv 阅读全文
posted @ 2014-01-06 22:06 ywl925 阅读(4559) 评论(0) 推荐(1) 编辑
摘要:问题:给定两个有序数组,求他们的中位数。(即合并后的中位数)算法简单描述:假设两个数组为:Orda_1,Orda_2。先对比这个数组的中间数的大小,假设Orda_1的中间数为a_1,Orda_2的中间数为a_2,如果a_1 >= a_2,那么两个数组的中间数肯定在Orda_1数组前半段和Orda_2数组后半段中,接着再把Orda_1前半段和Orda_2后半段当做新的两个有序数组,重复前面的步骤,直至递归结束。 复杂度应该是log2的。附加问题:如果是多个数组呢? 阅读全文
posted @ 2014-01-06 10:42 ywl925 阅读(2481) 评论(0) 推荐(0) 编辑
摘要:距离本意就是两个目标的某一特征集从一个变成另一个需要的最小操作。广泛使用于相似度比较领域。机器学习中经常用的距离有:1. 欧氏距离 (Euclidean Distances)2. 曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离5. 标准化欧氏距离6. 马氏距离7. 夹角余弦( Cosine Dis... 阅读全文
posted @ 2013-12-30 16:41 ywl925 阅读(8889) 评论(0) 推荐(0) 编辑
摘要:矩阵的迹(trace)X∈P(n×n),X=(xii)的主对角线上的所有元素之和称之为X的迹,记为tr(X),即tr(X)=∑xii性质:(1)设有N阶矩阵A,那么矩阵A的迹(用tr(A)表示)就等于A的特征值的总和,也即A矩阵的主对角线元素的总和。1.迹是所有对角元的和2.迹是所有特征值的和3.某... 阅读全文
posted @ 2013-12-09 11:14 ywl925 阅读(13323) 评论(0) 推荐(0) 编辑
摘要:其实,我感觉,tf-idf是特殊情况下的BM25。BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。BM2... 阅读全文
posted @ 2013-09-12 10:48 ywl925 阅读(2078) 评论(0) 推荐(0) 编辑
摘要:著名的科学杂志《Nature》于1999年刊登了两位科学家D.D.Lee和H.S.Seung对数学中非负矩阵研究的突出成果。该文提出了一种新的矩阵分解思想――非负矩阵分解(Non-negative Matrix Factorization,NMF)算法,即NMF是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。该论文的发表迅速引起了各个领域中的科学研究人员的重视:一方面,科学研究中的很多大规模数据的分析方法需要通过矩阵形式进行有效处理,而NMF思想则为人类处理大规模数据提供了一种新的途径;另一方面,NMF分解算法相较于传统的一些算法而言,具有实现上的简便性、分解形式和分解结果上的可解释. 阅读全文
posted @ 2013-09-11 21:56 ywl925 阅读(8448) 评论(0) 推荐(0) 编辑
摘要:1. 随机模拟随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。随机模拟与计算机现代的统计模拟方法最早由数学家乌拉姆提出,被Metropolis命名为蒙特卡罗方法,蒙特卡罗是著名的赌场,赌博总是和统计密切关联的,所以这个命名风趣而贴切,很快被大家广泛接受。被. 阅读全文
posted @ 2013-06-05 14:31 ywl925 阅读(42254) 评论(3) 推荐(1) 编辑
摘要:关于Gibbs sampling, 首先看一下Wiki上的解释:Gibbs samplingorGibbs sampleris analgorithmto generate a sequence of samples from the joint probability distribution of two or morerandom variables. The purpose of such a sequence is to approximate the joint distribution, or to compute anintegral(such as anexpected va 阅读全文
posted @ 2013-03-19 14:25 ywl925 阅读(414) 评论(0) 推荐(0) 编辑
摘要:1. 堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1)父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2)每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆堆分为大顶堆和小顶堆,其中下图(1)中是大顶堆,(2)为小顶堆2. 堆排序的思想 利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这 阅读全文
posted @ 2013-01-22 10:17 ywl925 阅读(451) 评论(0) 推荐(0) 编辑

Copyright at 2012 yangwenlong