上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页
摘要: 1. HMM三个典型问题的定义 三个问题的共同点就是已知模型的一部分,求另一部分,不同点就是已知的部分和要求的部分不一样。 评估:已知模型参数,计算某一特定输出序列的概率。通常使用forward算法解决。 解码:已知模型参数,寻找最可能的能产生某一特定输出序列的隐含状态的序列。通常使用Viterbi算法解决。 学习:已知输出序列,寻找最可能的状态转移以及输出概率。通常使用Baum-Welch算法以及Reversed Viterbi算法解决。2. 词性标注与HMM三个典型问题 在词性标注问题中,已知单词序列,需要给出对应的词性序列。单词序列是可观察的,因此单词作为观察状态,词性作为隐藏状态... 阅读全文
posted @ 2011-08-21 16:48 xiaodongrush 阅读(1394) 评论(0) 推荐(0) 编辑
摘要: 1. 简述现在本人对隐马尔可夫模型(HMM)的理解十分有限,本文主要是学习笔记的形式。2. HMM基本原理 HMM是一个双重随机过程,准确一点说就是两个状态集合,三个矩阵。 两个状态集合:隐藏状态(S1,S2,S3,...)和观察状态(O1,O2,O3,...)。HMM的假设是隐藏状态之间是一个马尔科夫链,即对应一个初始状态矩阵(P)和状态转移矩阵(A)。假设观察状态由隐藏状态决定,即混淆矩阵(B)。 一般的,用λ=(A,B,P)三元组表示一个隐马尔可夫模型。隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。 注意:矩阵A是一个方阵,反映的是 阅读全文
posted @ 2011-08-21 10:26 xiaodongrush 阅读(2782) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 一道经典的笔试题目:一根木棒折为三段,这三段可以组成一个三角形的概率,要求尽可能多的解答。 本文总结一下,现在我对这道题的理解,一个数学解法,两个编程解法,其中一个编程解法是反面例子哦。2. 数学解法 设木棒长度为L,三段长度分别为x,y,L-x-y,其中0<x<L,0<y<L,0<x+y<L。 折三段以后要保证能组成三角形,需要满足三角形判定定理,即两边之和大于第三边,即 x+y>L-x-y, y+L-x-y>x, x+L-x-y>y, 化简后为x+y>L,x<L/2,y<L/2 P(三段可以组成三角形概率) 阅读全文
posted @ 2011-08-20 17:29 xiaodongrush 阅读(6011) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 从一个字符串中,删除另一个字符串中出现过的所有字符。基本上比较简单,主要就是要保存的字符放到合适的位置,要删除的字符最后要释放掉,还有就是'\0'的处理。2. 代码#include<iostream>usingnamespacestd;boolfind(constchar*cs,constcharch){assert(cs!=0);while('\0'!=*cs&&ch!=*cs)cs++;if('\0'==*cs)returnfalse;elsereturntrue;}voiddelete_str(cha 阅读全文
posted @ 2011-08-19 20:56 xiaodongrush 阅读(433) 评论(1) 推荐(0) 编辑
摘要: 1. 简述 本文主要说明一些常用的内部排序算法的分类、复杂性和稳定性。主要基于现在的理解和学习,详细准确的复杂度可以参见维基百科等比较权威的网站,对于一些算法的不同实现,复杂度也不同,这里给出的复杂度都是相对较好的算法的复杂度。2. 分类3. 复杂性和稳定性冒泡排序:在已经有序的情况,取得O(N)的复杂度。快速排序:每次递归都是N的复杂度,递归次数根据序列有关系,当已经有序的情况下,递归N次,时间复杂度为O(N*LogN) 插入排序:在已经有序的情况,取得O(N)的复杂度。希尔排序:最差时间和平均时间都要根据步长数组来判断,现在最好算法的最差时间复杂度,为O(N*LogN)。空间主要是步长数组 阅读全文
posted @ 2011-08-19 10:54 xiaodongrush 阅读(8987) 评论(3) 推荐(0) 编辑
摘要: 1. 简述 KMP是经典的笔试题目之一。昨天复习了一下,主要有一下几点需要注意。 首先,原理上,利用最长的相等前端距离和后端距离(详见C语言名题精选百则6.4节)。其次,有两类代码,一类实现fail函数,另一类实现next函数。· fail数组的含义是,当前元素匹配失败了,那么[开始元素,当前元素]范围内,最长前端的下标。假设最长相等前端后端分别为pat[0]-pat[s],pat[i-s]-pat[i], fail[i]=s。很多情况下,没有最长前端,所以可能有很多-1出现(没有的时候,用-1代替)。在kmp主函数中,如果text[t]!=pat[p],那么p=fail[p-1]+ 阅读全文
posted @ 2011-08-15 11:34 xiaodongrush 阅读(1059) 评论(3) 推荐(1) 编辑
摘要: 1. 简述 昨天在看海量数据处理的题目,其中有一道题用的就是2-bitmap,今天学习一下bitmap,主要参考资料就是百度百科。2. 定义 bitmap是通过1个位表示一个状态,比如:int类型有2^32个数字,即4G个数字,那么每个数字一个状态,就是2^32个bit,即512 MB。3. 应用 · 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中 首先,将这40亿个数字存储到bitmap中,然后对于给出的数,判断是否在bitmap中即可。 · 使用位图法判断整形数组是否存在重复 遍历数组,一个一个放入 阅读全文
posted @ 2011-08-14 10:39 xiaodongrush 阅读(1969) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 注意下标、参数传递。只要把二维中下标,转化为一维数组的下标即可。2. 核心代码 二维的公式是:c[i][j] += a[i][k] * b[k][j], k=0,1,2,...,N-1 一维的公式: c[i*N+j] += a[i*N+k] * b[k*N+j], k=0,1,2,...,N-1template<classT>voidMaxtrixMultiply(constT*a,constT*b,T*c,unsignedintN){for(inti=0;i<N;i++){for(intj=0;j<N;j++){intc_index=i*N+j;inta_ 阅读全文
posted @ 2011-08-13 16:48 xiaodongrush 阅读(3873) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 已知某程序的时间复杂度的递推公式为:T(n)=25T(n/5)+n^2,求T(n)?2. 主定理 3. 分析 根据主定理,题目中的f(n)=n^2正好第二种情况,结果为T(n)=(n^2) * logn 如果题目稍作修改:T(n)=25T(n/5)+n^3,则为第三种情况,结果为n^3 T(n)=25T(n/5)+n^1.5,则为第一种情况,结果为n^24. 参考主定理和递归式复杂度分析 http://blog.kingsamchen.com/archives/524 阅读全文
posted @ 2011-08-13 16:29 xiaodongrush 阅读(10316) 评论(0) 推荐(4) 编辑
摘要: 1. 题目 给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大。例如: 整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为20。 编程之美上的一道题,也是常考题目之一。2. 解答 属于基础动态规划。递推公式如下:假设序列为:a[0],a[1],...,a[n-1], 定义两个新的序列:p[0],p[1],...,p[n-1],和q[0],q[1],...,q[n-1]。 p[k]表示从a[0]到a[k]的范围,包含a[k]的最大的子序列。显然p[k]=p[k-1]>0?(p 阅读全文
posted @ 2011-08-13 16:28 xiaodongrush 阅读(1144) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页