簡體   English   中英

范圍最小值/最大值查詢

[英]Range Minimum/ Maximum Query

我有坐標點 (x,y) 說我有 10 000 points 。 現在當一個新的點作為測試查詢給出時說(p,q)。 我必須檢查坐標點中的每個點。如果來自在線搜索的 PY 文本查詢的 x 坐標我開始知道 Rmq-范圍最小/最大查詢數據結構可以幫助我,但我不知道該怎么做。有人可以幫助我我該怎么做..c ++ 中的任何參考或代碼幫助都會有很大幫助。謝謝

如果您的目標是檢查數據集中是否存在該點,那么您可以使用許多非常有用的數據結構來保存數據,每個數據結構都支持非常有效的查找。

首先,如果您只需要知道該點是否存在,您始終可以將所有點存儲在標准哈希表或平衡二叉搜索樹中。 這將分別提供 O(1) 或 O(log n) 的查找時間。 此外,這些結構往往在大多數編程語言中都可用。

另一方面,如果您計划對數據進行更高級的操作,例如在數據集中搜索距某個測試點最近的 k 個點,或者嘗試找到某個邊界區域中的所有點,您可能會想考慮使用kd-treequadtree 標准二分搜索的這些變體提供快速查找(O(log n) 時間)。 kd-tree 還支持非常快速的k-nearest-neighbor 搜索和邊界體積內的搜索。 此外,如果您有任何實施標准二叉搜索樹的經驗,那么 kd-tree 非常容易實施。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM