深入理解simhash原理

2021-08-04 14:18:14 字數 969 閱讀 7531

lsh(locality sensitive hashing)是區域性敏感性hashing,它與傳統的hash是不同的。傳統hash的目的是希望得到o(1)的查詢效能,將原始資料對映到相應的桶內。

lsh的基本思想是將空間中原始資料相鄰的2個資料點通過對映或者投影變換後,這兩個資料點在新的空間中的相鄰概率很大,不相鄰的點對映到同乙個桶的概率小。我們可以看到將乙個在超大集合內查詢相鄰元素的問題轉化為了在乙個很小的集合內查詢相鄰元素的問題,顯然計算量下降了很多。下面借用一幅圖來表示:

lsh滿足如下條件: if

d(x,

y)≤d

1,th

enp(

h(x)

=h(y

))≥p

1 if

d(x,

y)≥d

2,th

enp(

h(x)

=h(y

))≤p

2 •其中d(x,y)表示x和y之間的距離,d1 < d2,h(x)和h(y)分別表示對x和y進行hash變換。

•滿足以上兩個條件的hash functions稱為(d1,d2,p1,p2)-sensitive。而通過乙個或多個(d1,d2,p1,p2)-sensitive的hash function對原始資料集合進行hashing生成乙個或多個hash table的過程稱為locality-sensitive hashing.

simhash 演算法的輸入是乙個向量,輸出是乙個

f 位的簽名值。設輸入的是乙個文件的特徵集合,每個特徵有一定的權重。

simhash 演算法如下:

將乙個

f維向量v⃗ 

初始化為0⃗ 

, f 位的二進位制數

s初始化為0

HDFS原理深入理解

1 hdfs概述 1 資料量越來越多,在乙個作業系統管轄的範圍存不下了,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,因此迫切需要一種系統來管理多台機器上的檔案,這就是分布式檔案管理系統 2 是一種允許檔案通過網路在多台主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。...

深入理解hashmap的原理

一 什麼是雜湊?雜湊也叫雜湊,是將不同長度的輸入通過乙個函式轉換成同乙個長度輸出的過程,這個輸出的值叫雜湊值,這個轉換函式叫雜湊函式,雜湊函式所採用的演算法加雜湊演算法。實際上是乙個通過訊息得到訊息摘要的方法 二 什麼是雜湊表?雜湊表是乙個通過key訪問value的資料結構,它是基於乙個陣列,存資料...

深入理解springmvc 底層原理

深入理解springmvc 底層原理 web.xml 檔案中的配置 dispatcherservlet springmvc執行流程 springmvc 一切請求的入口 dispatcherservlet 對映處理器 對映 key value 作用 根據請求 url 找到乙個 method handl...