[发明专利]路网上的弹性聚合最近邻查询G-max方法在审
申请号: | 201810342545.9 | 申请日: | 2018-04-17 |
公开(公告)号: | CN108829695A | 公开(公告)日: | 2018-11-16 |
发明(设计)人: | 姚斌;过敏意;陈中普;李超;唐飞龙 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海市汇业律师事务所 31325 | 代理人: | 唐嘉伟 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 最近邻查询 遍历 聚合 孩子节点 聚合函数 叶子节点 有效减少 最小距离 最终结果 初始化 树索引 子节点 入队 出队 调用 查询 更新 | ||
1.一种路网上的弹性聚合最近邻查询G-max方法,其特征在于,包括如下步骤:
第一步,对整个路网建立G树索引;
第二步,定义和初始化:
定义路网G=(V,E,W),其中V表示顶点,E表示边,W表示边的权重,δ(vi,vj)表示vi到vj的路网距离;Q是查询集合(query objects),大小为M;FANN查询定义为:一个FANN查询是一个五元组返回一个三元组使得:
其中p*是V中使得弹性聚合距离最小的点,是Q的最优的弹性子集,r*就是此时的弹性聚合距离;
定义为弹性聚合函数,它接受一个属于V的点p,一个V的子集Q作为输入,返回一个对作为结果,满足:
其中是Q的一个子集且
初始化:将r*初始化为无穷大;构建一个优先级队列,将G树的根节点入队;
第三步,判断队列是否为空;如果队列为空,则结束;否则出队得到x;
第四步,判断x是否是叶子节点;如果x是叶子节点,对于x里面所有的v,计算如有必要更新最终结果,遍历之后回到第三步;否则,进入第五步;
第五步,遍历x的子节点c,计算Q中所有点到c的最小可能距离,得到前最小距离的最大值max,记为τ;
第六步,判断τ是否大于或等于r*;如果τ小于r*,将c的孩子节点入队,回到第三步;如果τ大于或等于r*,则结束。
2.如权利要求1所述的方法,其特征在于,第一步中,所述对整个路网建立G树索引具体为:首先原图进行子图划分,每个子图互不相交,然后对子图进行类似的划分,通过这种递归的方式直到子图里面包含数据点的个数小于设置的阈值;计算每个G树子图的边界点的距离矩阵。
3.如权利要求2所述的方法,其特征在于,所述距离矩阵在构造时采用以下G树上δ的实现方法:
给定路网点u和v,假设其所在的叶子节点分别为Cu和Cv;
当Cu=Cv,首先在该叶子节点内执行局部的Dijkstra算法;如果算法执行过程中不包含任何边界点,那么认为局部Dijkstra算法足够高效;否则,停止Dijkstra算法,使用下面的公式计算δ(u,v):
δ(u,v)=min{δ(u,b1)+δ(b1,b2)+δ(v,b2)|b1,b2∈Bc}
其中Bc是Cu或Cv的边界点的集合;
当Cu≠Cv,显然从u出发达到v的路径必定经过各自所在叶子节点的边界点,令CA为Cu和Cv的最小公共父节点,那么从u到v的最短路径一定会自底向上地从Cu到CA,再自顶向下地从CA到Cv,用公式表示为:
δ(u,v)=min(δ(u,b1)+δ(u,b2)+…+
δ(bm-1,bm)+…+δ(bn,v))
其中b1,b2,...,bn分别是Cu,..,Cv的边界点。
4.如权利要求3所述的方法,其特征在于,所述G树上δ的实现方法,采用动态规划方法求解,将总目标δ(u,v)分解为一系列子目标,通过存储中间过程,在线性时间内得到δ(u,v)的值。
5.如权利要求3或4所述的方法,其特征在于,第四步中,所述计算的结果具体为:使用所述G树上δ的实现方法,遍历Q中的点,计算δ(v,q),q∈Q的距离,取得前最小的最大值max即可。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810342545.9/1.html,转载请声明来源钻瓜专利网。