【期外】 (一)关于LSH :局部敏感哈希算法

  LSH是我同学的名字,平时我会亲切的称呼他为离骚,老师好,左移(leftshift),小骚骚之类的,最近他又多了一个新的外号:局部敏感哈希(Locally sensitive hashing)。

  好了,废话不多说直接转入正题:

『写在前面』局部敏感哈希是一种NOIP禁用的算法(因为使用了随机数),若不感兴趣就无需往下看了。


『什么是LSH?』

 

  LSH就是局部敏感哈希,听着名字就知道和普通的哈希不一样,具体哪里不一样,就先吊吊你的胃口,稍后再说。先来了解LSH的各方面性能:

  首先先来思考一个问题:

如果给你一堆数字,然后查找一个数是否在这堆数中存在或者找到一个最相似的数字,你会怎么办?

  Answer:

1)首先,我们一定会想到线性查找,直白的来说,这简直就是最慢的一种方法,直接用数组存好后,一个一个来判断,当数据规模小的时候还好,但是,到了规模很大的时候,比如说有1亿个数据时,还能在规定的时间内找到吗?

2)其次,我们会想到二分查找,这种算法运用了分治的思想,将O(n)的时间复杂度降低到了O(log n)的时间复杂度,不过还需要排一次序,但是也费不了多少时间,这种方法相对来说是很可观的,但是有时还满足不了我们的需求。

3)这种想法也和 2)差不了多少,但是功能更强大,能够实现维护,插入,删除等一系列操作,没错,它就是二叉查找树,一种用树结构存储的方法,但是有时却很慢,放张图,细细体会吧~

 比如说要查找4,那么就一定会全部遍历一遍,显然还是二分查找更快。

4)红黑树&其他平衡树:平衡树的种类很多,这些树能有效避免上图的情况,小编曾写过一篇红黑树博客,想看戳这里,里面也有详细的二叉查找树讲解。

5)好用的当然在后面——哈希算法,这种算法只要操作一遍数后,就可以做到O(1)的速度查找,但是问题却在于如何处理哈希冲突(有关哈希的讲解戳这里),适当的mod正是关键,但是往往我们处理不好这个问题,引起很多问题,比如2000和1000同时对10取模后将都是0,原本差别很大,但是现在没有了差别;再比如1008和1000对10取模后分别是8和0,原本差别不大,但是现在差别相对变大了很多,因此便请出了局部敏感哈希

   局部敏感哈希最大的特点在于保留原来的特性,虽然不一定能完全避免哈希冲突,但是能比一般哈希保留的更好,保持最大可能的相似度。

『哈希思想及实现』小编表示这是一个高冷的话题,离我太遥远,等我学的更好时会自己写的;现在就先放上大牛的博客吧:局部敏感哈希。

转载于:https://www.cnblogs.com/TFLS-gzr/p/11120479.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 数据库连接实例,Java连接各种数据库的实例

Java连接各种数据库的实例1、Oracle8/8i/9i数据库(thin模式)以下为引用的内容:Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url"jdbc:Oracle:thin:localhost:1521:orcl";//orcl为数据库的SIDString user"test…

python2和python3解释器的区别

python2和python3解释器的区别 1.input的区别 Python2中有raw_input和input. 他的raw_input就相当于Python3中的input,他们把用户输出的数据全部转化为str字符串类型. 他的input让用户输出的是用户输出数据的原始类型,用户输入int类型,他显示的也是int类型,以此类推 2.整型的区…

用于主题检测的临时日志(c48534c5-686f-461e-811f-a15a2f265756 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...

这是一个未删除的临时日志。请手动删除它。(34a657d4-0fcd-421a-9d75-e80f31602ac5 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)转载于:https://www.cnblogs.com/wangshuai/archive/2010/07/31/1789347.html

mysql n 存储结构,MySQL体系结构和存储引擎概述

一、定义数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合。数据库文件可以是frm、MYD、ibd 结尾的文件。从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器的数据集合;实例&#xff1…

常见排序查询算法Java代码实现

1. 排序算法代码实现 /*** ascending sort* 外层循环边界条件:总共需要冒泡的轮数--每一轮都将最大或最小的数冒泡到最后* 内层循环边界条件:冒泡数字移动的边界--最终数字需冒泡到此处* 时间复杂度:O(n^2)* param arr*/ public static vo…

java jsp 传递参数的方法,jsp传参方法小结

一、jsp页面到jsp页面##1.从a.jsp传递//将参数值为aaa,参数名test的参数传递到b.jsp页面中2.在b.jsp接收System.out.println("test的值是"test); %>二、jsp页面到servlet##1.首先需要新建一个Servlet,包的层次结构如下:demo--sr…

工作403-修改input里面的文本框值

1.style中需要作如下修改<style>input::-webkit-input-placeholder {/* placeholder颜色 */color: #aab2bd;/* placeholder字体大小 */font-size: 12px;} </style>2.HTML中的代码如<input type"text" placeholder"输入你想要查找的内容" …

Microsoft Expression Studio 4 Ultimate 中文版发布

Expression Studio Ultimate 是供生成网站以及 Windows 客户端应用程序和丰富媒体内容的专业设计人员使用的一系列工具&#xff0c;可以将创作人员引领到一个全新的创作天地。无论您是准备设计基于标准的网站&#xff0c;还是设计内容精美&#xff0c;令人赏心悦目的桌面或者 S…

Struts2基础

1.Struts2 Actions动作 Actions是Struts2框架的核心&#xff0c;因为它们适用于任何MVC&#xff08;Model View Controller&#xff09;框架。 每个URL映射到特定的action&#xff0c;其提供处理来自用户的请求所需的处理逻辑。但action还有另外两个重要的功能。 首先&#xf…

工作404-判断浏览器函数

// 判断浏览器函数if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {} else {window.location.href "../product_new.html&qu…

WebService简单示例

记录一下&#xff0c;以备后用&#xff1a;代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Services;usingSystem.Web.Services.Protocols;namespaceNiunan.ZZ.JKDA.Web.webservice{ ///<summary>///GGService 的…

php server 性能,PHP中:$_SERVER[‘REQUEST_TIME’]和 time()有什么区别,那个性能快!...

简单的说time()与$_SERVER["REQUEST_TIME"]都是获得时间的&#xff0c;但time返回当前的 Unix 时间戳而$_SERVER["REQUEST_TIME"]得到请求开始时的时间戳&#xff0c;稍有区别。1. time() 获取当前的系统时间戳inttime( void ) :返回自从 Unix 纪元(格林威…

Delphi捕捉DLL执行所抛出的异常。

先来说一下我如何写我的Dll文件的。 先看代码&#xff1a; 代码 librarypub_form;usesSysUtils, Classes, Windows, Forms, Parameter_Object, frm_LoginU in..\公用库单元\frm_LoginU.pas{frm_Login}, pub_Event in..\公用库单元\pub_Event.pas, Dll_LIB_ConstU in..\公…

docker版本Mysql安装

docker部署mysql 1. 下载 [rootlocalhost my.Shells]# ./dockerStart.sh start or stop start Redirecting to /bin/systemctl start docker.service [rootlocalhost my.Shells]# docker pull mysql Using default tag: latest Trying to pull repository docker.io/library/…

matlab 左上角,matlab – 访问’uitable`的左上角

在uitable中,我想访问行标签上方的单元格以及列标签的左侧.我想在该领域加上一些文字.可以这样做吗&#xff1f;最佳答案 简短的回答是肯定的,但这有点痛苦.您可以添加文本uicontrol并正确定位.一个功能的例子&#xff1a;% Dummy figure and tablef figure;d gallery(intege…

eclipse MyEclipse中安装 spket插件 js文件内容字体变小解决方案

在 eclipse 、 MyEclipse 中用 Spket 插件打开 js 文件后&#xff0c;发现字体非常小。&#xff08;在每次重启eclipse时会出现&#xff09;这个时候你只需要找到 Window->General->Appearance->Colors and Fonts ->Basic-Text Font ,点击右边的change&…

planning algorithms chapter 2

planning algorithms chapter 2 :Discrete Planning 离散可行规划导论 问题定义 在离散规划中&#xff0c;状态是“可数”的&#xff0c;有限的。 离散可行规划: 非空状态空间 X对于每个状态 x&#xff0c;存在一个有限的动作空间 U(x)对于每个状态和动作空间&#xff0c;存在状…

前端手动封装数组的foreach,map,filter,every,some,Reduce,reduceRight方法

我是歌谣 放弃很容易 但坚持一定很酷 公众号小歌谣 谢谢关注 前言 Foreach Array.prototype.myForEach function (cb) {var _arr this;var _len _arr.length;var _arg2 arguments[1] || window;for (var i 0; i < _len; i ) {cb.apply(_arg2, [_arr[i], i, _arr]);} …