本发明涉及基于位置的服务技术领域,具体涉及一种基于大规模道路网络的高效且隐私的路径规划方法。
背景技术:
随着无线通信和移动定位技术的不断发展,基于位置的服务(lbs)已成为不可或缺的应用。lbs的一个基础问题是路网上的路径规划(也称为最短路径查询),它在一定的优化目标下找到源点与目标点之间的一条最优路径。目前已存在一种平衡搜索树索引g-tree,它实现了对大规模路网的高效最短路径查询,但在可用性和智能化方面存在不足。它依赖于客户端来执行搜索过程中的所有计算,消耗了大量的客户端资源。而且只能处理静态路径规划,没有考虑动态实时交通状态,使得规划的路径并不总是最好的。
云计算模式通过委派云服务器处理查询,提供了一个潜在的解决方案。然而,这种方式需要向云服务器公开整个道路网络、用户查询信息和实时交通数据,而这些数据都具有很高的商业价值,值得lbs提供商保护。因此,如何充分利用云服务器的计算能力,在不泄露有价值信息的情况下提供动态路径规划,是一个具有挑战性的问题。
技术实现要素:
本发明提出一种基于大规模道路网络的高效且隐私的路径规划方法,以解决现有技术中利用云服务器处理查询的同时存在有价值信息泄露风险的问题。
具体采用如下技术方案,一种基于大规模道路网络的高效且隐私的路径规划方法,包括如下步骤:
将静态路网图划分为多个子图,构建一个平衡搜索树,平衡搜索树中节点与静态路网图的子图一一对应,平衡搜索树中根节点对应静态路网图;
将平衡搜索树中的每个叶节点分解为一组外包图和一个链接图,所有外包图均存储于云服务器中,所有链接图、平衡搜索树及实时路况信息存储于雾服务器中,其中,每个外包图中的任何一对顶点是不直接连接的,且每个外包图中的任何一对顶点间的最短距离不小于隐私度量;
获取用户输入的源点和目标点,基于路径查询模型利用云服务器中存储的外包图和雾服务器中存储的链接图、平衡搜索树及实时路况信息搜索从源点到目标点的行驶路径。
静态路网图可被模型化为
进一步地,将静态路网图划分为多个子图,构建一个平衡搜索树具体包括如下步骤:
获取静态路网图并对其进行划分,将静态路网图根据预设分割度划分为多个子图,再将每个子图根据所述预设分割度划分为多个子图,迭代上述过程直至子图中顶点数不大于预设节点大小;假设分割度为f,节点大小为τ,即静态路网图被划分为f个相等大小的子图,再将其每个子图划分为f个子图,迭代这样的过程,直到划分的子图中顶点数不超过τ;
根据静态路网图划分后的父图与子图之间的关系对应构建一个平衡搜索树,平衡搜索树中节点与静态路网图的子图一一对应,平衡搜索树中根节点对应静态路网图,平衡搜索树中每个节点拥有一个唯一标识符,一组边界点和一个距离矩阵。
该划分方法可使每个子图的边界点数量尽可能少以减少之后的路径规划开销,每个节点拥有一个唯一标识符,一组边界点和一个距离矩阵,可提高后期查询效率,实现高效的路径规划查询。
进一步地,平衡搜索树中节点拥有的一个距离矩阵满足如下要求:一个非叶节点的距离矩阵记录其孩子节点中边界点的信息,包括一对边界点之间的最短距离和它们是否相邻的标记;叶节点的距离矩阵记录该节点的边界和其顶点之间的最短距离以及表示它们是否相邻的标记。
每个节点包含一个满足上述要求的距离矩阵,便于后期最短距离的计算,提高最短距离计算的效率。
进一步地,将平衡搜索树中的每个叶节点分解为一组外包图和一个链接图具体包括如下步骤:
获取叶节点和隐私度量;
桥接叶节点中的边界点,对于该叶节点的每个边界点对,若一边界点对之间的最短路径需要经过其他叶节点的边界点计算,则为该叶节点的边集添加一个桥接边,并设置该桥接边的权重为该桥接边对应两个边界点之间的最短距离;
初始化一个顶点对集合,用于存储叶节点中所有顶点对,并初始化一个优先队列为空,该优先队列用于存储候选外包顶点对,该优先队列为一个按顶点对频率降序的键值对结构,其中键为顶点对,值为顶点对的频率;
对于顶点对集合内的每个顶点对,若这一对顶点是不直接连接的,且这一对顶点间的最短距离不小于隐私度量,则枚举这一对顶点间的最短路径的所有候选外包顶点对;对于枚举的每个候选外包顶点对,需更新其在优先队列中的频度,即累加该候选外包顶点对在这一对顶点间的最短路径中的频度;然后将顶点对集合内这一顶点对从中移除,重复上述过程直至顶点对集合为空;
若优先队列不为空,则基于优先队列构建顶点序列,并生成一个外包图,将该外包图加入外包图集中,然后生成链接图,该链接图中的顶点集属于该叶节点的顶点集与外包图集中顶点集的并集,该链接图中的边连接的是该叶节点与外包图中的顶点,该链接图中边的权重为最短距离,然后将能由外包图计算的顶点对从优先队列中移除;重复上述步骤直至优先队列为空;
输出一组外包图和一个链接图。
使用蛮力枚举以找到最优解的方法将每个叶节点分解为一组外包图和一个链接图是昂贵且不可行的,上述启发式的方式将每个叶节点分解为一组外包图和一个链接图,成本可控且可行。
进一步地,基于优先队列构建顶点序列,并生成一个外包图具体包括如下步骤:
获取叶节点、隐私度量和顶点序列;
生成外包图的顶点集:若顶点序列不为空,则选择顶点序列中的第一个顶点加入到外包图的顶点集中,并将其从顶点序列中移除;然后遍历顶点序列中的剩余顶点,若从顶点序列中移除的第一个顶点与剩余的某一顶点直接连接或者两者之间的最短距离小于隐私度量,则将该剩余的某一顶点从顶点序列中移除,否则将该剩余的某一顶点加入到外包图的顶点集中,并将其从顶点序列中移除;重复上述过程直至顶点序列为空;
生成外包图的边集:对于外包图的顶点集中任意两个顶点组成的顶点对,向外包图的边集中增加一条该顶点对构成的边,设置该边的权重为两顶点间的最短距离;
输出一个满足任何一对顶点是不直接连接,且任何一对顶点间的最短距离不小于隐私度量的外包图。
候选外包顶点对:给定子图
δ(vs,vt)=δ(vs,vx)+δ(vx,vy)+δ(vy,vt)
δ(vs,vx)<d或e(vs,vx)∈εi,δ(vy,vt)<d或e(vy,vt)∈εi
δ(vx,vy)≥d并且
通过上述方法分解的每个外包图中的任何一对顶点是不直接连接的,且每个外包图中的任何一对顶点间的最短距离不小于隐私度量,故即使将外包图存储于云服务器中,但云服务器依然无法获取完整的路网数据、实时路况数据和用户的查询数据。
进一步地,输出一个满足任何一对顶点是不直接连接的,且任何一对顶点间的最短距离不小于隐私度量的外包图之前还包括如下步骤:对于外包图的边集中任一边,若外包图的顶点集中存在某一顶点,使得该外包图的边集中任一边的权重等于该任一边对应的两个顶点分别与该某一顶点之间的最短距离之和,则从外包图的边集中移除该任一边。
经过以上步骤生成的外包图是完全图,为了节省云服务器上的存储空间,需要删除不必要的边。
进一步地,利用路径查询模型规划出行驶路径包括仅考虑静态路网下的基础路径规划模式和考虑实时路况信息的智能路径规划模式。本方法包含两种查询模式,可根据客户的需求,即可选择仅考虑静态路网下的基础路径查询,也可选择考虑实时路况信息的智能路径查询。
进一步地,基础路径规划模式具体包括如下过程:
定位源点和目标点所属的叶节点;
若源点和目标点在同一叶节点上,如果源点和目标点连接构成的边属于该叶节点的边集或源点和目标点之间的最短距离小于隐私度量,则使用dijkstra算法计算得到源点到目标点最短距离和最短路径,否则调用算法md-inside-leaf得到源点到目标点的最短距离和不完全最短路径;
若源点到目标点不在同一叶节点上,则调用算法md-outside-leaf得到源点到目标点的最短距离和不完全最短路径;
调用算法pathrecovery恢复得到源点到目标点的最短路径,并最终输出源点到目标点的最短路径和最短距离。
在该方法中,将md-inside-leaf的一部分计算交给云服务器,而云服务器拥有强大的计算能力,使这部分计算比现有技术更高效。对于md-outside-leaf,优化了g*-tree的距离矩阵,在一定程度上也减少了计算开销。所以,该方法的整体计算效率优于现有技术。
进一步地,所述算法md-inside-leaf包括如下过程:
获取源点和目标点,源点和目标点所在的叶节点,以及平衡搜索树;
初始化一个集合,将源点的每个邻居点与目标点的每个邻居点构建成的顶点对加入该集合中;
将该集合发送给云服务器,云服务器使用一组外包图计算该集合中的每个顶点对的最短距离,对于没有计算结果的顶点对,默认其最短距离为∞,云服务器返回一个该集合中所有顶点对对应的最短距离的集合,其中∞表示无穷大;
计算得到源点到目标点的最短距离和不完整的最短路径;
所述算法md-outside-leaf包括如下过程:
获取源点和目标点,源点和目标点分别所在的两个叶节点,以及平衡搜索树;
在平衡搜索树中找到两个叶节点的最小公共祖先节点,在平衡搜索树中找到两个叶节点之间的最短节点路径;
计算得到源点到目标点的最短距离和不完整的最短路径;
所述算法pathrecovery包括如下过程:
获取源点到目标点的最短距离和不完整最短路径,以及平衡搜索树和静态路网图;
循环处理不完整最短路径中的每条边,判断该边是否为静态路网图中的一条边;
若该边是静态路网图中的一条边,则将该边加入到完整最短路径中,并从不完整最短路径中移除该边;
若该边不是静态路网图中的一条边,迭代每个与该边起始点相连的某一顶点,若满足该边起始点到该某一顶点的权重与该某一顶点到该边终点的最短路径之和等于该边的起始点到终点的最短距离,则将该边起始点与该某一顶点连接构成的边加入到完整最短路径汇总,将该某一顶点与该边的终点构成的边加入到不完整最短路径中,并从不完整最短路径中移除该边;
循环上述处理过程至不完整最短路径为空,得到源点到目标点的完整最短路径。
在md-inside-leaf算法中,移动用户与云服务器交互以加速查询,在这个过程中,云不会知道用户的真正查询和轨迹;算法md-outside-leaf可快速查询得到不完整最短路径和最短距离;算法md-inside-leaf和算法md-outside-leaf得到的均为不完整路径,而在实际中我们必须获得完整的路径才有意义,算法pathrecovery则可以恢复完整的最短路径
进一步地,智能路径规划模式包括如下过程:
雾服务器获取用户输入的源点和目标点,以及时刻;
首先雾服务器采用基础路径规划模式的路径规划过程得到静态路网下的源点到目标点的最短路径;
初始化一个智能化路径,将得到的静态路网下的最短路径赋值给智能化路径;
基于该时刻下的实时路况信息,构造一个由静态路网下的最短路径中所有拥塞边组成的序列,然后以启发式方式调整源点与目标点之间的最短路径,所有拥塞路径调整完后,得到源点到目标点的最终智能化路径和路径成本并输出给用户。
以启发式方式调整源点与目标点之间的最短路径过程中,若拥塞边的两个顶点vx和vy属于同一个叶节点
若拥塞边的两个顶点vx和vy是不同叶节点的边界点,即它们分别为两个子图的边界点。在这种情况下,找到与vx相连的其它边界点代替vy。对于与vx相邻的每个边界点b,计算其距目标点vt的最短距离δ(b,vt)。在δ(b,vt)小于阈值θy的所有边界点中,选择与vx构成的边权重最小的边界点。
在上述两种情况中,如果最短路径改变,需要调整ip(vs,vt)中对应的路径以及成本δ*(vs,vt),并更新拥塞边组成的序列。
由于实时路况数据具有很高的商业价值,保护这些数据是非常有必要的。我们既不想将其存储在不可靠的云服务器中,也不想将其分发给用户失去其价值。所以,我们使用比云服务器更安全可靠的雾服务器来保护这些数据。该模式涉及移动用户、雾服务器和云服务器之间的交互,移动用户直接将查询委托给雾服务器,当然,在这种情况下,雾服务器一旦收到请求,首先得到完整的最短路径和距离,然后结合实时路况信息得到更佳的路径和相关成本。特别的是,对于md-inside-leaf查询,雾服务器可能会要求云参与。
有益效果
本发明提出了一种高效且隐私的智能路径规划方案,该方案中云服务器分担计算,雾服务器规划更优路径,使用户的查询更加高效与智能,同时保证路网数据和用户查询的隐私性,主要思想是将原路网划分并形成一个平衡搜索树,在不泄露路网数据的条件下将平衡搜索树的叶节点外包给云服务器,其余存储在雾服务器中,雾服务器可以隐私地与云交互提高查询效率,并智能地为用户规划出更优的路径。与现有技术相比,具有如下优点:
1、高可用性:移动用户可以充分利用云服务器的计算能力,降低客户端的资源消耗;
2、智能服务:雾服务器能够综合考虑实时交通状况和路径距离实现智能路径规划,使移动用户可以享受到更好的服务;
3、增强隐私性:保护数据隐私和查询隐私,避免受到不受信任的云服务器的攻击。
附图说明
图1是本发明实施例中路径规划方法的总体框架图;
图2是本发明实施例中静态路网图的划分示意图;
图3是本发明实施例中平衡搜索树构建示意图;
图4是本发明实施例中生成外包图的过程示意图;
图5是本发明实施例中基础路径规划模式的规划流程示意图;
图6是本发明实施例中智能路径规划的示例图;
图7是本发明实施例中智能路径规划的流程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
本发明提供了一种基于大规模道路网络的高效且隐私的路径规划方法,包括如下步骤:
将静态路网图进行划分,构建一个平衡搜索树,平衡搜索树中节点与静态路网图的子图一一对应,平衡搜索树中根节点对应静态路网图;
其中,将静态路网图进行划分,构建一个平衡搜索树具体包括如下步骤:
获取静态路网图,根据预设分割度和节点大小将静态路网图划分为多个子图,即将静态路网图根据预设分割度划分为多个子图,再将每个子图根据所述预设分割度划分为多个子图,迭代上述过程直至子图中顶点数不大于预设节点大小;
根据静态路网图划分后的父图与子图之间的关系对应构建一个平衡搜索树,平衡搜索树中节点与静态路网图的子图一一对应,平衡搜索树中根节点对应静态路网图,平衡搜索树中每个节点拥有一个唯一标识符,一组边界点和一个距离矩阵。当然,每个节点还包括顶点集、边集和每条边的权重。
其中,平衡搜索树中节点拥有的一个距离矩阵满足如下要求:一个非叶节点的距离矩阵记录其孩子节点中边界点的信息,包括一对边界点之间的最短距离和它们是否相邻的标记;叶节点的距离矩阵记录该节点的边界和其顶点之间的最短距离以及表示它们是否相邻的标记。
将平衡搜索树中的每个叶节点分解为一组外包图和一个链接图,所有外包图均存储于云服务器中,所有链接图、平衡搜索树及实时路况信息存储于雾服务器中,其中,每个外包图中的任何一对顶点是不直接连接的,且每个外包图中的任何一对顶点间的最短距离不小于隐私度量;
其中,将平衡搜索树中的每个叶节点分解为一组外包图和一个链接图具体包括如下步骤:
获取叶节点和隐私度量;
桥接叶节点中的边界点,对于该叶节点的每个边界点对,若一边界点对之间的最短路径需要经过其他叶节点的边界点计算,则为该叶节点的边集添加一个桥接边,并设置该桥接边的权重为该桥接边对应两个边界点之间的最短距离;
初始化一个顶点对集合,用于存储叶节点中所有顶点对,并初始化一个优先队列为空,该优先队列用于存储候选外包顶点对,该优先队列为一个按顶点对频率降序的键值对结构,其中键为顶点对,值为顶点对的频率;
对于顶点对集合内的每个顶点对,若这一对顶点是不直接连接的,且这一对顶点间的最短距离不小于隐私度量,则枚举这一对顶点间的最短路径的所有候选外包顶点对;对于枚举的每个候选外包顶点对,需更新其在优先队列中的频度,即累加该候选外包顶点对在这一对顶点间的最短路径中的频度;然后将顶点对集合内这一顶点对从中移除,重复上述过程直至顶点对集合为空;
若优先队列不为空,则基于优先队列构建顶点序列,并生成一个外包图,将该外包图加入外包图集中,然后生成链接图,该链接图中的顶点集属于该叶节点的顶点集与外包图集中顶点集的并集,该链接图中的边连接的是该叶节点与外包图中的顶点,该链接图中边的权重为最短距离,然后将能由外包图计算的顶点对从优先队列中移除;重复上述步骤直至优先队列为空;
输出一组外包图和一个链接图。
其中,基于优先队列构建顶点序列,并生成一个外包图具体包括如下步骤:
获取叶节点、隐私度量和顶点序列;
生成外包图的顶点集:若顶点序列不为空,则选择顶点序列中的第一个顶点加入到外包图的顶点集中,并将其从顶点序列中移除;然后遍历顶点序列中的剩余顶点,若从顶点序列中移除的第一个顶点与剩余的某一顶点直接连接或者两者之间的最短距离小于隐私度量,则将该剩余的某一顶点从顶点序列中移除,否则将该剩余的某一顶点加入到外包图的顶点集中,并将其从顶点序列中移除;重复上述过程直至顶点序列为空;
生成外包图的边集:对于外包图的顶点集中任意两个顶点组成的顶点对,向外包图的边集中增加一条该顶点对构成的边,设置该边的权重为两顶点间的最短距离;
输出一个满足任何一对顶点是不直接连接的,且任何一对顶点间的最短距离不小于隐私度量的外包图。
其中,输出一个满足任何一对顶点是不直接连接的,且任何一对顶点间的最短距离不小于隐私度量的外包图之前还包括如下步骤:对于外包图的边集中任一边,若外包图的顶点集中存在某一顶点,使得该外包图的边集中任一边的权重等于该任一边对应的两个顶点分别与该某一顶点之间的最短距离之和,则从外包图的边集中移除该任一边。
获取用户输入的源点和目标点,基于路径查询模型利用云服务器中存储的外包图和雾服务器中存储的链接图、平衡搜索树及实时路况信息搜索从源点到目标点的行驶路径。
其中,利用路径查询模型规划出行驶路径包括仅考虑静态路网下的基础路径规划模式和考虑实时路况信息的智能路径规划模式。
其中,基础路径规划模式具体包括如下过程:
定位源点和目标点所属的叶节点;
若源点和目标点在同一叶节点上,如果源点和目标点连接构成的边属于该叶节点的边集或源点和目标点之间的最短距离小于隐私度量,则使用dijkstra算法计算得到源点到目标点最短距离和最短路径,否则调用算法md-inside-leaf得到源点到目标点的最短距离和不完全最短路径;
若源点到目标点不在同一叶节点上,则调用算法md-outside-leaf得到源点到目标点的最短距离和不完全最短路径;
调用算法pathrecovery恢复得到源点到目标点的最短路径,并最终输出源点到目标点的最短路径和最短距离。
其中,所述算法md-inside-leaf包括如下过程:
获取源点和目标点,源点和目标点所在的叶节点,以及平衡搜索树;
初始化一个集合,将源点的每个邻居点与目标点的每个邻居点构建成的顶点对加入该集合中;
将该集合发送给云服务器,云服务器使用一组外包图计算该集合中的每个顶点对的最短距离,对于没有计算结果的顶点对,默认其最短距离为∞,云服务器返回一个该集合中所有顶点对对应的最短距离的集合,其中∞表示无穷大;
计算得到源点到目标点的最短距离和不完整的最短路径;
dijkstra算法为现有公知算法,在此就不多做赘述;
所述算法md-outside-leaf包括如下过程:
获取源点和目标点,源点和目标点分别所在的两个叶节点,以及平衡搜索树;
在平衡搜索树中找到两个叶节点的最小公共祖先节点,在平衡搜索树中找到两个叶节点之间的最短节点路径;
计算得到源点到目标点的最短距离和不完整的最短路径;
所述算法pathrecovery包括如下过程:
获取源点到目标点的最短距离和不完整最短路径,以及平衡搜索树和静态路网图;
循环处理不完整最短路径中的每条边,判断该边是否为静态路网图中的一条边;
若该边是静态路网图中的一条边,则将该边加入到完整最短路径中,并从不完整最短路径中移除该边;
若该边不是静态路网图中的一条边,迭代每个与该边起始点相连的某一顶点,若满足该边起始点到该某一顶点的权重与该某一顶点到该边终点的最短路径之和等于该边的起始点到终点的最短距离,则将该边起始点与该某一顶点连接构成的边加入到完整最短路径汇总,将该某一顶点与该边的终点构成的边加入到不完整最短路径中,并从不完整最短路径中移除该边;
循环上述处理过程至不完整最短路径为空,得到源点到目标点的完整最短路径。
智能路径规划模式包括如下过程:
雾服务器获取用户输入的源点和目标点,以及时刻;
首先雾服务器采用基础路径规划模式的路径规划过程得到静态路网下的源点到目标点的最短路径;
初始化一个智能化路径,将得到的静态路网下的最短路径赋值给智能化路径;
基于该时刻下的实时路况信息,构造一个由静态路网下的最短路径中所有拥塞边组成的序列,然后以启发式方式调整源点与目标点之间的最短路径,所有拥塞路径调整完后,得到源点到目标点的最终智能化路径和路径成本并输出给用户。
下面结合一具体实施例和附图来对阐述本发明的内容。
本方案基于一个综合的服务框架bcloud-ifog,它由盲云服务器(对应于bcloud)和智能雾服务器(对应于ifog)组成。在此框架的基础上,提出了本方案的一种外包的实时路径规划方法,以实现高效、隐私和智能的路径规划。
本实施例中出现的符号所代表的含义如下表所示。
如图1所示,本bcloud-ifog框架由四部分组成:lbs提供者(lbsprovider)、移动用户(mobileuser)、云服务器(cloudserver)、雾服务器(fogserver)。lbs提供商作为原始路网图g的数据所有者,将g的非机密数据外包给云服务器,将g的机密数据(如实时交通数据)分享给所有的雾服务器,使得移动用户不仅可以将搜索过程中的大部分计算委托给云服务器,还可以享受来自雾服务器的智能路径规划服务。
具体来说,为了提高查询效率,lbs提供者首先通过划分静态路网图
具体的,一个路网可以被模型化为一个无向加权图g=(v,e,w,w*),其中v是一组顶点,代表一组pois(兴趣点,可以是一个店铺、一栋房子或一个公交站等)或路口,e是一组表示道路连接的边,w和w*分别代表每条边的静态和动态权重。||v||和||e||分别定义为g中顶点和边的数量。给定一组顶点v=(v1,...,vn),连接顶点vi和vj的边被定义为e(vi,vj),该边的静态权重被定义为w(vi,vj),即为顶点vi与vj之间的欧几里得距离(非负值),动态权重被定义为w*(vi,vj),即该边在(t,c)的实时权重,其中t时刻是否拥塞用c∈{0,1}定义。路径p(vs,vt)由一系列边<e(vs,vi),...,e(vj,vt)>表示,路径的权重之和为vs到vt的距离dist(p(vs,vt))。若距离是最短的,则该路径为最短路径sp(vs,vt),对应的最短距离为δ(vs,vt)。
本实施例中,
智能路径规划既考虑了距离,又考虑了实时路况。在t时查询vs到vt的最短距离表示为q=(vs,vt,t)。成本函数中的距离比重为α,路况为比重β,其中α,β∈r+,α+β=1,则路径成本φ可以用以下等式计算:
其中λ∈z+用于增加拥塞边的权重,等式中的第一部分与路径距离相关,第二部分与拥塞状态相关。ip(vs,vt)表示智能规划出的最小成本路径,其最小成本为δ*(vs,vt)。
符号[n]和[n1,n2]分别表示集合{1,...,n}和{n1,...,n2}。我们用
给定分割度f,我们将原图划分为f个子图,即
顶点完整性:
顶点不相交性:给定i≠j,则
子图完整性:对于
我们将原图称为
由于在图划分之后,在原始图中一部分连接的顶点被分到不同的子图。我们用以下定义区分这种顶点与其他顶点:
给定一个叶节点
在g*-tree中,每个节点都有一个如下定义的距离矩阵:
一个非叶节点的距离矩阵记录其孩子边界点的信息,包括一对边界点之间的最短距离和它们是否相邻的标记。叶节点的距离矩阵记录该节点的边界和其顶点之间的最短距离以及表示它们是否相邻的标记。
每个非叶节点有f个孩子;
每个叶节点至多有τ个顶点,所有的叶节点出现在同一层;
每个节点包含一个唯一节点标识符
以上前三个条件确保
g*-tree中每个叶节点
1-neighborhood-d-radius属性:对于任何一对顶点
在该定义中,我们首先将有边连接的两个顶点视为隐私的(1-neighborhood)。其次,在路网中,如果两个顶点之间的距离较近(阈值为d),即便没有连接,它们之间的关系也是重要的,并且需要保护。隐私度量d定义的就是外包图中顶点之间的最短距离的阈值(d-radius)。也就是说,任何两个顶点是相连的或距离小于d,这两个顶点是不会出现在同一个外包图中。而链接图
如果两个顶点
注意等式(3)相关的最短路径由多条边组成,每条边由等式每一项的两个顶点形成。例如,最短距离
候选外包顶点对:给定子图
δ(vs,vt)=δ(vs,vx)+δ(vx,vy)+δ(vy,vt)
δ(vs,vx)<d或e(vs,vx)∈εi,δ(vy,vt)<d或e(vy,vt)∈εi
δ(vx,vy)≥d并且
本方案主要思路是:路网规模的增长使高查询效率成为路径规划的迫切需求。最先进的g-tree结构允许在大规模路网上进行高效的最短路径查询。但是,它要求客户端在搜索过程中执行所有计算,导致可用性低。g-tree结构的查询分为两类:查询顶点在同一个叶子图(md-inside-leaf)和查询顶点在不同的叶子图(md-outside-leaf),它们的搜索成本分别随着叶节点大小τ和树高度h的增加而增长,而高度h与叶节点大小τ成反比。换句话说,md-outside-leaf的查询性能更高将导致md-inside-leaf的查询性能降低。我们的目标是同时降低两种查询的成本。我们的主要想法是构建一个改进的g*-tree结构,并将子图转换生成一组具有1-neighborhood-d-radius属性的外包图,让云服务器分担md-inside-leaf中的搜索成本。由于不可信的云可能是一个潜在的攻击者,我们方案需要尽可能保护lbs提供商的数据隐私和移动用户的查询隐私,即不能让云获得完整的路网,也不能知道用户的真实轨迹。除此之外,我们还考虑实现智能化的查询,即在实时交通下的路径规划。
为了实现隐私和高效的最短路径查询,我们构建了一个g*-tree结构,并将每个叶节点转换生成一组具有1-neighborhood-d-radius属性的外包图,在不泄露隐私的情况下让云服务器参与计算。该基础方案的过程如下:
g*-tree的构建
我们设计算法一treegen构建一个g*-tree。
算法一(treegen):首先输入原始静态路网图
步骤1:使用参数f和τ将图
步骤2:构造g*-tree节点。我们根据图的父子关系构建g*-tree节点的父子关系。每个叶节点与一个最小子图(顶点数不超过τ)对应,叶节点的数量等于子图的数量。每个非叶节点与其孩子节点的超图对应,根节点对应于图
步骤3:构建距离矩阵:g*-tree中的每个节点都拥有一个如定义3的距离矩阵,这对于最短距离计算是必不可少的。划分后的每个子图都有一组如定义2所述的边界点,而距离矩阵则是根据边界点构建的。对于叶节点的距离矩阵,矩阵的行和列分别为该节点的顶点和边界点,矩阵中的每项为它们之间的最短距离和是否相邻的标记。对于非叶节点的距离矩阵,行和列均为其所有孩子节点边界点的并集,矩阵中的每项为它们之间的最短距离和是否相邻的标记,为了节省存储空间,如果行与列的边界点来自同一个孩子节点,则不记录该项。
输出:
例如在图2中,给定f=2,τ=5。首先将原始静态图
g*-tree的转换
对于g*-tree的每个叶节点
算法二(subgraphtrans):首先输入叶节点
步骤1:桥接叶节点中的边界点,对于该叶节点的每个边界点对
步骤2:
初始化一个集合p,用于存储
对于每个顶点对(vs,vt)∈p,如果
步骤3:如果q不为空,则基于q构建顶点序列
输出:
在算法二中调用了算法三outgraphgen,算法三的执行过程如下:
算法三(outgraphgen):输入叶节点
步骤1(生成外包图的顶点集vio):如果
步骤2(生成外包图的边集
步骤3(删除不必要边):经过以上步骤生成的外包图是完全图。为了节省云服务器上的存储空间,需要删除不必要的边。即对于vio中的每个顶点对(vs,vt),如果
输出:一个具有1-neighborhood-d-radius属性的外包图
如图4所示,我们以子图
查询过程
在该方案中,移动用户和云服务器之间的search协议可以查询源点vs与目标点vt之间的最短路径及其距离。设定有一个哈希表记录了每个顶点和其所属叶节点之间的关系。给定查询q(vs,vt),用户首先使用哈希表定位到vs和vt所属的叶节点。然后进行查询,形式上,查询可以分为两种类型:(1)md-inside-leaf:vs和vt位于相同的叶节点。我们使用dijkstra算法或调用算法五md-inside-leaf得到查询结果。(2)md-outside-leaf:vs和vt位于不同的叶节点。这种情况下,移动用户将基于g*-tree调用算法六md-outside-leaf。针对这两种查询,生成的路径都是不完整的。因此,在最后一步中,移动用户使用算法七pathrecovery恢复得到完整的最短路径。基础路径规划模式的流程图如图5,具体描述如下:
算法四(search):输入一个查询q(vs,vt),然后移动用户和云服务器分别执行以下步骤:
移动用户:
步骤1:使用哈希表定位到vs和vt所属的叶节点,分别用
步骤2:判断vs和vt是否在同一个叶节点。
步骤3:调用算法pathrecovery恢复得到完整路径sp(vs,vt)。
输出:sp(vs,vt)和δ(vs,vt)
云服务器:移动用户调用md-inside-leaf时,会与云服务器交互,用户发送一组候选顶点对p让云查询每对的最短距离,步骤如下:
步骤1:收到移动用户发送的一组顶点对
步骤2:使用
输出:
在search协议中,调用了几个其它的算法,我们分别进行描述:
算法五(md-inside-leaf):该算法为起始点vs与目标点vt属于同一个叶节点,且
步骤1:初始化一个集合
步骤2:将vs的每个邻居点与vt的每个邻居点构建成的顶点对加入p。例如,vx为vs的邻居点,vy为vt的邻居点,我们将
步骤3:发送p给云服务器,云服务器返回
步骤4:使用等式(3)计算得δ(vs,vt)和
输出:
在该算法中,移动用户与云服务器交互以加速查询。例如给定查询q(v8,v9),移动用户仅发送一组候选外包顶点对
算法六(md-outside-leaf):该算法为起始点vs与目标点vt不属于同一个叶节点时调用。首先输入查询q(vs,vt),叶节点
步骤1:在
步骤2:在
步骤3:使用等式(4)和等式(5)计算δ(vs,vt)和
其中,
输出:
算法五和算法六得到的均为不完整路径,而在实际中我们必须获得完整的路径才有意义,算法七pathrecovery则可以恢复完整的最短路径。
算法七(pathrecovery):输入最短距离δ(vs,vt),不完整的最短路径
步骤1:循环处理
步骤2:e(vx,vy)为源图中的一条边,即e(vx,vy)∈ε∧w(vx,vy)=δ(vx,vy)。那么e(vx,vy)为完整的,加入sp(vs,vt),并从
步骤3:e(vx,vy)不是源图中的一条边。根据路网的连通性,最短路径一定会经过vx的一个邻居点。所以迭代每个与vx相连的顶点,设该点为vn,如果满足w(vx,vn)+δ(vn,vy)=δ(vx,vy),则路径经过vn,其中e(vx,vn)为完整的,加入sp(vs,vt),而e(vn,vy)需要加入
输出:sp(vs,vt)
在我们的方案中,用户将md-inside-leaf的一部分计算交给云服务器,而云服务器拥有强大的计算能力,使这部分计算比现有技术更高效。对于md-outside-leaf,我们优化了g*-tree的距离矩阵,省略了非叶节点中边界点来自同一节点的距离值,在一定程度上也减少了计算开销。所以,我们方案的整体计算效率优于现有技术。
如图6所示,在基础方案中仅考虑静态路网中的路径规划,而没有考虑到实时路况对智能化查询有很大影响。例如,查询v3到v8的路径,在静态路网中查询的距离最短为φ(p(v3,v8))=δ(v3,v8)=14,对应的最短路径如图6-(a)粗线所示,即sp(v3,v8)=<e(v3,v2),e(v2,v1),e(v1,v5),e(v5,v15),e(v15,v6),e(v6,v7),e(v7,v8)>。然而,当考虑实时路况时发现,sp(v3,v8)中e(v5,v15)和e(v15,v6)是拥塞的,根据等式(2),设α=0.4,β=0.6,λ=2,则计算得该路径成本为8,如果我们使用e(v5,v6)避免这两个拥塞段,路径成本仅为6。我们可以使用等式(2)计算v3到v8所有通路的路径成本,找到成本最小的智能化路径,最终计算得该智能化路径为ip(v3,v8)=〈e(v3,v2),e(v2,v1),e(v1,v5),e(v5,v6),e(v6,v7),e(v7,v8)>,如图6-(b)的粗虚线所示。因此,我们提出一个高级方案,考虑实时路况因素,以规划出更合理的路径。
由于实时路况数据具有很高的商业价值,保护这些数据是非常有必要的。我们既不想将其存储在不可靠的云服务器中,也不想将其分发给用户失去其价值。所以,我们使用比云服务器更安全可靠的雾服务器来保护这些数据。显然,增加了雾服务器层次,search协议也要随之改变,该协议用算法八search*表示。如图7所示,智能路径规划模式它涉及移动用户、雾服务器和云服务器之间的交互。与search协议不同,search*中,移动用户直接将查询q(vs,vt,t)委托给雾服务器,当然,在这种情况下,用户不需要下载链接图或g*-tree。雾服务器一旦收到请求,首先会像search协议中移动用户那样工作,得到完整的最短路径和距离,然后调用irouteplan算法得到更佳的路径和相关成本。特别的是,对于md-inside-leaf查询,雾服务器可能会要求云参与。
算法八(search*):输入一个查询q(vs,vt,t),然后移动用户、雾服务器和云服务器分别执行以下步骤:
移动用户:
步骤:向雾服务器发送q(vs,vt,t)
输出:然后得到ip(vs,vt)和δ*(vs,vt)
雾服务器:
步骤1:与search协议中移动用户的工作相同,得到sp(vs,vt)和δ(vs,vt)
步骤2:调用算法irouteplan得到ip(vs,vt)和δ*(vs,vt)
输出:ip(vs,vt)和δ*(vs,vt)
云服务器:
步骤:与search协议的工作相同,但是与雾服务器交互
输出:
算法九(irouteplan)是一个智能路径规划算法。最直接的方式是让雾服务器重新使用等式(2)计算最小成本路径。这是一种全局最优,但是开销很高。事实上,拥塞状态是实时变化的,全局最优只是暂时的。所以,我们的算法是折中的,产生局部最优结果,以提高搜索效率。
主要思想是首先初始化一个智能化路径ip(vs,vt)=sp(vs,vt),构造一个由sp(vs,vt)中所有拥塞边组成的序列c,然后以启发式方式调整源点vs与目标点vt之间的最短路径sp(vs,vt)。我们将拥塞边(vx,vy)的状态分为两种情况:
vx和vy属于同一个叶节点
vx和vy是不同叶节点的边界点,即它们分别为两个子图的边界点。在这种情况下,我们尝试找到与vx相连的其它边界点代替vy。对于与vx相邻的每个边界点b,计算其距目标点vt的最短距离δ(b,vt)。在δ(b,vt)小于阈值θy的所有边界点中,选择与vx构成的边权重最小的边界点。在这两种情况中,如果最短路径改变,需要调整ip(vs,vt)中对应的路径以及成本δ*(vs,vt),并更新拥塞序列c。
所有拥塞路径调整完后,将得到(δ*(vs,vt),ip(vs,vt))。
隐私度量d为外包图中顶点间最短距离的阈值,只有距离大于等于d的才有可能外包,小于d的将作为链接图的边。如果阈值d过大,也就是说,我们将距离较远的两个顶点视为隐私的,将导致链接图的规模变大,用户的计算量变大。如果阈值d很小,则外包的顶点变多,外包成本变大。我们很难找到一个折中值。为了节省计算成本,我们在实验过程中简单地利用边权重的平均值
在irouteplan算法中,边界点距目标点的最短距离小于阈值时,将被视为智能规划路径中的候选顶点。因此,θl和θy的值对智能路径规划的结果有很大影响。如果阈值很小,则会过滤掉大部分边界点。如果阈值很大,则大部分边界点将被视为候选点。但是,在恢复每个边界点与目标顶点之间的完整最短路径之前,很难确定合适的值。为了节省计算成本,我们简单地将θl和θy分别设置为
本方案基于大规模道路网络提出一种高效且隐私的智能路径规划方法。lbs提供者划分静态路网图并构建成一个平衡搜索树g*-tree,然后将g*-tree中每个叶节点转换成两部分——外包图和链接图。外包图存放在云服务器中,链接图、g*-tree及实时路况信息存放在雾服务器中,移动用户可以在雾服务器中下载链接图和g*-tree。
本方案致力于实现高效的查询和智能的路径规划操作,我们多方面分析了本方案的隐私性与性能,并用大规模的真实数据集进行了严谨的实验,以验证方案的高效性。经检验,本方案实现了高效且智能的最短路径查询,并保证了数据的隐私。实验中,采用了大规模的真实数据集进行测试,实验结果证明本方案效率很高(在1百万个顶点的图数据集中,执行更优路径查询时,平均只需要2.4秒)。
1)高可用性。对于md-inside-leaf查询,移动用户要求云服务器计算一组候选最短路径,它使用等式(2)计算。因此,客户端的计算成本大大降低。2)智能服务。雾服务器可以根据实时路况动态调整最短路径。因此,移动用户可以享受智能服务。3)增强隐私。首先,存储在云服务器中的所有外包图满足1-neighborhood-d-radius属性。其次,移动用户仅向云服务器发送候选外包顶点对,云服务器无法知道用户查询的起点和目标,以及移动用户将选择哪条路径。因此,保护了数据隐私和查询隐私。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。