在多維空間中,我有一個矩形集合,所有矩形都與網格對齊。 (我正在鬆散地使用「矩形」一詞 - 在三維空間中,它們將是直角棱柱。)查詢輸入矩形重疊的矩形集合
我想查詢此集合中與輸入矩形重疊的所有矩形。
什麼是保存矩形集合的最佳數據結構?我會不時向矩形中添加矩形和刪除矩形,但這些操作將不經常發生。我想要快速的操作是查詢。
一種解決方案是將矩形的角落保留在列表中,並對列表進行線性掃描,找出哪些矩形與查詢矩形重疊,並跳過不包含查詢矩形的矩形。
但是,我希望查詢操作比線性更快。
我看過R-tree data structure,但它包含點的集合,而不是矩形的集合,我沒有看到任何明顯的方式來推廣它。
我的矩形的座標是離散的,以防您覺得有幫助。
我對通用解決方案感興趣,但我也會告訴你我的具體問題的屬性:我的問題空間有三個維度,它們的多樣性差異很大。第一維有兩個可能的值,第二維有87個值,第三維有180萬個值。
如果你的第一個維度只有兩個可能值和棱鏡沒有退化(即2D結構),那麼看來你的問題只有2個維度... – 2010-06-29 00:50:30
退化結構是允許的,但謝謝指出。 – user82928 2010-06-30 23:33:54
你用kd-tree實現了這個嗎?我正在尋找它的代碼。 – 2013-07-16 07:05:22