数据结构-算法
文章平均质量分 76
千丈之松
开放、平等、协作、分享;
现代互联网精神。
展开
-
字典树实现搜索
5| 安(1-false) 手(1-true) 杀(1-false) 成(1-false) 点(1-false) 云(1-true) 的(1-false) 杀(1-false) 不(10-false) 冷(1-false) 太(1-false)7| 的(1-false) 的(1-false) 尖(1-false) 不(1-false) 漠(1-true) 冷(9-false) 了(1-true)原创 2023-02-07 21:33:32 · 746 阅读 · 0 评论 -
归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
1 概念 归一化:1)把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 标准化:在机器学习中,我们可能要处理不同种类的资料,例如,音讯和图片上的像素值,这些资料可能是高维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平原创 2020-07-15 14:12:58 · 410 阅读 · 0 评论 -
搜索引擎相关度算法 -BM25 JAVA实现
bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法。它的出现主要是解决TF-IDF算法中 TF的影响可无限增大的不足,本质上BM25是基于TF-IDF并做了改进的算法。如图所示,传统的TF-IDF算法中 词频的影响程度是无限增大的,换而言之就是关键词出现的越频繁,TF-IDF相关度就越高。稍微有点简单粗暴;而BM25算法就是让词频的影响到达一定程度后趋于收敛,相比而已更加符合自然语言相关程度的实际逻辑。参考:《搜索中的权重度量利器: TF-IDF和BM.原创 2020-05-28 21:55:07 · 833 阅读 · 0 评论 -
技术交流,扫描关注技术公众号!
精选各领域互联网技术, 推送前后端、算法、人工智能领域优质技术文章!! 本公众号由阿里、网易、美团等团队组成精选各领域互联网技术, 推送前后端、算法、人工智能领域优质技术文章!! 本公众号由阿里、网易、美团等团队组成。...原创 2018-11-20 20:40:13 · 388 阅读 · 0 评论 -
倒排、空间、BTREE、HASH索引
倒排索引数据结构分为词表和倒排表两部分。词表:FST。类似于字典树(适合英文),共享前缀,内存消耗小; https://blog.csdn.net/njpjsoftdev/article/details/54015485倒排表:文档号集合。数据压缩+有序链表+跳表 https://blog.csdn.net/hu948162999/article/details/79042439 ...原创 2018-07-31 20:29:24 · 1330 阅读 · 0 评论 -
倒排索引查询原理
Lucene 查询过程在lucene中查询是基于segment。每个segment可以看做是一个独立的subindex,在建立索引的过程中,lucene会不断的flush内存中的数据持久化形成新的segment。多个segment也会不断的被merge成一个大的segment,在老的segment还有查询在读取的时候,不会被删除,没有被读取且被merge的segement会被删除。这个过程类似...原创 2018-08-03 13:58:02 · 24504 阅读 · 3 评论 -
BST、AVL、B-TREE、B+TREE、红黑树
1:BST 二叉搜索树(左子树值<=根值<=右子树)1.1 定义1 首先它也是一个二叉树,故满足递归定义;2 其次每个节点只存在一个值;3 需满足左子树值<=根值<=右子树,BST的中序遍历必定是严格递增的。在实际场景中,用的最多的是二叉平衡树,一般操作的执行时间福再度为O(lgn)。2.但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间...原创 2018-08-04 10:19:05 · 618 阅读 · 0 评论 -
红黑树
介绍红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。 阅读以下需要了解普通二叉树的插入以及删除操作。 红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下...转载 2018-05-31 11:27:43 · 197 阅读 · 0 评论 -
lucene倒排索引表搜索原理
什么是正排索引?什么是倒排索引?搜索的过程是什么样的?会用到哪些算法与数据结构? 前面的内容太宏观,为了照顾大部分没有做过搜索引擎的同学,数据结构与算法部分从正排索引、倒排索引一点点开始。提问:什么是正排索引(forward index)?回答:由key查询实体的过程,是正排索引。用户表:t_user(uid, name, passwd, age, sex),由uid查询整行的过程,就是正排索引查...原创 2018-01-12 11:54:27 · 4022 阅读 · 1 评论 -
一致性哈希
基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际转载 2018-01-12 11:29:57 · 252 阅读 · 0 评论 -
整理的8种排序算法的总结和比较
快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。 (1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用递归排序数列。 快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。原创 2014-10-21 19:14:19 · 1881 阅读 · 0 评论 -
一致性哈希
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1转载 2016-12-27 18:29:26 · 246 阅读 · 0 评论