
算法学习
文章平均质量分 78
luchi007
这个作者很懒,什么都没留下…
展开
-
层次遍历二叉树的变种
还是回归到ITEYE,之前想用优快云的,但是受不了那个的响应速度,估计是太多的访问量了,好,废话少说,今天记录一下一朋友面试时候遇到的问题 问题描述如图: 具体说明:现在有一颗二叉树,如图中红线所示,现在需要将该二叉树按照黑色箭头的方式遍历题目描述很简单,也算是一个层次遍历的变种问题,我们知道,在层次遍历里面使用的是队列保存其子节点,但是在这道题里面显然是不能够的,因为访问的方向原创 2016-01-09 17:21:53 · 728 阅读 · 0 评论 -
MLA Review之三:朴素贝叶斯分类
朴素贝叶斯(Naive Bayes),贝叶斯概率论在整个统计学习上都是泰山北斗一样的存在,《Pattern Recognization and Machine Learning》这一扛鼎之作全书的思想其实就是贝叶斯概率论,简单的说就是先验代替后验。 我们先来给朴素贝叶斯找一点理论支持 贝叶斯概率公式:P(A|B)=P(A)*p(B|A)/P(B) ,而根据要求,我们需要做的是得...2016-02-18 23:33:18 · 226 阅读 · 0 评论 -
笔试题小解
原创 2015-08-15 11:58:23 · 104 阅读 · 0 评论 -
判断一个数组是不是排序二叉树后序遍历
2015-10-21 10:15:39 · 254 阅读 · 0 评论 -
内部排序(一)
2015-10-22 22:01:25 · 79 阅读 · 0 评论 -
层次遍历二叉树的变种
问题描述如图: 具体说明:现在有一颗二叉树,如图中红线所示,现在需要将该二叉树按照黑色箭头的方式遍历题目描述很简单,也算是一个层次遍历的变种问题,我们知道,在层次遍历里面使用的是队列保存其子节点,但是在这道题里面显然是不能够的,因为访问的方向不一致,我们可以想到,因为上图的遍历方式和我们日常用到的层次遍历正好相反,因此我们考虑使用栈这一个特殊的结构来解决问题 首先考虑使用一个栈,我们读到一个根节点后就依次把左子节点和右子节点放入到栈中,下次遍历的时候取出栈的栈首就行了,于是考虑成:2015-10-28 19:40:47 · 115 阅读 · 0 评论 -
遗传算法Java实现版
ttp://blog.youkuaiyun.com/emiyasstar__/article/details/6938608这篇博客的文章,同时将其使用C++实现的程序用Java再次实现了一遍,不足之处还请指出多包涵遗传算法:也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识遗传算法教科书上的步骤: 1.评估每条染色体所对应个体的适应度。 2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方2015-12-10 01:15:16 · 484 阅读 · 0 评论 -
遗传算法使用Java实现
details/6938608这篇博客的文章,同时将其使用C++实现的程序用Java再次实现了一遍,不足之处还请指出多包涵 遗传算法:也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识 遗传算法教科书上的步骤: 1.评估每条染色体所对应个体的适应度。 2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。 3.抽取父母双方的染色体,进行交叉,产生子2015-12-10 08:51:18 · 220 阅读 · 0 评论 -
Michael Nielsen 's 神经网络学习之一
2016-01-03 17:33:36 · 308 阅读 · 0 评论 -
隐马尔科夫模型(HMM)浅见
2016-01-09 12:27:44 · 280 阅读 · 0 评论 -
MLA Review之一: KNN算法
2016-02-16 17:13:48 · 176 阅读 · 0 评论 -
MLA Review之一: KNN算法
在看完Machine Learning in Action一书之后,觉得还是需要进行一些回顾,而且由于第一次看的时候Python基础并不牢固,所以这次也当做是Python一些知识回顾和运用的过程。在回到主题之前插几句话,MLA 一书并不是一本理论著作,相反是使用了一些现成的机器学习方法使用了Python在具体的问题上进行了运用,整书没有使用繁琐的公式和证明过程,属于一本实战类的非学院派著作...2016-02-16 17:13:48 · 220 阅读 · 0 评论 -
隐马尔科夫模型(HMM)浅见
隐马尔科夫模型,Hidden Marcov Model,是可用于标注问题的统计学习模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型,是一种比较重要的机器学习方法,在语音识别等领域有重要的应用。 本文不打算使用书面的一大堆公式来说明,本人对公式无感,能用例子说明的根本不想碰公式,不知道是不是霍金说过,多加一条公式就会损失一大片读者。PS:不管有没有说过了,是这个意思,wh...2016-01-09 12:27:44 · 298 阅读 · 0 评论 -
Michael Nielsen 's 神经网络学习之一
最近看到了一个比较好的神经网络和深度学习的网站,http://neuralnetworksanddeeplearning.com/,其实也不算是网站,算是Michael Nielsen的书籍电子版,写的算是比较生动简介,我这部分系列的文章算是一个跟书笔记,也算是半吊子翻译和代码注释工,恩,背景介绍到这里(大神直接看原文就行了,可以不用看后面的渣文了)。 没接触神经网络之前,我觉得神经网...2016-01-03 17:33:36 · 320 阅读 · 0 评论 -
内部排序(一)
最近在实验室恰逢师兄师姐们的校招季,会有很多面试笔试题考一些基本的算法,其中较为常用的就是排序算法,当然这里指的仅仅是内部排序,处于复习的目的,回顾了一下在大二时候学习的一些排序方法,算是一个记录 内部排序大概来说有10种,分别是,选择排序,冒泡排序,插入排序,归并排序,冒泡排序,基数排序,堆排序,桶排序,计数排序,布尔排序,今天主要说一说最常用的前面五种算法,也是面试或者笔试中较为常用的原创 2016-01-09 17:21:48 · 486 阅读 · 0 评论 -
判断一个数组是不是排序二叉树后序遍历
碰到一个题目,判断一个数组是不是排序二叉树的后序遍历,所谓排序二叉树,指的是对于二叉树中的根节点比左子节点数值大,同时比右子节点数值小,例如[5,7,6,9,11,10,8] 就是一个排序二叉树的后序遍历,而[7,10,8,9]则不是 解题思维:既然是后序遍历,则数组最后一个数值肯定是根节点,而从左到右,剩下数组元素的左侧值肯定小于根节点值,而其余的数组元素则大于根节点,例如[5,7,原创 2016-01-09 17:21:42 · 1056 阅读 · 0 评论 -
笔试题小解
最近碰到一个笔试题,大意是从给定的无序数组中选取几个数字使其和为给定的数字,下面以一个数组长为10的整型数组为例,选出其中四个数字之和为10。 算法使用C++编写,因为来的比较快,Java表达算法不是很给力感觉,代码如下 #include#define total 4 //所需要选取出来的个数 #define arrayLength 10 //数原创 2016-01-09 17:20:31 · 549 阅读 · 0 评论 -
KMP算法
#includeusing namespace std;void nextcount(int length,char ch[],int* & next)//计算next数组{int j=0,k=-1,len=length;next[0]=-1;while(j{if(k==-1||ch[j]==ch[k])//k复制为-1很重要,主要是为了前一原创 2013-06-02 23:21:19 · 769 阅读 · 0 评论 -
笔试题小解
最近碰到一个笔试题,大意是从给定的无序数组中选取几个数字使其和为给定的数字,下面以一个数组长为10的整型数组为例,选出其中四个数字之和为10。 算法使用C++编写,因为来的比较快,Java表达算法不是很给力感觉,代码如下 #include<iostream>#define total 4 //所需要选取出来的个数 #...原创 2015-08-15 11:58:23 · 153 阅读 · 0 评论 -
判断一个数组是不是排序二叉树后序遍历
碰到一个题目,判断一个数组是不是排序二叉树的后序遍历,所谓排序二叉树,指的是对于二叉树中的根节点比左子节点数值大,同时比右子节点数值小,例如[5,7,6,9,11,10,8] 就是一个排序二叉树的后序遍历,而[7,10,8,9]则不是 解题思维:既然是后序遍历,则数组最后一个数值肯定是根节点,而从左到右,剩下数组元素的左侧值肯定小于根节点值,而其余的数组元素则大于根节点,例如[5,7...2015-10-21 10:15:39 · 283 阅读 · 0 评论 -
内部排序(一)
最近在实验室恰逢师兄师姐们的校招季,会有很多面试笔试题考一些基本的算法,其中较为常用的就是排序算法,当然这里指的仅仅是内部排序,处于复习的目的,回顾了一下在大二时候学习的一些排序方法,算是一个记录 内部排序大概来说有10种,分别是,选择排序,冒泡排序,插入排序,归并排序,冒泡排序,基数排序,堆排序,桶排序,计数排序,布尔排序,今天主要说一说最常用的前面五种算法,也是面试或者笔试中较为常用...2015-10-22 22:01:25 · 99 阅读 · 0 评论 -
层次遍历二叉树的变种
还是回归到ITEYE,之前想用优快云的,但是受不了那个的响应速度,估计是太多的访问量了,好,废话少说,今天记录一下一朋友面试时候遇到的问题 问题描述如图: 具体说明:现在有一颗二叉树,如图中红线所示,现在需要将该二叉树按照黑色箭头的方式遍历题目描述很简单,也算是一个层次遍历的变种问题,我们知道,在层次遍历里面使用的是队列保存其子节点,但是在这道题里面显然是不能够的,因为访问的...2015-10-28 19:40:47 · 222 阅读 · 0 评论 -
Online learning系列:从RDA、FOBOS到FTRL
前言在一般的机器学习任务中,往往是通过batch的训练方法进行离线训练,然后线上进行预测,通常离线模型更新的时间在1天以上,这就使得模型不能及时学到实时的特征;另一方面,如果要进行实时训练的话,需要特征尽量稀疏,因为大规模的机器学习往往伴随着大量的参数,如果做不到特征计量稀疏的话,实时预估时延就会很大,这个时候就要用到online learning的一些方法,其目的是在提高训练参数稀疏性的同时,...原创 2018-12-05 11:41:54 · 1900 阅读 · 0 评论 -
遗传算法使用Java实现
最近需要学习神经网络,对于神经网络问题的求解其中需要用到遗传算法,所以今天学习了一下遗传算法,主要参看了 http://blog.youkuaiyun.com/emiyasstar__/article/details/6938608这篇博客的文章,同时将其使用C++实现的程序用Java再次实现了一遍,不足之处还请指出多包涵 遗传算法:也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过...2015-12-10 08:51:18 · 776 阅读 · 0 评论 -
MLA Review之三:朴素贝叶斯分类
就是贝叶斯概率论,简单的说就是先验代替后验。 我们先来给朴素贝叶斯找一点理论支持 贝叶斯概率公式:P(A|B)=P(A)*p(B|A)/P(B) ,而根据要求,我们需要做的是得出P(C1|X,Y)和P(C2|X,Y)的概率,其中P(C1|X,Y)的意思是根据特征值X,Y得到是C1的概率,后面是得到C2的概率,因此,我们只需要比较这两者的大小就知道结果是归为哪一类了,但是问题是这个根本不好计算,这时候贝叶斯准则就可以派上用场了:P(C1|X,Y)=P(C1)*P(X,Y|C1)/P(X,Y2016-02-18 23:33:18 · 169 阅读 · 0 评论