我知道kd-tree传统上用于存储点,但我想要存储行。将kd-tree分裂的每个交叉点分割线最好吗?或者只是将端点存储到kd中就足以用于最近的邻居发现?如何在kd-tree中最好地存储行
8
A
回答
0
那么,你必须在十字路口上分割线条,否则你会遇到树叶重量的问题。另一方面,如果你不使用SAH或任何其他算法来遍历树,你可以自由地做任何你想要的与kd-tree的初始想法。但是如果你将绑定到一些传统的算法,你有拆分线。你必须这样做,只是因为树的每一片叶子都有一个重量(我想你的情况取决于它的长度)。
如果你不分割线条,你也会得到错误的叶子重量。不,如果你没有分割线条,你应该在线条所属的两条线上重复它们。
0
你是否必须使用kd-tree?对于扩展的基元,bv-tree可能更有效。
1
kd-tree本身被设计为点对象。甚至没有箱子,球体或类似的东西。我相信你可以以某种方式使用6d树存储minx, maxx, miny, maxy, minz, maxz
;但我不完全确定如何正确地查询它。
R*-tree (Wikipedia)可能是一个更好的选择。它确实是为空间扩展的对象设计的。如果您查阅相关出版物,他们甚至会尝试不同的复杂对象的近似值;例如是否支付三角形化他们,使用一个环形边界框,并且有趣的是IIRC 5角多边形在某些情况下提供了最好的性能。
无论如何,R * - 树家庭可能是一个有趣的选择。
相关问题
- 1. 如何最好地在MySQL中存储512位数据对象
- 2. 如何最好地在MySql中存储日期/时间?
- 3. 如何最好地在Spring中存储用户数据?
- 4. 如何最好地在Python中存储大量文本序列?
- 5. 如何最好地将Subversion版本信息存储在EAR中?
- 6. 如何在GAE应用程序中最好地存储凭据?
- 7. 如何最好地存储时间范围,如周二10-11am?
- 8. XML存储项目。如何最好?
- 9. 我应该如何最好地存储这些文件?
- 10. 如何最好地从bitbucket获取存储库?
- 11. 如何最好地处理历史数据的存储?
- 12. 如何最好地将SNMP消息存储并发送给ios?
- 13. 3套相应的字符串。如何最好地存储?
- 14. 如何最好地为Android应用程序设置存储库?
- 15. 如何更好地存储变量?
- 16. 如何从当前现有的本地git存储库中最好地建立一个“中央”git存储库?
- 17. 如何在MySQL数据库中最好地存储年份,月份和日期?
- 18. 如何在数据库中最好地存储大型JSON文档(2+ MB)?
- 19. 如何最好地在数据库中存储时间戳或日期?
- 20. 如何最好地生成不存储在数据库中的对象的键?
- 21. 如何最好地保存XML文件
- 22. 如何最好地在Clearcase中分支?
- 23. 如何在地址行上存储值?
- 24. 如何最好地进行Web测试?
- 25. 最好的存储方法
- 26. 我们如何最好地跟踪我们存储库中的“发布点”?
- 27. 如何将POJO的内容存储在偏好存储中?
- 28. 在Python中保存KDTree对象?
- 29. 最好的地方存储角文件在rails
- 30. 34,000行最佳本地数据存储
这取决于你想要做什么。记住一条线(段)只是两个坐标的集合,所以它可以用一个单一的坐标来描述,其尺寸是其两倍。因此,可以将线存储为高维kd树中的点。 – 2010-10-28 23:26:06
我正尝试用线条创建一个距离场。所以我会利用kd-tree的最近邻居功能。但是,我不想添加比我拥有更多的数据(线段的终点。 – newDelete 2010-10-31 18:19:40