"KDTree" (数据结构)
"KDTree"
表示实数坐标组的 k-d 树二进制空间分割.
更多信息
- A k-d 树在维度 时可高效分割 n 个坐标的坐标组,这样可以快速进行搜索,如最近邻搜索. 每个节点有两个数据元素,索引参数为 0 和 1. 数据元素既可以是另一个 k-d 树节点或点索引参数的列表 {i1,i2,…} 其中 0<ik<=n. 每个数据元素都有唯一的机器整数 ID.
-
CreateDataStructure["KDTree",coordinates] 从 coordinates 中创建一个都可由实数表示的新 "KDTree". CreateDataStructure["KDTree",coordinates, n] 从 coordinates 中创建一个每个分支中至多有 n 个条目的新 "KDTree". Typed[x,"KDTree"] 赋予 x 类型 "KDTree". - 对于类型 "KDTree" 的数据结构 ds 而言,可使用下列运算:
-
ds["DataBounds"] 返回坐标的总体边界 时间:O(1) ds["DataCoordinates"] 返回坐标 时间:O(1) ds["Graphics"] 在二维空间中显示坐标的空间分割 时间:O(n) ds["ID"] 返回 ds 的 ID 时间:O(1) ds["ID", b] 返回 ds 的 b(0 或 1)数据元素的 ID 时间:O(1) ds["Indexes",b] 返回 ds 的 b(0 或 1)叶片数据元素表示的边框内包含的坐标索引 时间:O(1) ds["LeafQ", b] 若 ds 的 b(0 或 1)数据元素为叶片则返回 True 时间:O(1) ds["Node",b] 为 ds 的 b(0 或 1)节点数据元素返回 "KDTree" 时间:O(1) ds["SplitDimension"] 为 ds 的空间分割返回维度 时间:O(1) ds["SplitPosition"] 为 ds 的空间分割返回位置 时间:O(1) ds["SubtreeIndexes",sd] 返回 ds 表示的子树中的所有坐标索引 时间:O(n) ds["SubtreeLength"] 求 ds 表示的子树包围的坐标数量 时间:O(n) ds["TreeSize"] 返回数据元素的数量 时间:O(1) ds["Visualization"] 返回 ds 的可视化表示 时间:O(n)
范例
打开所有单元关闭所有单元基本范例 (1)
可用 CreateDataStructure 创建一个新的 "KDTree" 对象:
范围 (3)
信息 (1)
可使用 CreateDataStructure 创建新的 "KDTree":
叶片尺寸 (1)
每个可在 CreateDataStructure 中可指定为附加参数的箱中有至多给定数量的坐标之前,分支会继续计算:
任意精度 (1)
如果赋予坐标的精度大于 MachinePrecision 位数,那么计算会在合适的精度下进行: