[发明专利]k-d树生成方法和k-d树生成装置有效
申请号: | 201610186237.2 | 申请日: | 2016-03-29 |
公开(公告)号: | CN105787126B | 公开(公告)日: | 2020-11-06 |
发明(设计)人: | 杨焕滨;王巍 | 申请(专利权)人: | TCL科技集团股份有限公司 |
主分类号: | G06F16/182 | 分类号: | G06F16/182;G06F16/13 |
代理公司: | 深圳中一联合知识产权代理有限公司 44414 | 代理人: | 李艳丽 |
地址: | 516006 广东省惠州市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 生成 方法 装置 | ||
1.一种k-d树生成方法,其特征在于,包括:
获取待生成k-d树的k维数据集,其中,所述k为不小于2的自然数;所述k-d树用于多维空间关键数据的搜索,所述搜索包括范围搜索和最近邻搜索;
初始化所述k维数据集中各个数据的位置信息、所述各个数据所在节点的记录数以及所述各个数据所在节点的第一个数据点的索引号,其中,所述各个数据的位置信息的初始化值为空、所述各个数据所在节点的记录数的初始化值为N,所述各个数据所在节点的第一个数据点的索引号的初始化值为0,所述N为所述k维数据集所包含的数据个数;
初始化深度值并创建空的节点数据集,其中,所述深度值的初始化值为1;
检测当前深度值是否大于ceil(log2N);
若当前深度值不大于ceil(log2N),则:
计算当前深度值所对应的切分维度;
按照当前所述k维数据集中各个数据的位置信息,将位置信息相同的各个数据划分在同一节点区域;
按照同一节点区域中的各个数据在当前切分维度的数值大小,分别对每个节点区域中的数据进行排序并编号;
将当前满足dataSizei=1或者i-startIndexi=ceil(dataSizei/2)的数据记录在所述节点数据集中,并将满足i-startIndexi=ceil(dataSizei/2)的数据标识为切分节点,其中,i表示数据的编号,dataSizei表示编号为i的数据当前所在节点的记录数,startIndexi表示编号为i的数据当前所在节点的第一个数据点的索引号;
将当前满足dataSizei≠1且i-startIndexiceil(dataSizei/2)的数据的位置信息和所在节点的记录数分别更新为:pathi+s1、ceil(dataSizei/2),其中,pathi表示编号为i的数据当前的位置信息,s1为左节点标识;
将当前满足dataSizei≠1且i-startIndexi≥ceil(dataSizei/2)的数据的位置信息、所在节点的记录数和第一个数据点的索引号分别更新为:pathi+s2、dataSizei-ceil(dataSizei/2)及startIndexi+ceil(dataSizei/2),其中,s2为右节点标识;
令深度值加1,并返回执行所述检测当前深度值是否大于ceil(log2N)的步骤及后续步骤;
若当前深度值大于ceil(log2N),则:
将所述节点数据集中所有标识为切分节点的数据的节点信息存储在切分节点信息表中,其中,所述数据的节点信息包括:该数据记录在所述节点数据集时所使用的切分维度、该数据在该切分维度的数值以及该数据在所述节点数据集中的编号,其中,所述节点数据集中的数据的编号依据数据记录在所述节点数据库中的时序顺序编排得到;
将所述k维数据集中各个数据当前的位置信息与相应数据绑定存储在叶子节点信息表中;
所述将所述节点数据集中所有标识为切分节点的数据的节点信息存储在切分节点信息表中,具体为:
将所述节点数据集中所有标识为切分节点的数据的节点信息以表的形式存储在Hbase的切分节点信息表中;
所述将所述k维数据集中各个数据当前的位置信息与相应数据绑定存储在叶子节点信息表中,具体为:
将所述k维数据集中各个数据当前的位置信息与相应数据绑定存储在Hbase的叶子节点信息表中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于TCL科技集团股份有限公司,未经TCL科技集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610186237.2/1.html,转载请声明来源钻瓜专利网。