我正在尋找一種自平衡的四叉樹/八叉樹/ 2^n樹,因爲它接受新的觀察結果,而沒有其他所有點的知識,喵,它不能依賴於我寫的中位數在'流'的上下文中。 AVL樹平衡,因爲它通過pivoting,有更高維數據的另一個類似的數據結構?AVL樹的四叉樹相當於
回答
AVL樹只返回一個結果,找到的元素。 但特別是基於ebucket的四叉樹返回查詢位置附近的對象列表。調用程序最後必須檢查結果中的所有對象,以完成填充應用程序任務的那些對象。
從這個角度來看,平衡沒有多大意義。更密集的地區(例如城市)具有更詳細的結構,因此具有更深的四叉樹。 這並不壞。我沒有看到任何四平衡的需要。
對於所有四叉樹類型(點,線,對象四叉樹),當四叉樹節點被拆分時,它總是分裂成4個相等大小的子矩形或二次子節點。這些類型被稱爲受限四叉樹。我在平衡四叉樹中找到的文獻中只有一個暗示(M.Bern,D-Eppstein和J.Gilbert:可能是好的網格生成,在Hanan Samet中引用:多維空間數據結構的基礎)。如果你有學術興趣,你可以閱讀論文,否則我懷疑它對你有價值。
否則它不是一個正常的(即受限制的)四叉樹。在R-Trees上閱讀更多關於sub dividinbg個別矩形空間的信息。 (R樹是四叉樹的競爭對手) 對應四叉樹的唯一四類型平衡可能是動態的桶大小。但爲此我沒有看到優勢。
關於garuantees: 最終建立的靜態四叉樹的最大深度,給出了一個上限。 (隨意測量平均深度)。最大桶大小也提供了一個上限。 (再次衡量平均桶大小)。
平衡: 四叉樹的結構取決於插入值的順序。 插入到四叉樹中的值通常是靜態的,因此可以預先訂購。有特定的預先安排可以帶來(稍微)更好的平衡。
請注意,四叉樹是一種空間索引,對於刪除操作並不是很好用。
我想我在你的回覆中錯過了一些細微差別,或者我不會遺漏某些東西,而且我不同意。隨意引導我的思路朝着正確的方向發展:如果我可以保證任意1點的深度在n,n和n + 1之間,那麼我可以針對數據集對查詢的算法運行時間做出一定的保證。有了分水器,你必須對水桶的大小有類似的保證。在地圖上構建一棵平衡的樹會導致一些愚蠢的分區 - 即:穿過一座城市的中心,但我不認爲這是不合理的。 –
您必須閱讀更多關於四叉樹的信息,它們有很多不同的類型,完全不同的任務和行爲:點四叉樹,行四叉樹和對象(矩形)四叉樹等等。所以首先你必須說明你正在談論哪種類型的四叉樹。其次所有的四叉樹分割成4個相同大小的子節點。 Othwwise它不是一棵四叉樹,也許是一棵R樹。沒有桶的矩形四叉樹(桶大小= 1)需要很多空間。 Andf它甚至不可能在一個四邊形模式中始終有一個矩形(同心矩形) – AlexWien
要修改四邊形中的哪個技術細節以實現平衡?不同大小的子節點矩形邊界? – AlexWien
- 1. AVL樹上的二叉搜索樹
- 2. 四叉樹和Kd樹
- 3. 繪圖二叉樹(AVL和紅黑樹)
- 4. 四叉樹性能
- 5. 構建四叉樹
- 6. 四叉樹刪除
- 7. 四叉樹遍歷
- 8. 遍歷四叉樹
- 9. 通用四叉樹
- 10. 平衡四叉樹
- 11. 四叉樹的遍歷
- 12. 當代表使用四叉樹
- 13. 四叉樹 - 多級分段樹
- 14. AVL樹
- 15. 用於Java的AVL樹
- 16. 四叉樹物體移動
- 17. 四叉樹分解 - MATLAB
- 18. 如何紋理四叉樹
- 19. 無法構建四叉樹?
- 20. 純Python實現四叉樹
- 21. 完整的二叉搜索樹和AVL樹的區別?
- 22. 重新排列四叉樹/八叉樹的數據
- 23. 在八叉樹/四叉樹中定位體素的性能
- 24. C++ AVL二叉搜索樹問題
- 25. 什麼是使用AVL樹和二叉樹
- 26. 查找AVL樹
- 27. AVL樹採用
- 28. AVL搜索樹
- 29. AVL樹刪除
- 30. Succesor AVL樹C++
爲什麼你需要一個四叉樹? – Sign
因爲我在飛機上搜索點。 Quadtrees將飛機劃分爲盒子區域,這似乎是獲得對數時間搜索的好方法。 –
見http://www.win.tue.nl/~kbuchin/teaching/2IL55/slides/07quadtrees.pdf。 – lhf