Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)
Algorithm:C++語言實現之SimHash和倒排索引算法相關(抽屜原理、倒排索、建立查找樹、處理Hash沖突、Hash查找)
?
?
?
目錄
一、SimHash算法
1、SimHash算法五個步驟
2、抽屜原理
二、倒排索引
1、倒排索引的應用
2、建立查找樹
3、處理Hash沖突
4、Hash查找
?
?
?
?
一、SimHash算法
1、SimHash算法五個步驟
?
2、抽屜原理
抽屜原理:桌上有十個蘋果,要把這十個蘋果放到九個抽屜里,無論怎樣放,我們會發現至少會有一個抽屜里面至少放兩個蘋果。這一現象就是我們所說的“抽屜原理”。 抽屜原理的一般含義為:“如果每個抽屜代表一個集合,每一個蘋果就可以代表一個元素,假如有n+1個元素放到n個集合中去,其中必定有一個集合里至少有兩個元素?!?抽屜原理有時也被稱為鴿巢原理。它是組合數學中一個重要的原理。
1、抽屜原理應用
? ? ? ?二維坐標系oXY中,坐標(x,y)都是整數的點叫做“格點”。試證明:任取平面上5個格點,它們的連接線段的中點至少有1個是格點。
分析問題:要想中點為格點,那么該線段的首尾坐標的中點,即兩個元素一定是偶數。
分析條件:
(1)、圖中,明顯可知,每個點的坐標x、y,不是奇數就是偶數。分析可知,一共可分為四大類(偶數,偶數)、(偶數,奇數)、(奇數,奇數)、(奇數,偶數)。
(2)、而圖中隨機選取5個點,那么圖中第5個點,一定是四類中的一類,即可知5個點一定有2個點是同類的。那么,既然存在同類的點,說明可形成一個中點,因為不管是(奇數+奇數)還是(偶數+偶數)一定存在中點。
(3)、考慮連線非格點情況:只有當x1、x2(或y1、y2)屬于不同類型的時候,比如(奇數+偶數)不能夠除以2。
結論:所以取>4的坐標點,肯定存在類型相同的兩個點。
? ?
?
?
?
二、倒排索引
1、倒排索引的應用
?
2、建立查找樹
?
3、處理Hash沖突
?
4、Hash查找
?
?
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Algorithm:C++语言实现之链表
- 下一篇: Algorithm:C++语言实现之内排