CN108038118A - 一种位置优先并维护最小外接矩形的kd树构建方法 - Google Patents
一种位置优先并维护最小外接矩形的kd树构建方法 Download PDFInfo
- Publication number
- CN108038118A CN108038118A CN201711059177.9A CN201711059177A CN108038118A CN 108038118 A CN108038118 A CN 108038118A CN 201711059177 A CN201711059177 A CN 201711059177A CN 108038118 A CN108038118 A CN 108038118A
- Authority
- CN
- China
- Prior art keywords
- dimension
- data
- data set
- partition
- enclosed rectangle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Abstract
发明公开了一种位置优先并维护最小外接矩形的KD树构建方法,该方法特点是:(1)在选择划分维度时优先选择空间维度即经度和纬度,当划分后的数据集所包含的对象数目小于一个指定的参数θ后,其后的划分使用全部的维度;(2)在非叶节点上维护一个最小外接矩形即MBR来界定以当前节点为根节点的子树中所包含的数据节点在各个维度上的上下界。由于一种位置优先的本发明LPKD树的构建过程对空间维度进行了优先划分,并且非叶节点维护了一个最小外接矩形MBR,这使得在使用本发明的LPKD树进行基于位置的个性化服务匹配(比如为用户推荐最喜欢的餐馆或者酒店)时,可以快速对最不相关的POI进行有效的剪枝,从而为基于位置的个性化服务的实时性提供有力的保证。
Description
技术领域
本发明属于空间数据管理和多维数据查询技术领域,涉及一种空间多维数据索引结构,尤其是一种位置优先并维护最小外接矩形的KD树构建方法。
背景技术
随着智能移动终端的普及和各种无线通讯技术的飞速发展,基于位置的服务在越来越多的领域得到了广泛的关注和应用。日常生活中经常碰到基于位置的查询服务,比如,为用户找到5公里范围内价格最便宜的加油站,为餐馆找到2公里内最有可能对一款该餐馆新开发的菜品感兴趣的100个客户。那么,对带位置信息的空间数据对象进行有效的组织和管理,以快速响应用户的查询请求是亟需解决的难题。而已有的针对空间数据对象管理和索引的相关技术,对空间数据对象所包含的所有维度(包括空间维度和非空间维度)无差别对待,这或导致在响应位置服务查询的时候,无法有效利用用户对距离这一特殊属性的偏好,从而影响基于位置服务查询处理中所针对距离属性的优化策略选择。
发明内容
本发明的目的是为了在响应基于位置查询的时候,能够优先对距离这一属性进行剪枝,并使得查询算法快速收敛而提出的一种位置优先并维护最小外接矩形的KD树构建方法,该方法为一种新的空间对象多维索引,在已有的KD树的基础上,提出了位置优先划分策略和基于划分的非叶节点中最小外界矩形的维护方法,使用位置优先划分策略克服了传统KD树无差别对待所有属性的先天不足,并通过在非叶结点维护一个最小外接矩形来达到在响应位置服务查询时快速剪枝的目的。
实现本发明目的的具体技术方案是:
一种位置优先并维护最小外接矩形的KD树构建方法,它采用位置优先的划分维度选择,即,当划分后的数据集的数据大于某个阈值时,优先选择经度和纬两个维度中方差较大的那个维度进行划分,而忽略其它维度;最小外接矩形(MBR)维护,即,每个非叶节点要记录以该节点为根节点的子树中所包含所有数据在各个维度上的最大值和最小值;具体包括以下步骤:
步骤1:收集原始数据集,设置参数θ和θ’;其中,所述参数θ表示是否在经度和纬度两个位置属性上进行优先划分的阈值;θ’表示最后生成的KD树中,叶子节点允许包含的最大数据点的数目;
步骤2:根据参数θ,计算相应维度方差,选择方差最大的维度为划分维度,计算划分维度上的中值,把当前数据集划分到左右子树;
步骤3:根据步骤2计算到的划分维度和其上的中值,更新左右子树的最小外接矩形;
步骤4:重复步骤2和步骤3,直到当前数据集中包含的数据点数目小于等于参数θ’,所述位置优先并维护最小外接矩形的KD树构建完成。
所述步骤1具体包括:
A1:收集原始数据集;
A2:设置参数θ,表示是否在经度和纬度两个位置属性上进行优先划分的阈值,在具体的应用中,设置为每平方公里数据点密度的100倍,若不设置,默认θ等于2000;
A3:设置参数θ’,表示最后生成的LPKD树中,叶子节点允许包含的最大数据点的数目,若不设置,默认θ’等于1。
所述步骤2具体包括:
B1:判断当前数据集中所包含数据对象的数目是否大于阈值θ;
B2:如果大于阈值θ,则计算经度和纬度这两个维度上的数据方差,选择方差最大的空间维度作为划分维度;否则,计算所有维度上的数据方差,在所有维度中选择数据方差最大的作为划分维度;
B3:基于步骤B2中确定的划分维度,计算该划分维度上的数据中值,并使用该中值作为对数据集进行进一步划分,把所有在划分维度上小于等于该中值的数据划分到一起形成一个左子树数据集,在划分维度上大于该中值的数据划分为另外一个右子树数据集。
所述步骤3具体包括:
每个非叶节点以最小外接矩形即MBR的方式维护以该节点为根节点的子树中所包含所有数据对象在各个维度上的最大值和最小值;并根据B2所述每次确定的划分维度,以及B3该划分维度上的中值实时更新MBR上的最大点和最小点;若划分维度为d,维度d上作为划分点的数据中值为m,则:
C1:对于左子树数据集需维护的MBR,使用m更新其第d维的最大值;
C2:对于右子树数据集需维护的MBR,使用m更新其第d维的最小值。
本发明基于传统的KD树构造过程,采用空间维度优先划分策略,并根据所选划分维度和其上的中值,实时维护非叶节点最小外接矩形,提出了一种在基于位置服务查询中使用的空间多维索引结构的构造过程。本发明克服了传统KD树将所有维度无差别对待的先天不足,能较快速地响应基于位置服务中的典型查询。
附图说明
图1为本发明步骤1流程图;
图2为本发明步骤2流程图;
图3为本发明流程图;
图4为传统KD树结构示意图;
图5为本发明LPKD树结构示意图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明,本发明的保护内容不局限于以下实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
本发明克服了传统KD树在基于位置服务查询使用中的不足,采用位置维度优先选择和最小外接矩形自动生成,来对传统KD树的构造过程进行改造。
本发明的位置维度优先选择,如图1所示,根据阈值参数θ确定,在空间维度,即经度和纬度上计算各自的方差,选择方差大的维度进行划分,还是计算所有维度上的方差,选择方差大的维度作为划分维度,并且在确定划分维度以后,计算该划分维度上的中值pivot,把该中值作为进一步划分左右子树的中轴点。
本发明的最小外接矩形自动生成,如图2所示,根据最终确定的划分维度split_dimension和该划分维度上的中值pivot,维护划分后的左子树和右子树上的最小外接矩形。一个d维空间中的最小外接矩形r可以用(max_point,min_point)表示,其中max_point是最小外接矩形内部所有数据点上在每个维度上的最小值组成的d维向量,而min_point是包含在最小外接矩形r内部的所有数据点在每个维度上的最大值组成的d维向量。初始时,max_point被初始化为整个数据集上在每个维度上的最大值组成的d维向量,min_point则被初始化为每个维度均为0的d维向量。当在划分维度split_dimension上的中值pivot上产生一个划分的左子树和右子树分别为L和R,L和R对应的最小外接矩形r和r’,那么需要使用pivot更新最小外接矩形r中max_point向量的split_dimension维的值,需要使用pivot更新最小外接矩形r’中的min_point向量的split_dimension维的值。
以下实施例中,分别按现有方法与本发明方法进行处理,并对比分析结果,以说明本发明方法和传统方法的不同之处。
表1:包含13家餐馆的空间对象数据集合
人均消费 | 客户评分 | 经度 | 维度 | |
P1 | 0.5 | 3.5 | 8.5 | 1.5 |
P2 | 2.5 | 0.5 | 6 | 1.8 |
P3 | 2.5 | 3 | 5.8 | 1.7 |
P4 | 1 | 3.2 | 4.5 | 2.9 |
P5 | 3.2 | 1.2 | 6.2 | 3.2 |
P6 | 3.5 | 0.8 | 6.6 | 4.5 |
P7 | 4.2 | 1.9 | 8.9 | 3.4 |
P8 | 4.2 | 2.2 | 5.6 | 2.5 |
P9 | 3.5 | 4.5 | 6.4 | 3.1 |
P10 | 5 | 1.9 | 4.2 | 5.2 |
P11 | 5 | 0.5 | 7.8 | 2.6 |
P12 | 5 | 0.9 | 5.4 | 0.8 |
P13 | 4.5 | 0.5 | 6.5 | 2.4 |
表1记录了P1到P13共13家餐馆在四个维度上的基本信息,包括人均消费,客户评分,以及餐馆所在的经度和纬度。假定表1中的数据集维度编号为:1,2,3,4,叶子节点容许的最多数据点数目设置为1。那么,使用传统的KD树(即,所有维度无差别对待,并且在非叶节点并不会维护MBR),对这13家餐馆建立KD树索引,所得的树结构如图4所示。树中每个中间节点的结构(L,R,split_dimension,pivot),其中L和R是表示指向左右子树的指针,split_dimension是选定划分维度的编号,pivot是指在划分维度上的中值作为中轴点,比如图4中的根节点(1,3.5)表示以第1维度上的中值3.5进行划分,把原始数据集划分为两个子集分别包含的左右子树中,其中左子树包含{p1,p2,p3,p4,p5,p6,p9},右子树包含{p7,p8,p10,p11,p12,p13}。
使用本发明的位置优先划分,并自动维护最小外接矩形的LPKD树生成方法,对表1所包含的13家餐馆建立LPKD树索引,生成的树结构如图5所示。
本实施例中,假定表1中的数据集维度编号为:1,2,3,4,叶子节点容许的最多数据点数目θ’设置为1,而位置优先的阈值参数θ设置为5。也就是说,在图5所示的LPKD树中,树的第一层和第二层是采用位置优先原则选择划分维度而生成的,即在编号为3和4的维度上选择;而第三层和第四层则是在所有维度上选择划分维度生成的,即在编号为1,2,3,4所有维度上选择。
树中每个中间节点的结构(L,R,split_dimension,pivot,number,MBR),其中L和R是表示指向左右子树的指针,split_dimension是选定划分维度的编号,pivot是指在划分维度上的中值作为中轴点,number是以当前节点为根节点的子树中所包含的数据点数目,比如图5所示LPKD树的根节点(3,6.2,13,r1’)表示以第3维度上的中值6.2进行划分,将原始数据集划分为两个子集分别包含在左右子树中,其中左子树包含数据点为{p2,p3,p4,p5,p8,p10,p12},右子树包含的数据点为{p1,p6,p7,p9,p11,p13},并且以该数据点为根节点的子树中包含13个数据点,该节点维护的最小外接矩形MBR是r1’,具体描述如表2所示。
跟传统的KD树相比,本发明所公开的LPKD树有两点不同。(1)非叶节点的结构需要额外维护一个以当前节点为根节点的子树所界定的最小外接矩形MBR和以当前节点为根节点的子树中所包含的数据点数目;(2)在选择划分维度split_dimension时,秉持位置优先的原则,即,如果当前数据集所包含的数据点数目大于θ,则划分维度只在经度和纬度这两个空间维度上选择,反之,则需要在所有维度上进行选择。
表2中的r'1到r'12共12个最小外界矩形,分别代表图5中的12个非叶节点对应的最小外接矩形。
表2图5中非叶节点维护的MBRs
MBR | max_point | min_point |
r'1 | (5,5,10,10) | (0,0,0,0) |
r'2 | (5,5,6.2,10) | (0,0,0,0) |
r'3 | (5,5,6.3,2.5) | (0,0,0,0) |
r'4 | (5,5,6.2,10) | (0,0,0,2.5) |
r'5 | (2.5,5,6.2,2.5) | (0,0,0,0) |
r'6 | (5,5,6.2,2.5) | (2.5,0,0,0) |
r'7 | (3.2,5,6.2,10) | (0,0,0,2.5) |
r'8 | (5,5,10,10) | (0,0,6.2,0) |
r'9 | (5,5,6.6,10) | (0,0,6.2,0) |
r'10 | (5,5,10,10) | (0,0,6.3,0) |
r'11 | (5,0.8,6.6,10) | (0,0,6.2,0) |
r'12 | (4.2,5,10,10) | (0,0,6.6,0) |
上面的实施例针对13家餐馆的空间数据对象,详细说明了LPKD树的构建过程,可以看出本发明LPKD树的构建是一个递归的过程,最终的递归出口是划分后的数据集的数目小于阈值参数θ’。LPKD树构建过程的算法伪代码如算法1所示。
本发明公开的位置优先的LPKD树主要应用于面向基于位置服务中的各种查询算法中,可以优先从距离过滤掉一些不必要的计算,以提高算法的响应速度。
Claims (4)
1.一种位置优先并维护最小外接矩形的KD树构建方法,其特征在于,该方法具体包括以下步骤:
步骤1:收集原始数据集,设置参数θ和θ’;其中,所述参数θ表示是否在经度和纬度两个位置属性上进行优先划分的阈值;θ’表示最后生成的KD树中,叶子节点允许包含的最大数据点的数目;
步骤2:根据参数θ,计算经度和纬度上的方差,或者计算所有维度上的方差,选择方差最大的维度为划分维度,计算划分维度上的中值,把当前数据集划分到左右子树;
步骤3:根据步骤2计算到的划分维度和其上的中值,更新左右子树的最小外接矩形;
步骤4:重复步骤2和步骤3,直到当前数据集中包含的数据点数目小于等于参数θ’,所述位置优先并维护最小外接矩形的KD树构建完成。
2.根据权利要求1所述的方法,其特征在于,所述步骤1具体包括:
A1:收集原始数据集;
A2:设置参数θ,表示是否在经度和纬度两个位置属性上进行优先划分的阈值,在具体的应用中,设置为每平方公里数据点密度的100倍,若不设置,默认θ等于2000;
A3:设置参数θ’,表示最后生成的KD树中,叶子节点允许包含的最大数据点的数目,若不设置,默认θ’等于1。
3.根据权利要求1所述的方法,其特征在于,所述步骤2具体包括:
B1:判断当前数据集中所包含数据对象的数目是否大于阈值θ ;
B2:如果大于阈值θ,则计算经度和纬度这两个维度上的数据方差,选择方差最大的空间维度作为划分维度;否则,计算所有维度上的数据方差,在所有维度中选择数据方差最大的作为划分维度;
B3:基于步骤B2中确定的划分维度,计算该划分维度上的数据中值,并使用该中值作为对数据集进行进一步划分,把所有在划分维度上小于等于该中值的数据划分到一起形成一个左子树数据集,在划分维度上大于该中值的数据划分为另外一个右子树数据集。
4.根据权利要求1所述的方法,其特征在于,所述步骤3具体包括:
每个非叶节点以最小外接矩形即MBR的方式维护以该节点为根节点的子树中所包含所有数据对象在各个维度上的最大值和最小值;并根据B2所述每次确定的划分维度,以及B3该划分维度上的中值实时更新MBR上的最大点和最小点;若划分维度为d,维度d上作为划分点的数据中值为m,则:
C1:对于左子树数据集需维护的MBR,使用m更新其第d维的最大值;
C2:对于右子树数据集需维护的MBR,使用m更新其第d维的最小值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711059177.9A CN108038118B (zh) | 2017-11-01 | 2017-11-01 | 一种位置优先并维护最小外接矩形的kd树构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711059177.9A CN108038118B (zh) | 2017-11-01 | 2017-11-01 | 一种位置优先并维护最小外接矩形的kd树构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108038118A true CN108038118A (zh) | 2018-05-15 |
CN108038118B CN108038118B (zh) | 2021-10-15 |
Family
ID=62092674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711059177.9A Active CN108038118B (zh) | 2017-11-01 | 2017-11-01 | 一种位置优先并维护最小外接矩形的kd树构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108038118B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657022A (zh) * | 2018-12-08 | 2019-04-19 | 拉扎斯网络科技(上海)有限公司 | 商户查找方法、装置、电子设备和存储介质 |
CN113312436A (zh) * | 2020-07-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100082704A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Real-time kd-tree construction on graphics hardware |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
KR20110124834A (ko) * | 2010-05-12 | 2011-11-18 | 삼성전자주식회사 | 하드웨어를 이용한 케이디 트리 생성 방법 및 장치 |
CN103279972A (zh) * | 2013-05-08 | 2013-09-04 | 中国科学院软件研究所 | 一种基于kd树的并行多维自适应采样与重构方法 |
CN103888205A (zh) * | 2014-03-24 | 2014-06-25 | 上海华为技术有限公司 | 一种电磁波传播预测方法和装置 |
CN103955511A (zh) * | 2014-04-30 | 2014-07-30 | 华南理工大学 | 一种城市3d建筑数据的云平台数据组织和检索方法 |
CN104463940A (zh) * | 2014-12-23 | 2015-03-25 | 中国科学院合肥物质科学研究院 | 一种基于gpu的混合树并行构建方法 |
CN106503196A (zh) * | 2016-10-26 | 2017-03-15 | 云南大学 | 云环境下可扩展存储索引结构的构建和查询方法 |
CN106874421A (zh) * | 2017-01-24 | 2017-06-20 | 聊城大学 | 基于自适应矩形窗口的图像检索方法 |
-
2017
- 2017-11-01 CN CN201711059177.9A patent/CN108038118B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100082704A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Real-time kd-tree construction on graphics hardware |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
KR20110124834A (ko) * | 2010-05-12 | 2011-11-18 | 삼성전자주식회사 | 하드웨어를 이용한 케이디 트리 생성 방법 및 장치 |
CN103279972A (zh) * | 2013-05-08 | 2013-09-04 | 中国科学院软件研究所 | 一种基于kd树的并行多维自适应采样与重构方法 |
CN103888205A (zh) * | 2014-03-24 | 2014-06-25 | 上海华为技术有限公司 | 一种电磁波传播预测方法和装置 |
CN103955511A (zh) * | 2014-04-30 | 2014-07-30 | 华南理工大学 | 一种城市3d建筑数据的云平台数据组织和检索方法 |
CN104463940A (zh) * | 2014-12-23 | 2015-03-25 | 中国科学院合肥物质科学研究院 | 一种基于gpu的混合树并行构建方法 |
CN106503196A (zh) * | 2016-10-26 | 2017-03-15 | 云南大学 | 云环境下可扩展存储索引结构的构建和查询方法 |
CN106874421A (zh) * | 2017-01-24 | 2017-06-20 | 聊城大学 | 基于自适应矩形窗口的图像检索方法 |
Non-Patent Citations (3)
Title |
---|
PENG CHEN等: "Optimized KD Tree Application in Instance-Based Learning", 《2008 FIFTH INTERNATIONAL CONFERENCE ON FUZZY SYSTEMS AND KNOWLEDGE DISCOVERY》 * |
张琴等: "基于空间分割的局部KD树动态构建算法", 《机械工程师》 * |
陈晓康等: "基于改进Kd-Tree构建算法的k近邻查询", 《广东工业大学学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657022A (zh) * | 2018-12-08 | 2019-04-19 | 拉扎斯网络科技(上海)有限公司 | 商户查找方法、装置、电子设备和存储介质 |
CN109657022B (zh) * | 2018-12-08 | 2020-06-30 | 拉扎斯网络科技(上海)有限公司 | 商户查找方法、装置、电子设备和存储介质 |
CN113312436A (zh) * | 2020-07-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
CN113312436B (zh) * | 2020-07-27 | 2024-04-19 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108038118B (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199986B (zh) | 基于hbase和geohash的矢量数据空间索引方法 | |
CN104376053B (zh) | 一种基于海量气象数据的存储与检索方法 | |
CN102521364B (zh) | 一种图上两点间最短路径查询方法 | |
CN106528773A (zh) | 一种基于Spark平台支持空间数据管理的图计算系统及方法 | |
CN102982103A (zh) | 一种olap海量多维数据维存储方法 | |
CN106503196B (zh) | 云环境下可扩展存储索引结构的构建和查询方法 | |
CN107798054A (zh) | 一种基于Trie的范围查询方法及装置 | |
CN103810194A (zh) | 一种地理编码方法、位置查询系统及方法 | |
CN110347680B (zh) | 一种面向云际环境的时空数据索引方法 | |
CN111742308A (zh) | 一种用于数据存储和查询的系统和方法 | |
CN107247799A (zh) | 兼容多种大数据存储的数据处理方法、系统及其建模方法 | |
CN107145526B (zh) | 一种路网下地理社交关键字反最近邻查询处理方法 | |
CN102289466A (zh) | 一种基于区域覆盖的k近邻查询方法 | |
CN109255055A (zh) | 一种基于分组关联表的图数据存取方法和装置 | |
CN108052514A (zh) | 一种处理地理文本Skyline查询的混合空间索引机制 | |
CN113254451B (zh) | 一种数据索引构建方法、装置、电子设备及存储介质 | |
CN106570062A (zh) | 一种路网轨迹不确定移动对象范围查询系统及方法 | |
CN108038118A (zh) | 一种位置优先并维护最小外接矩形的kd树构建方法 | |
CN102253990A (zh) | 一种交互应用多媒体数据的查询方法及其装置 | |
Ding et al. | MO-Tree: an efficient forwarding engine for spatiotemporal-aware pub/sub systems | |
Li et al. | Searching continuous nearest neighbors in road networks on the air | |
CN103500165A (zh) | 一种结合聚类和双key值的高维向量检索方法 | |
CN108509550A (zh) | 一种支持协作处理查询的空间索引结构及其构造方法 | |
CN107908722B (zh) | 基于距离的逆向k排名查询方法 | |
CN111737490B (zh) | 基于银行渠道的知识图谱本体模型生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |