对等网络中点到点最短路径计算系统的制作方法

文档序号:15237260发布日期:2018-08-24 06:44阅读:216来源:国知局

本发明涉及互联网技术领域,特别涉及一种对等网络中点到点最短路径计算系统。



背景技术:

两点间最短路径问题是一个经典的算法问题,也是许多实际应用中的重要子问题;比如,在电子导航、城市规划、计算机网络与通信、智能交通系统、交通旅游、地理信息系统及工程技术等方面有着广泛的应用。具体地,比如在通信网络中,一个用户与另一个用户进行通信时,需要找到最短的通信路径使得通信最少延时和最低消耗。然而,在现有技术中,计算两点间最短路径的相关方案大都比较复杂,需要消耗大量的计算资源。



技术实现要素:

本发明提供一种对等网络中点到点最短路径计算系统,用以简化最短路径算法,提高最短路径的计算效率,节约计算资源。

本发明提供了一种对等网络中点到点最短路径计算系统,所述对等网络中点到点最短路径计算系统包括:信息获取模块和路径计算模块;其中:

所述信息获取模块用于:获取对等网络中需计算给定起点s和给定终点e之间最短路径的起点信息和终点信息;

所述路径计算模块用于:根据所述信息获取模块获取的所述起点信息和终点信息,提取网络链路中从所述给定起点s到给定终点e之间可能经过的n个不同节点mi;其中,1≤i≤n;

分别计算所述给定起点s至节点mi之间的第一最短路径,以及所述节点mi至所述给定终点e之间的第二最短路径,根据所述第一最短路径和所述第二最短路径确定所述给定起点s至给定终点e之间的最短路径。

优选地,所述路径计算模块提取网络链路中从所述给定起点s到给定终点e之间可能经过的n个不同节点mi,包括:

所述路径计算模块根据所述起点信息和终点信息随机获取从所述给定起点s到给定终点e之间的h条初选路径,并分别计算初选路径的评价值,并从评价值最高的初选路径所经过的节点中选取部分节点作为从所述给定起点s到给定终点e之间可能经过的n个不同节点mi;且在所述评价值最高的初选路径中,mi距离给定起点s越远,i越大;

其中,计算初选路径的评价值包括:

确定当前的所述初选路径中间依次经过的m个不同节点mt,1≤t≤m,并确定所述初选路径包含的相邻的两个节点之间的边权wj,wj>0且0≤j≤m;

确定所述初选路径包含的相邻的两个节点之间的边权小于预设的标准边权ws的边权数量p;

计算所述初选路径的评价值s:

其中,λ为调整系数。

优选地,所述路径计算模块同时计算n组所述给定起点s至节点mi之间的路径,以及所述节点mi至所述给定终点e之间的路径,得到2n段路径结果;

从所述2n段路径结果中,分别找出所述给定起点s至节点mi以及所述节点mi至给定终点e之间最短的路径,得到所述给定起点s至给定终点e之间的最短路径。

优选地,所述路径计算模块利用多核异步并行算法计算n组不同的路径,得到2n段路径结果。

优选地,所述路径计算模块计算n组所述给定起点s至节点mi之间的路径,以及所述节点mi至所述给定终点e之间的路径,取出所述给定起点s至节点mi之间以及所述节点mi至所述给定终点e之间的局部最优子路径进行组合,得到所述给定起点s至给定终点e之间的最短路径。

优选地,所述路径计算模块从所述2n段路径结果中找出路径相交点,若识别出每两个相交点之间有一条以上的路径,则计算并获取两个相交点之间的最短路径,最终获取从所述给定起点s至给定终点e之间的最短路径。

优选地,所述路径计算模块利用欧氏距离中a*算法,搜索并获取两个相交点之间的最短路径。

优选地,所述路径计算模块若识别出每两个相交点之间有一条以上的路径,则仅保留所述两个相交点之间最短的一条路径,删除其他路径信息。

优选地,所述路径计算模块若识别出两个相交点之间有一条以上的路径,且在所述两个相交点之间存在其他节点,则采用迪杰斯特拉算法,计算并获取所述两个相交点之间的最短路径。

优选地,所述分别计算所述给定起点s至节点mi之间的第一最短路径,以及所述节点mi至所述给定终点e之间的第二最短路径,根据所述第一最短路径和所述第二最短路径确定所述给定起点s至给定终点e之间的最短路径,包括:

选取所有节点mi中最后一个节点mn,以u=0为起点,u的步长为1,循环判断节点mn-u是否设有第一标记,在所述节点mn-u没有第一标记时,确定所述给定起点s至所述节点mn-u之间的第一最短路径psn-u,为所述节点mn-u添加第一标记,并判断所述第一最短路径psn-u经过的节点na是否为节点mi中的一个节点;当节点na为节点mi中的一个节点mb时,为所述节点mb添加第一标记,并将所述第一最短路径psn-u中所述给定起点s至所述节点na之间的路径作为所述给定起点s至所述节点mb之间的第一最短路径psb;之后对u执行加一处理,重复执行上述判断mn-u是否设有第一标记的过程,直至u=n-1;

当所述节点mn-u设有第一标记时,则对u执行加一处理并继续循环执行上述判断mn-u是否设有第一标记的过程,直至u=n-1;

选取所有节点mi中第一个节点m1,以v=0为起点,v的步长为1,循环判断节点m1+v是否设有第二标记,在所述节点m1+v没有第二标记时,确定所述节点m1+v至所述给定终点e之间的第二最短路径p1+ve,为所述节点m1+v添加第二标记,并判断所述第二最短路径p1+ve经过的节点nc是否为节点mi中的一个节点;当节点nc为节点mi中的一个节点md时,为所述节点md添加第二标记,并将所述第二最短路径p1+ve中所述节点nc至所述给定终点e之间的路径作为所述节点md至所述给定终点e之间的第二最短路径pde;之后对v执行加一处理,重复执行上述判断m1+v是否设有第二标记的过程,直至v=n-1;

当所述节点m1+v设有第二标记时,则对v执行加一处理并继续循环执行上述判断m1+v是否设有第二标记的过程,直至v=n-1。

优选地,所述路径计算模块在计算并获取所述给定起点s至节点mi之间的第一最短路径、以及所述节点mi至所述给定终点e之间的第二最短路径的过程中,获取与所述最短路径最接近的第二短路径,得到由所述第二短路径组成的所述给定起点s至给定终点e之间的第二短路径,并保存所述第二路径,将保存的所述给定起点s至给定终点e之间的第二短路径作为候选备用路径,以供:所述给定起点s至给定终点e之间的最短路径发生故障时,启用所述候选备用路径。

优选地,所述路径计算模块基于对等网络的拓扑结构,获取所述给定起点s到给定终点e之间可能经过的n个不同节点mi以及各节点mi分别对应的节点信息。

本发明一种对等网络中点到点最短路径计算系统可以达到如下有益效果:

通过信息获取模块获取对等网络中需计算给定起点s和给定终点e之间最短路径的起点信息和终点信息;路径计算模块根据所述信息获取模块获取的所述起点信息和终点信息,提取网络链路中从所述给定起点s到给定终点e之间可能经过的n个不同节点mi;分别计算所述给定起点s至节点mi之间的第一最短路径,以及所述节点mi至所述给定终点e之间的第二最短路径,从而得到所述给定起点s至给定终点e之间的最短路径;具有简化最短路径算法的有益效果,避免了采用大量复杂的算法来获取点到点最短路径的计算方式所带来的计算复杂度过大的问题,提高了计算效率,节约了计算资源和计算时间。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所指出的内容来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1是本发明一种对等网络中点到点最短路径计算系统的一种实施方式的功能模块示意图;

图2是本发明一种对等网络中点到点最短路径计算系统的一种实施方式的工作流程示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

本发明提供一种对等网络中点到点最短路径计算系统,用以简化最短路径算法,提高最短路径的计算效率,节约计算资源。本发明对等网络中点到点最短路径计算系统中(以下简称“计算系统”),所描述的对等网络即p2p(peer-to-peer,点对点)网络,也可以称为“对等计算机网络”,是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。学术界将p2p统一称为对等网络(peer-to-peernetworking)或对等计算(peer-to-peercomputing),其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(server),又是资源、服务和内容的获取者(client)。也可以理解为:在p2p网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站,整个网络一般来说不依赖专用的集中服务器,也没有专用的工作站。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。通常这些资源和服务包括:信息的共享和交换、计算资源(比如cpu计算能力共享)、存储共享(比如缓存和磁盘空间的使用)、网络共享、打印机共享等。

如图1所示,图1是本发明一种对等网络中点到点最短路径计算系统的一种实施方式的功能模块示意图,本发明一种对等网络中点到点最短路径计算系统包括:信息获取模块100和路径计算模块200,信息获取模块100获取给定起点s的起点信息以及给定终点e对应的终点信息,路径计算模块200根据信息获取模块100获取的给定起点s和给定终点e分别对应的节点信息,计算并获取给定起点s至给定终点e之间的最短路径信息,得到给定起点s和给定终点e之间的最短路径。

图2是本发明一种对等网络中点到点最短路径计算系统的一种实施方式的工作流程示意图,如图2所示,本发明对等网络中点到点最短路径计算系统的其中一种工作流程可以实施为如下描述的步骤s10-s30:

步骤s10、信息获取模块100获取对等网络中需计算给定起点s和给定终点e之间最短路径的起点信息和终点信息;

本发明实施例中,信息获取模块100获取对等网络中的给定起点s和给定终点e,并获取上述给定起点s及给定终点e分别对应的节点信息、节点在网络结构中的位置等。

在本发明一优选的实施例中,信息获取模块100基于对等网络的拓扑结构,获取所述给定起点s和给定终点e分别对应的节点信息,以及所述给定起点s和给定终点e在网络拓扑结构中所位于的网络层级和节点位置。

步骤s20、路径计算模块200根据所述信息获取模块100获取的所述起点信息和终点信息,提取网络链路中从所述给定起点s到给定终点e之间可能经过的n个不同节点mi;其中,1≤i≤n;

为了便于寻找给定起点s到给定终点e之间的最短路径,路径计算模块200根据起点信息和终点信息,例如,给定起点s和给定终点e分别对应的节点信息、节点在对等网络中的层级以及位置,提取网络链路中从给定起点s到给定终点e之间可能经过的n个不同节点mi;假设n=3,则给定起点s至给定终点e的一条路径可以为s→m1→m2→m3→e。

在本发明一优选的实施例中,路径计算模块200基于对等网络的拓扑结构,获取所述给定起点s至给定终点e之间可能经过的n个不同节点mi以及各节点mi分别对应的节点信息。由于对等网络可能是单层级网络,也可能是多层级网络,针对拓扑结构为多层级网络的对等网络,根据该对等网络的拓扑结构来获取对应的n个不同节点mi以及节点mi对应的节点信息时,将更加便捷和高效。其中,所述节点mi对应的节点信息包括但不限于:节点属性和节点在网络拓扑结构中所处的网络层级和位置。

步骤s30、路径计算模块200分别计算所述给定起点s至节点mi之间的第一最短路径,以及所述节点mi至所述给定终点e之间的第二最短路径,根据所述第一最短路径和所述第二最短路径确定所述给定起点s至给定终点e之间的最短路径。

路径计算模块200在计算给定起点s至给定终点e之间的最短路径时,可以将其转换为:寻找给定起点s至中间节点mi之间的第一最短路径,以及中间节点mi至所述给定终点e之间的第二最短路径,进而将上述两段最短路径进行组合,得到所述给定起点s至给定终点e之间的最短路径。

在本发明一优选的实施例中,路径计算模块提取网络链路中从给定起点s到给定终点e之间可能经过的n个不同节点mi,具体包括如下步骤:

根据起点信息和终点信息随机获取从给定起点s到给定终点e之间的h条初选路径,并分别计算初选路径的评价值,并从评价值最高的初选路径所经过的节点中选取部分节点作为从给定起点s到给定终点e之间可能经过的n个不同节点mi;其中,在评价值最高的初选路径中,mi距离给定起点s越远,i越大。

其中,上述计算初选路径的评价值的步骤包括步骤a1-a3:

步骤a1:确定当前的初选路径中间依次经过的m个不同节点mt,1≤t≤m,并确定初选路径包含的相邻的两个节点之间的边权wj,wj>0且0≤j≤m。

本发明实施例中,边权wj不为负数,方便后续采用迪杰斯特拉算法计算最小路径。同时,边权越大,说明经过该边的代价越高。

步骤a2:确定初选路径包含的相邻的两个节点之间的边权小于预设的标准边权ws的边权数量p。

步骤a3:计算初选路径的评价值s:

其中,λ为调整系数。

本发明实施例中,根据路径的评价值确定评价值最高的初选路径,该评价值最高的初选路径在所有的初选路径中最接近s至e之间的最短路径;之后从该评价值最高的初选路径中选取部分节点mi,从而可以进一步优化s至e之间的最短路径,使得最终确定的最短路径与实际的最短路径尽可能匹配。

在本发明一优选的实施例中,为了提高计算效率,路径计算模块200同时计算n组所述给定起点s至节点mi之间的路径,以及所述节点mi至所述给定终点e之间的路径,得到2n段路径结果;从所述2n段路径结果中,分别找出所述给定起点s至节点mi以及所述节点mi至给定终点e之间最短的路径,得到所述给定起点s至给定终点e之间的最短路径。

在本发明一优选的实施例中,若计算系统为多核系统,则为了充分利用系统资源并进一步提高计算效率,所述路径计算模块200利用多核异步并行算法计算n组不同的路径,得到2n段路径结果。

在本发明一优选的实施例中,所述路径计算模块200计算n组所述给定起点s至节点mi之间的路径,以及所述节点mi至所述给定终点e之间的路径,取出所述给定起点s至节点mi之间以及所述节点mi至所述给定终点e之间的局部最优子路径,将上述局部最优子路径进行组合,即可得到所述给定起点s至给定终点e之间的最短路径。

在本发明一优选的实施例中,所述路径计算模块200通过计算n组所述给定起点s至节点mi之间的路径、以及所述节点mi至所述给定终点e之间的路径,得到所述2n段路径结果;识别得到的所述2n段路径结果中,是否存在路径相交点;若所述2n段路径结果中存在对应的路径相交点,则将存在的路径相交点找出来。所述路径计算模块200进一步识别上述相交点中,每两个相交点之间是否存在一条以上的路径;若识别出每两个相交点之间有一条以上的路径,则计算并获取两个相交点之间的最短路径,从而最终获取从所述给定起点s至给定终点e之间的最短路径。

进一步地,为了节约计算系统的存储资源,在本发明一优选的实施例中,所述路径计算模块200若识别出每两个相交点之间有一条以上的路径,则仅保留所述两个相交点之间最短的一条路径,删除其他路径信息。

在本发明一优选的实施例中,若计算得到的所述2n端路径结果中存在对应的路径相交点,则所述路径计算模块200利用欧氏距离中a*算法,搜索并获取两个相交点之间的最短路径。在本发明实施例中,a*(a-star)算法是一种静态路网中求解最短路径最有效的直接搜索方法。本发明实施例中,由于将给定起点s至给定终点e之间(s,e)的最短路径,转换为给定起点s至节点mi之间的第一最短路径(s,mi)以及所述节点mi至所述给定终点e之间的第二最短路径(mi,e)这两个子问题,通常来讲,两个子问题(s,mi)和(mi,e)的搜索空间之和小于原问题(s,e),并且上述两个子问题可以并行求解。由于不能保证一定是(s,e)最短路径上的点,因此即使a*算法的估值函数系数为1,所求得的路径也是近似解。若该系数大于1,则可以更快速地执行完a*算法,因此,本发明实施例中,所述a*算法的估值函数系数设置为大于1的值,并且由此导致的较大的结果误差可以借助冗余的计算而降低。比如,所述路径计算模块200对上述2n条路径中的每一条路径均进行一次遍历,遍历时检查其他路径是否经过此节点,若经过,则该节点为一个相交点。显然,给定起点s和给定终点e一定是相交点。所述路径计算模块200每检查到一个相交点,则该相交点与上一个相交点之间必然有两条以上路径,则借助a*算法的搜索结果可以很容易判断这些路径的长短,所述路径计算模块200保留其中最短的一条路径,最终给定起点s和给定终点e之间只会剩下唯一一条比较优化的路径。

进一步地,在本发明一优选的实施例中,所述路径计算模块200若识别出两个相交点之间有一条以上的路径,且在所述两个相交点之间存在其他节点,则采用迪杰斯特拉算法,计算并获取所述两个相交点之间的最短路径。上述迪杰斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

在本发明一优选的实施例中,上述步骤s30分别计算给定起点s至节点mi之间的第一最短路径,以及节点mi至给定终点e之间的第二最短路径,根据第一最短路径和第二最短路径确定给定起点s至给定终点e之间的最短路径,具体包括步骤b1-b4:

