面經筆記 範圍搜尋 最近鄰搜尋

2021-08-04 05:18:30 字數 502 閱讀 9324

kd樹:

參考:

上文中一直在講最近鄰問題,也就是說只找最近的那唯一乙個鄰居,但如果現實中需要我們找到k個最近的鄰居。該如何做呢?對的,之前blog內曾相近闡述過尋找最小的k個數的問題,顯然,尋找k個最近鄰與尋找最小的k個數的問題如出一轍。

用大根堆保持k個最小的距離,然後用根的距離(也就是其中最大的乙個)來作為判斷的依據是否有更近的點不在結果中,這一點很重要!

以圓心點作為近鄰搜尋的目標點,以圓的半徑作為判斷的依據:是否有範圍內的點不在結果中。

r樹中的r應該代表的是rectangle

詳見:

例2:搜尋小怪:

先對地圖上所有小怪建立r樹,小怪的最小外接矩形為葉節點

然後搜尋以英雄為中心,大招半徑*2為邊長的正方形

計算所有搜尋到的小怪與英雄的距離,若距離小於大招半徑則判為中招。

最近鄰搜尋和近似最近鄰搜尋(NN和ANN)和庫

這樣查詢返回的前k個向量並不一定是最相似的k個向量,衡量ann演算法好不好的乙個依據是召回,每次ann請求返回的k個結果與使用暴力查詢的k個結果去比較,如果完全一致,說明是最好的。因為省了搜尋時間卻沒有影響效果。目前的ann演算法有基於圖 hnswlib 的,基於樹 pysparnn 的,基於雜湊 ...

最近鄰居搜尋 壓縮儲存

最近鄰搜尋就是在空間資料庫中找出包含查詢關鍵字且離查詢點最近的k個資料點,其中k為常數。2.1ir2 tree information retrieval r tree 基本思想 1 利用雜湊將每個關鍵字對映為位串 bit string 2 用r樹將組織所有資料 3 將位串資訊嵌入到r樹結點中作為關...

近似最近鄰搜尋的QALSH方法 閱讀筆記

lsh和它的變體是解決高維歐氏空間下c 近似最近鄰 c ann 搜尋問題的著名索引方法。傳統上,lsh函式在某種意義上是以未知查詢的方式構建,即在任何查詢到達之前劃分桶。然而,距離乙個查詢越近的目標可能被劃分在不同的桶中是令人不快的。由於利用yi遺忘查詢桶劃分,針對外存的最先進的lsh方案,即c2l...