-1
Q
穿越八叉樹
A
回答
3
我有一些八叉樹的經驗和編碼幾個我自己。基本問題是樹至少有兩個遍歷方向:水平(在子單元之間)和垂直(在母單元和子單元之間),它們不能映射到線性內存。因此,遍歷樹(例如用於鄰居搜索)將不可避免地導致緩存未命中。
對於最有效的實現,您應該將非最終單元格的所有(最多8個)子單元放在一個連續的內存塊中,避免在遍歷它們時緩存未命中以及需要鏈接它們與指針。然後每個單元只需要一個指針/索引用於它們的第一個子單元,並且可能(取決於應用程序的需要)指向它們的母單元。
類似地,任何由樹排序的粒子/位置都應該排序,使得所有包含在單元格內的粒子在內存中都是連續的,在所有樹級別。然後每個單元格只需要存儲第一個和多個粒子,從而允許在樹的每一層訪問所有它們(而不僅僅是最終單元格)。
實際上,這樣的排序可以通過首先構建一個完全鏈接的樹,然後將其映射到上面描述的形式來實現。這種映射的開銷很小,但是應用程序的收益很大。
最後,當只用稍微改變的粒子位置重新構建樹時,它會顯着加速(取決於您的算法),將前一樹順序中的粒子送入樹構建算法。
相關問題
- 1. 如何穿越wijmo樹
- 2. 不能穿越任何節點在二叉樹
- 3. 迭代八叉樹遍歷
- 4. 如何製作八叉樹?
- 5. 重新排列四叉樹/八叉樹的數據
- 6. 在八叉樹/四叉樹中定位體素的性能
- 7. 穿越兩棵樹在一起?
- 8. 如何在C#中實現八叉樹?
- 9. 如何在C++中構造八叉樹
- 10. 疏體素八叉樹平滑網格
- 11. 稀疏八叉樹的高效存儲?
- 12. 八叉樹的動態哈希表
- 13. 八叉樹實現的速度問題
- 14. 在八叉樹中合併葉子
- 15. 迭代線索二叉樹用唯一不變的額外空間穿越
- 16. PHParray穿越
- 17. Android:NAT穿越?
- 18. 穿越堆棧
- 19. 穿越jQuery
- 20. vb.net穿越
- 21. 穿越鏈表
- 22. 穿越SQLite表
- 23. jQuery穿越.not
- 24. JQuery的表穿越
- 25. XSLT節點穿越
- 26. 穿越一些點
- 27. 穿越回在asp.net
- 28. NAT穿越和IPv6
- 29. PHP的SimpleXML穿越
- 30. 穿越陣列Javascript
語言,平臺? – leppie
C++,ubuntu .... –
有問題? ...... –