步骤b1:选取所有节点mi中最后一个节点mn,以u=0为起点,u的步长为1,循环判断节点mn-u是否设有第一标记,在节点mn-u没有第一标记时,确定给定起点s至节点mn-u之间的第一最短路径psn-u,为节点mn-u添加第一标记,并判断第一最短路径psn-u经过的节点na是否为节点mi中的一个节点;当节点na为节点mi中的一个节点mb时,为节点mb添加第一标记,并将第一最短路径psn-u中给定起点s至节点na之间的路径作为给定起点s至节点mb之间的第一最短路径psb;之后对u执行加一处理,重复执行上述判断mn-u是否设有第一标记的过程,直至u=n-1。

步骤b2:当节点mn-u设有第一标记时,则对u执行加一处理并继续循环执行上述判断mn-u是否设有第一标记的过程,直至u=n-1。

本发明实施例中,步骤b1-b2为确定给定起点s至所有节点mi的第一最短路径的步骤。从最后一个节点mn开始(即u=0),此时mn一定没有第一标记,故直接确定s至mn之间的第一最短路径psn。若该第一最短路径psn经过节点na,且na为mi中的一个节点mb,即节点na与节点mb为同一个节点,此时s至na的最短路径一定为第一最短路径psn的子路径,即第一最短路径psn的子路径也为最短路径。故,此时将第一最短路径psn中s至mb的路径作为s至mb的最短路径即可,从而可以不必再计算s至mb的最短路径,从而节约处理资源,进一步提高计算效率。

同时,第一标记用于表示该节点mi已经计算过第一最短路径。当遍历第一最短路径psn中的所有节点后,u进行加一,即判断mn-1相对应的第一最短路径psn-1,重复执行上述步骤直至u=n-1。若mn-1含有第一标记,则说明上一循环过程确定的路径psn中包含了节点mn-1,此时不需要重复计算,故u进行加一,在判断节点mn-2即可。

步骤b3:选取所有节点mi中第一个节点m1,以v=0为起点,v的步长为1,循环判断节点m1+v是否设有第二标记,在节点m1+v没有第二标记时,确定节点m1+v至给定终点e之间的第二最短路径p1+ve,为节点m1+v添加第二标记,并判断第二最短路径p1+ve经过的节点nc是否为节点mi中的一个节点;当节点nc为节点mi中的一个节点md时,为节点md添加第二标记,并将第二最短路径p1+ve中节点nc至给定终点e之间的路径作为节点md至给定终点e之间的第二最短路径pde;之后对v执行加一处理,重复执行上述判断m1+v是否设有第二标记的过程,直至v=n-1。

步骤b4:当节点m1+v设有第二标记时,则对v执行加一处理并继续循环执行上述判断m1+v是否设有第二标记的过程,直至v=n-1。

上述步骤b3-b4为确定节点mi至e之间的第二最短路径,其原理与上面的步骤b1-b2类似,此处不做赘述。其中,第二标记用于表示节点mi已经计算出了mi至e的第二最短路径。在确定第一最短路径和第二最短路径后,将两个最短路径进行结合即可得出s至e的n条路径,并从n条路径中选取最短的路径。

在本发明一优选的实施例中,为了防止计算得到的定起点s和给定终点e之间的最短路径发生故障,所述路径计算模块200在计算并获取所述给定起点s至节点mi之间的第一最短路径、以及所述节点mi至所述给定终点e之间的第二最短路径的过程中,获取与所述最短路径最接近的第二短路径,得到由所述第二短路径组成的所述给定起点s至给定终点e之间的第二短路径,并保存所述第二路径,将保存的所述给定起点s至给定终点e之间的第二短路径作为候选备用路径,以供:所述给定起点s至给定终点e之间的最短路径发生故障时,启用所述候选备用路径。

本发明对等网络中点到点最短路径计算系统通过信息获取模块获取对等网络中需计算给定起点s和给定终点e之间最短路径的起点信息和终点信息;路径计算模块根据所述信息获取模块获取的所述起点信息和终点信息,提取网络链路中从所述给定起点s到给定终点e之间可能经过的n个不同节点mi;分别计算所述给定起点s至节点mi之间的第一最短路径,以及所述节点mi至所述给定终点e之间的第二最短路径,从而得到所述给定起点s至给定终点e之间的最短路径;具有简化最短路径算法的有益效果,避免了采用大量复杂的算法来获取点到点最短路径的计算方式所带来的计算复杂度过大的问题,提高了计算效率,节约了计算资源和计算时间。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1