看来我的某个项目将需要使用四叉树,这是我以前从未使用过的东西。根据我的阅读,与强力解决问题相比,它们应该允许大幅提高性能。这些python模块有什么好处吗?
编辑1: 有谁知道比pygame Wiki中提供的实现更好的实现?
编辑2: 以下是一些其他人可能发现对Python中的路径查找技术有用的资源。
在此评论中,joferkington提及当前问题并说:
仅仅考虑它的价值
scipy.spatial.KDTree
(和/或scipy.spatial.cKDTree,出于性能原因用C语言编写),它比列出的选项要可靠得多。
四叉树是一个二维空间递归细分。它使用了平分划分实现,将每一个块平分成了四个同等大小的方块。每个点存在于一个唯一的节点中;如果同一位置包含多个点,那么这多个点中的其中一些点将存储于内部节点,而非叶子结点。四叉树可用于加速各种空间操作,例如计算正多边形的体积的Barnes-Hut近似算法或者冲突检验。 d3.geom.quadtree() 创建一个新的四叉树工厂使用默认的x访问器,y访问器及范围。返回
我已经实现了一个四叉树来对图形中的点进行排序。每当一个点落在已经包含一个点的象限内时,该象限就会再次细分,以允许每个点落入其自己的象限。每个节点都具有以下属性: 假设我想遍历存储在这棵树中的每个节点,并计算落在给定矩形边界内的点数,我将如何递归检查树中的每个节点(假设我已经有方法检查它们是否落在某个区域)?
本文向大家介绍数据结构中的四叉树,包括了数据结构中的四叉树的使用技巧和注意事项,需要的朋友参考一下 四叉树是被实现以有效地存储二维空间上的点的数据的树。在此树中,每个节点最多具有四个子节点。 我们可以从二维区域构建四叉树,实现以下步骤 当前的二维空间分为四个框。 如果盒子中包含一个或多个点,则构建一个子对象,在其中存储盒子的二维空间。 如果一个盒子不包含任何点,则不要为其建立子对象。 对每个孩子执
我曾试图实现代码来实现平衡二叉搜索树的方式(蛮力),我发现有一个案例(树),似乎无法平衡。这棵树是 你可以明显地发现,这棵树的右边高度比它的左边高度大得多,所以我绕着'6'向左旋转,那么新树就会 然后,左边的高度比右边的高度大得多,所以在下一步中,我必须围绕节点“10”向右(返回)旋转树。 似乎必须有一个无限循环来旋转这棵树围绕它的根节点(旋转左、右、左、右……以此类推),同时平衡这棵树。平衡这棵
本文向大家介绍数据结构中的点四叉树,包括了数据结构中的点四叉树的使用技巧和注意事项,需要的朋友参考一下 点四叉树是为表示二维点数据而实现的二叉树的改编。所有四叉树的特征由点四叉树共享。 在比较通常在O(log n)时间执行的二维有序数据点时,它通常非常有效。点四叉树的完整性值得一提,但kd树已超越它们成为广义二分搜索的工具。 点四叉树的构建如下。 给定下一个要插入的点,我们计算它所在的单元格并将其
本文向大家介绍数据结构中的区域四叉树,包括了数据结构中的区域四叉树的使用技巧和注意事项,需要的朋友参考一下 区域四叉树可用于通过将区域划分为四个相等的象限,子象限等,以二维方式表示空间分区,每个叶节点由对应于特定子区域的数据组成。树中的每个节点都与正好有四个子节点或没有子节点(叶节点)相关联。遵循这种分解策略的四叉树的高度(即细分子象限,直到并且除非子象限中有需要进一步完善的有趣数据为止)敏感并取