技术头条(投递你的文章)     搜索本站     邮件订阅     微信号:IT技术博客大学习
您现在的位置首页 --> 算法
        请你把一个圆形的比萨分成若干个大小形状都相同的部分,使得其中至少有一部分不含有比萨的边儿。换句话说,你需要把一个圆分成若干个全等的部分,其中至少有一个部分不包含任何一段圆周。
     一般来说,如果你希望数据能够被快速的找到,那么最主要的两种技术手段就是二分查找,或者使用Hash函数。今天来介绍一个最简单的数据结构,有序数组来组织的二分查找,当然,我的主要目标是介绍前人解决问题的思路,而非算法本身,所以不会尝试用比较难理解的公式和伪码来描述问题。
    计算机就是个分型的系统,而映射这种数据结构,是计算机中非常基础和常见的一种数据结构, 从cpu到文件存储,再到分布式文件存储,其核心都是映射。
    一谈到二叉树,相信很多人一定会有一个疑问: 这玩意儿有什么用? (当然这么多人里面肯定包括大学时候的我- -) 其实,我个人觉得这并不怪我们,是教科书写的有点问题,开始的时候没有给到大家明确的学习意义,开始就去讲如何遍历,如何从树变森林,如何做树的前序中序后序遍历。但这样的学习会让整个过程很无聊,太容易让人放弃了。所以在今天,请允许我用另外的方式来重新讲解一下吧~
    之前我曾写过一系列关于基数估计(cardinality estimation)算法的文章,文中介绍了一些常用基数估计算法的原理。最近对常用的基数估计算法做了一些实验,这篇文章描述了实验结果,包括这些算法的估计效果及误差状况,主要通过图表展示。通过观察实验数据和可视化图表可以加强对各种基数估计算法理论分析的直观理解。文章首先会对实验做一些说明,然后通过图表详细展示实验数据,最后会根据实验结果总结一些实践中有用的结论。同时文末会附上相关的参考文献及原始数据。
    这次我将跟大家探讨一下Reddit的文章排名算法和评论排名算法的工作原理。Reddit使用的算法也是很简单,容易理解和实现。这篇文章里我将会对其进行深入分析。
    这篇文章我要向大家介绍Hacker News网站的文章排名算法工作原理,以及如何在自己的应用里使用这种算法。这个算法非常的简单,但却在突出热门文章和遴选新文章上表现的异常优秀。
    在早期的小型图像编辑软件中,考虑到时间空间的限制,再加上算法本身的难度,很多看似非常简单的功能都无法实现。比如说,很多图像编辑软件只允许用户把所选的内容旋转 90 度、 180 度或者 270 度,不支持任意度数的旋转。毕竟,如果我们只是旋转 90 度的整数倍,那么所有像素仅仅是在做某些有规律的轮换,这甚至不需要额外的内存空间就能完成。但是,如果旋转别的度数,那么在采样和反锯齿等方面都将会有不小的挑战。
    本文将继续介绍基于Solr的地理位置搜索的第二种实现方案: CartesianTiers+GeoHash。从上文可以看到完全基于GeoHash的查询过滤,将完全遍历整个docment文档,从效率上来看并不太合适,所以结合笛卡尔层后,能有效缩减少过滤范围,从性能上能很大程度的提高。
     本文将继续围绕Solr+Lucene使用Cartesian Tiers 笛卡尔层和GeoHash的构建索引和查询的细节进行介绍。 在Solr中其实支持很多默认距离函数,但是基于坐标构建索引和查询的主要会基于2种方案: (1)GeoHash; (2)Cartesian Tiers+GeoHash; 而这块的源码实现都在lucene-spatial.jar中可以找到。接下来我将根据这2种方案展开关于构建索引和查询细节进行阐述,都是代码分析,感兴趣的看官可以继续往下看。
    在Solr中基于空间地址查询主要围绕2个概念实现: Cartesian 、Tiers 、笛卡尔层。 Cartesian Tiers是通过将一个平面地图的根据设定的层次数,将每层的分解成若干个网格。
    页面停留时间表示用户的一次浏览行为花了多少时长在这个页面上。直接体现出用户愿意花多长时间在你的页面上,所以通过这个指标,可以衡量一些网站页面、网站产品定位和设计的优劣。因此,页面停留时间是网站优化的一个较为重要和常见的参考指标。
    HAProxy还有许多结构体,例如proxy、server、listener等等,不过,这些结构体,要么比较容易看懂,要么网上已经有比较齐全的资料,要么可以陆续在后面的文章中单独说明。而session、task、stream interface、buffer和pipe这五个结构体,连同第一篇介绍的ebtree,向我们展现了HAProxy作为一个高性能代理服务器的底层数据组织和一些重要的处理细节。
    上一节我们用了一个简单的例子过了一遍gensim的用法,这一节我们将用课程图谱的实际数据来做一些验证和改进,同时会用到NLTK来对课程的英文数据做预处理。
    目前中文分词的一般做法是将分词当作序列标注问题来处理,这种做法首先标注好一批训练语料,然后用统计模型进行训练和标注。常用的统计模型包括隐马尔可夫模型(HMM)、最大熵模型(MEM)以及条件随机场模型(CRF)。因为CRF比HMM和MEM有更弱的上下文无关假设,所以CRF一般能取得更好的分词结果。
    二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。
        通信复杂度(communication complexity)主要研究这么一类问题: A 持有数据 x , B 持有数据 y ,他们想要合作计算某个关于 x 和 y 的二元函数值 f(x, y) ,那么在渐近意义下,两人至少需要传输多少 bit 的数据。最近着迷于通信复杂度,看到了几个与通信复杂度有关的问题,和大家分享一下。
    因为cpp没有拉圾回收的机制,所以,cpp程序经常出现各种内存泄漏,一般而言,指针的new和delete需要对应,不然就会出现很严重的问题。而智能指针就是帮助我们自动管理指针的一种方式,比较常用的就是利用引用计数的方式,实现,当变量出了作用域时自动删除,当还有其他变量持有指针时不会删除。
    最近MPI集群有用户抛出这样一个问题,当MLR算法或PLSA算法与PLDA同时运行在某个节点时,MLR的效率会降低二十倍,PLSA的效率也会下降非常厉害,而与其它的算法重合时,即使两个算法的程序都可以所有CPU吃满,效率也未必会下降如此厉害,用户怀疑是我的PLDA代码设计的问题,这个问题也引起了大家比较激烈的讨论。
    HashMap主要有插入、删除、查找以及ReHash四种基本操作。一个典型的HashMap实现,会用到一个数组,数组的每项元素为一个节点的链表。对于此链表,我们可以利用文中提到的操作方法,执行插入、删除以及查找操作,但对于ReHash操作则比较困难。
[共582篇文章][第6页/共30页][|<][2][3][4][5][6][7][8][9][10][11][>|]
© 2009 - 2017 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号