
algorithm
文章平均质量分 81
瞭望天空
人生苦短以苦为乐不求最好只求更好
展开
-
大话快排 和 归排的渊源
一:起因(1)包括冒泡算法、快排算法、插入排序算法等;还有基于外部排序的归并排序(以二路归并排序为例 )但是基本上在一个数量级上;(2)mergesort (归并排序) 可以应用在外部排序,这与基于内存的quicksort(快速排序)略有不同,他们的算法复杂度都可以达到O(nlogn)(3)mergesort 是稳定的排序算法,需要额外的空间开销O(n)原创 2015-01-06 17:28:24 · 1585 阅读 · 9 评论 -
大数据处理之道 (htmlparser获取数据<一>)
一:简介(1)HTML Parser是一个用于解析Html的Java的库,可采用线性或嵌套两种方式。主要用于网页的转换或提取,他有一些特性:过滤器filter,遍历器visitors,通常的标签tagName和易用的JavaBeans。它是一个快速,健壮,并严格测试过的组件。(2)个人理解:HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果,各个节点代表HTML中的标签和原创 2014-12-24 11:12:52 · 2724 阅读 · 5 评论 -
大数据处理之道 (MATLAB 篇<三>)
一:起因(1)最近一直在处理大数据,从MB ----> GB的变化,是一次质的飞跃,相应的工具也在变 从widows到linux,从单机单核 到 hadoop多节点的计算(2)问题来了,面对海量的数据,如何从中挖掘实用的信息或者发现潜在的现象,可视化工具可能是必不可少的 ;(3)可视化工具可以说百度一大篇,可是作为研究者的我们,程序猿的我们可能更希望能够抽象出一种数学模型,原创 2015-01-21 11:54:37 · 4673 阅读 · 4 评论 -
大数据处理之道(实验方法篇<一>)
(1)做大数据处理,清洗数据结束后,就是现象分析,再建立Model模型,在验证自己模型的有效性(2)大数据试验验证模型有效性的指标:Accuracy(正确率);Precision(查准率或准确率);Recall(查全率或召回率);F1-MeasureTrue Positives, True Negatives, False Positives, False Negatives 下面分别原创 2014-12-17 17:18:49 · 2319 阅读 · 7 评论 -
剪枝算法(算法优化)
一:剪枝策略的寻找的方法1)微观方法:从问题本身出发,发现剪枝条件2)宏观方法:从整体出发,发现剪枝条件。3)注意提高效率,这是关键,最重要的。总之,剪枝策略,属于算法优化范畴;通常应用在DFS 和 BFS 搜索算法中;剪枝策略就是寻找过滤条件,提前减少不必要的搜索路径。二:剪枝算法(算法优化)1、简介 在搜索算法中优化中,剪枝,就是通过某种判断,避免一些原创 2015-03-05 10:40:56 · 66071 阅读 · 3 评论 -
记忆化搜索(搜索+dp思想)
一:简介(1)记忆化搜索 即 搜索+动态规划数组记录上一层计算结果,避免过多的重复计算算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存;一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解原创 2015-03-08 20:38:16 · 10006 阅读 · 3 评论 -
回溯算法 和 贪心算法(全排列)
一:简介(1)回溯法 又称试探法回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法;基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。适用场景:当遇到某一类问题时,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分原创 2015-03-08 15:29:05 · 6965 阅读 · 2 评论 -
DFS + 剪枝策略
一:简介(1)相信做过ACM的人,都很熟悉图和树的深度优先搜索;算法里面有蛮力法 —— 就是暴力搜索(不加任何剪枝的搜索);(2)蛮力搜搜需要优化时,就是需要不停的剪枝,提前减少不必要的搜索路径,提前发现判断的过滤条件;(3)剪枝的核心问题就是设计剪枝判断方法,哪些搜索路径应当舍弃,哪些搜索路径不能舍弃(保留);(4)高效的剪枝过滤条件需要从局部和全局来考虑问题,发现内在的规律。原创 2015-03-06 09:29:49 · 15028 阅读 · 1 评论 -
大数据处理之道(十分钟学会Python)
一:python 简介(1)Python的由来Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情原创 2014-12-19 11:15:04 · 12691 阅读 · 9 评论 -
大数据之道 HMM系列
一:HMM解码问题(1)给定一个观察序列O=O1O2...OT,和模型μ=(A,B,π),如何快速有效地选择在一定意义下“最优”的状态序列Q=q1q2...qT,使该状态最好地解释观察序列。(2)最可能的隐藏状态序列(Finding most probable sequence of hidden states);对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望能找原创 2015-01-16 11:36:37 · 1484 阅读 · 0 评论 -
大数据处理之道 (MATLAB 篇(二))
一:起因(0)开始个人非常抵触MATLAB编程语言的,肯能是部分编程人员的通病 —— 学会c/c++或者java,就会鄙视其他的语言,懒得尝试其他语言。直到有一天……他发现,他或者她发现自己精通的这门语言实在是解决不了这个问题时,才做出改变。(1)最近一直在处理大数据,从MB ----> GB的变化,是一次质的飞跃,相应的工具也在变 从widows到linux,从单机单核 到 ha原创 2014-12-14 19:51:37 · 10947 阅读 · 0 评论 -
大数据处理之道 (Gibbs Sampling)
一:简介以及学习的途径(1)吉布斯采样(Gibbs Sampling)及相关算法 (学习向Gibbs sampling, EM, MCMC算法 等的好地方) 1) 推荐大家读Bishop的Pattern Recognition and Machine Learning,讲的很清楚,偏理论一些; 2) 读artificial Intelligence,2、3版原创 2014-12-27 20:59:07 · 4347 阅读 · 2 评论 -
大数据处理之道(实验方法<二>)
一:交叉验证(crossvalidation)(附实验的三种方法)方法简介 (1) 定义:交叉验证(Cross-validation)主要用于建模应用中,例如PCR(Principal Component Regression) 、PLS(Partial least squares regression)回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的原创 2014-12-18 11:38:26 · 2417 阅读 · 4 评论 -
大数据处理之道 (MATLAB 篇)
一:起因(1)最近一直在处理大数据,从MB ----> GB的变化,是一次质的飞跃,相应的工具也在变 从widows到linux,从单机单核 到 hadoop多节点的计算(2)问题来了,面对海量的数据,如何从中挖掘实用的信息或者发现潜在的现象,可视化工具可能是必不可少的 ;(3)可视化工具可以说百度一大篇,可是作为研究者的我们,程序猿的我们可能更希望能够抽象出一种数学模型,对现实的现象原创 2014-12-13 22:46:25 · 5934 阅读 · 0 评论 -
大数据之道 HMM系列<二>(成长)
一:HMM解码问题(1)编程深处无非就是算法和结构,以及各种架构和版本的管理(如Git管理),因此作为程序员算法这一关是绕不过去的;(2)关于算法,个人比较崇尚的一本书是《算法导论》和ACM实战系类的算法培训;(3)对于自然语言处理领域或者部分机械学习领域的算法,HMM模型是非常经典的算法之一,非常适合初学者学习和研究;(4)HMM模型μ=(A,B,π),的状态是不可见原创 2015-01-19 10:45:33 · 1449 阅读 · 4 评论 -
大数据之道 BitMap (按位存取)
一:起因(0)大数据的预处理那一篇博客,仅仅讲解了如何处理数据,以及清洗数据的原则;并没有讲解大数据处理过程中,数据在内存中的存储问题,这正是本文要关注的重点。(1)所谓大数据,就是数据量非常的大,到了TB 甚至 PB数量级,处理大数据可以分为以下方法:(2)运用现在非常火的Hadoop 和 spark 之外(其实是一个非常好的成熟的分布式框架 ---- 用的也是分治的思想);(3原创 2015-01-26 11:35:18 · 5551 阅读 · 6 评论 -
大话 函数指针 和 枚举这对鸳鸯
一:起因(1)函数指针是指向函数的指针变量,即本质是一个指针变量,是一个指向函数(可能是代码区)的首地址的指针,正如我们都知道,数组名就是指向数组第一个元素的常量指针,对于一个函数而言,函数名也是指向函数第一条指令的常量指针。大话 回调函数 和 枚举(2)而回调函数就是C语言里面对函数指针的高级应用,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给原创 2015-01-10 21:36:06 · 1539 阅读 · 3 评论 -
大数据处理之道 (htmlparser 过滤器<二>)
一:起因(1)最近用于任务需要一直在爬取网页HTML的内容,与类似于爬虫的HtmlParser接触的比较多,爬取无非就是过滤自己想要的信息,因此Filter是核心,当然String类中的matches(regex)函数和contains(str)函数也是非常有用的(2)经常和爬虫打交道就会分析各式各样的网站设计以及布局:用的设计的非常有规律,如QQ空间,微博信息等爬取非常简单(当时要想翻页原创 2014-12-25 16:58:45 · 2001 阅读 · 3 评论 -
大数据处理之道(预处理方法)
一:为什么要预处理数据?(1)现实世界的数据是肮脏的(不完整,含噪声,不一致)(2)没有高质量的数据,就没有高质量的挖掘结果(高质量的决策必须依赖于高质量的数据;数据仓库需要对高质量的数据进行一致地集成)(3)原始数据中存在的问题:不一致 —— 数据内含出现不一致情况重复不完整 —— 感兴趣的属性没有含噪声 —— 数据中存在着错误、或异常(偏离期望值)的数据高维度原创 2014-12-23 10:50:50 · 14886 阅读 · 2 评论 -
优化算法 无处不在
一:起因(0)优化算法(Optimization Algorithm),即求目标函数的最优值问题;如何评价你的当前解的值是最优的?这就需要构造评价函数;如何从当前的位置(解)更新到新的搜索空间?这就需要变换的形式的定义。(1)优化算法无处不在 —— 实际生活中的 物资调配,一定的生产资料如何得到最大的产出,一定的投资如何得到最佳的收益等等,都可以转化为最优化问题的求解;就连我们平常生活中的原创 2015-04-17 15:51:45 · 1517 阅读 · 1 评论