随笔分类 - Algorithm
经典算法及代码实现
摘要:今天整理一下EM算法,当年在学校学这个的时候真是一脸懵逼啊,还好考的不难:) EM(Expectation-Maximization)算法,从名字中就可以知道他是有两部分构成的求期望和求极大似然,论文原文放在这里需要的自取。算法通过迭代的方式进行E步和M步,从而更新模型参数,直到收敛。 预备知识 已
阅读全文
摘要:百度百科定义 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 如何构造一个哈夫曼树(贪婪方法),每次找最小的两个权值的树,合并起来构成新的树,
阅读全文
摘要:之前没见过遇到了就记录一下,直接看题和解析就能懂, 写出a(b-cd)+e-f/g*(h+i*j-k)的逆波兰表达式。** 根据运算符优先级添加括号。 a*(b-cd)+e-f/g(h+ij-k) = a * (b - (c * d)) + e - (f / g) * (h + (i * j) -
阅读全文
摘要:关于二叉树的概念 这里允许我简单搬运一下百度百科的定义 二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
阅读全文
摘要:0、顺序查找 这个不用多说了,一个个比较过去吧。 1、二分查找(Binary search) 二分查找也叫折半查找,可以说是最实用的查找算法之一,前提是查找对象是经过排序的序列。原理也十分简单,每次chec中间的值,如果比我要找的值大,那我就往前找,比我的key小,我就往后找,这样每次折半查找下来,
阅读全文
摘要:算法思路 Knuth-Morris-Pratt(KMP)算法是解决字符串匹配问题的经典算法,下面通过一个例子来演示一下: 给定字符串"BBC ABCDAB ABCDABCDABDE",检查里面是否包含另一个字符串"ABCDABD"。 从头开始依次匹配字符,如果不匹配就跳到下一个字符 直到发现匹配字符
阅读全文
摘要:简介 最近在学习启发式搜索,看到一篇关于A*算法的文章,我觉得写得很好,就搬运过来学习记录一下,英文版原文在此有兴趣的可以看一下。 搜索区域(The Search Area) 我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B ,中间蓝色是墙。
阅读全文
摘要:主定理(the Master Theorem) 例子 T(n) = 2T(n/2) + n 因为这里 a=2, b=2, d=1 所以复杂度为 O(nlogn) T(n) = 4T(n/4) + n 因为这里 a=4, b=4, d=1 所以复杂度为 O(nlogn) T(n) = T(n/2) +
阅读全文
摘要:介绍 作为算法入门,排序算法是最最基础的部分,今天整理一下7个经典的排序算法,包括insertionSort,ShellSort,BubbleSort,QuickSort,SelectionSort,HeapSort,MergeSort,并对他们的复杂度做一个对比总结。顺便推荐一个网站Compari
阅读全文

浙公网安备 33010602011771号