本发明专利技术属于计算机网络通信技术领域,具体为一种基于树分解的并行化路径计算方法。本发明专利技术基于最短路径的两个步骤中的树分解方法,通过并行化加速树分解方法中的预处理步骤;该步骤目的是为了得到与带权图对应的分解树,利用该分解树,可以快速计算出任意节点间的最短路径。该并行化路径计算方法具体为给定一张带权图,根据用户设定的参数,先计算出对应的分解树结构,之后用并行计算方法计算出分解树每个树包内所有节点对间的最短路径,生成一棵对应的分解树。
【技术实现步骤摘要】
一种基于树分解的并行化路径计算方法
本专利技术属于计算机网络通信
,具体涉及带权图的最短路径计算方法。
技术介绍
最短路径算法是一种用以计算图上任意两点间的最短路径的算法。在计算机网络中或其他领域中,带权图的最短路径计算是一个非常基本的操作,比如网络流量工程,数据库中的关键字搜索,机器人控制系统中的导航功能等。高性能的最短路径算法在这些重要的应用中是必不可少的。传统的最短路径算法基于单源最短路径算法和全源最短路径算法。其中单源最短路径算法(如迪杰斯特拉算法)对单个查询的响应时间复杂度为O(n2),n为图中节点数目。全源最短路径算法(如弗洛伊德算法)对单个查询的响应时间复杂度为O(1),但需要复杂度为O(n3)的预处理时间来计算出所有可能的节点对之间的距离,以及复杂度为O(n2)的空间来存储这些节点对距离表。因此这两种算法都有各自的局限。近些年有许多关于两步骤算法的最短路径算法研究和应用。两步骤算法包括预处理算法和查询算法,给定图经过预处理算法后会生成索引,该索引用以查询算法来快速计算图上任意两点间的最短路径。许多研究工作致力于加速预处理时间和查询时间,以及减少运行时的内存空间(主要取决于算法的索引大小),如基于2-hopcover的PLL方法,基于树分解的算法如TEDI方法。然而目前的研究工作还存在一个明显的局限性,即预处理算法的时间复杂度为O(n2logn),这使得计算大规模图时,时间开销会非常大。
技术实现思路
本专利技术的目的在于克服目前计算方法的局限性,对于带权图,提供一种基于树分解的并行化路径计算方法。本专利技术基于分解树的两步骤算法中的预处理方法,主要通过并行,同时利用多个并行计算单元来生成分解树。本专利技术提供的基于树分解的并行化路径计算方法,整体如图1所示,具体步骤为:(1)根据给定的带权图以及用户设定的参数,先依次摘除满足要求的节点,并生成树包,压入栈,直至图上没有满足要求的节点,将图上剩余节点组成最后一个树包压入栈;(2)摘除结束后,将栈中的树包依次弹出,按照父树包的匹配要求,将树包连接成一棵树的结构;(3)然后依次用向上并行计算算法和向下并行计算算法,利用多个计算单元完成分解树树包中任意节点对的最短路径的计算,从而快速生成一个分解树。本专利技术提供的基于树分解的并行化路径计算方法,其中:步骤(1)的具体操作流程如下:(1)给定带权图G=(V,E),其中,图的节点数n=|V|,节点间的边数m=|E|,该带权图的带权函数w:E->R+,即每条边都有对应的非负权值;对该图计算分解树前,需要对将要用到的参数进行设置,如分解树的最大度数k,并行化的计算单元个数;(2)根据分解树的最大度数k,将带权图中度数小于等于设定的k的节点摘下,将节点和其所有邻居组成一个树包,压入栈s,并将带权图中摘掉的节点的邻居中未相连的节点连上边;再按照该操作依次将带权图中所有满足条件的节点摘下,组成一个个树包压入栈s,最后带权图中剩下的所有节点作为一个树包,压入栈s。步骤(2)的具体操作流程如下:根据步骤(1)中得到的栈s,依次弹出树包,来构建分解树中树的结构,其中,第一个弹出的树包为分解树根节点,其余树包按照规则寻找分解树上的父树包。步骤(3)的具体操作流程如下:分解树中树的结构构建完成后,并行化计算树包内任意两节点间的最短路径,计算方法包括:向上并行计算算法和向下并行计算算法,这两个算法分别对分解树上的树包进行自下往上和自上往下计算;其中:向上并行计算算法,如图2所示,具体流程为:按照步骤(2)中得到的树的结构利用广度优先遍历算法将树包按照层次(从根节点往下)生成一张树包顺序表tup,每个并行计算单元依次循环查询该树包顺序表tup,如果当前树包满足以下三个计算要求,该计算单元便可对该树包进行计算:1.该树包还未完成计算(即finished表中该树包对应的标志位为0);2.该树包此时没有其他计算单元对其进行计算(即busy表中该树包对应的标志位为0);3.该树包的所有子树包都已被计算完(即finished表中子树包对应的标志位都已经为1);如果该树包满足这三个计算要求,则将该树包busy标志位标志为1,并行计算单元对该树包进行计算,计算完后将该树包对应的busy标志位标志为0,finished标志位标志为1,查询树包顺序表tup上的下一个树包,反之并行计算单元直接查询树包顺序表tup上的下一个树包;若并行计算单元查询完树包顺序表tup后,再循环遍历一次该表,直至该表中所有树包都已完成(即所有finished标志位都已经为1);向下并行计算算法,如图3所示,具体流程为:将上述树包顺序表tup倒序后得到树包顺序表tdown,每个并行计算单元依次循环查询该树包顺序表tdown,如果当前树包满足以下三个计算要求,该计算单元便可对该树包进行计算:1.该树包还未完成计算(即finished表中该树包对应的标志位为0);2.该树包此时没有其他计算单元对其进行计算(即busy表中该树包对应的标志位为0);3.该树包的父树包已被计算完(即finished表中该树包的父树包对应的标志位都已经为1);如果该树包满足这三个要求,则将该树包busy标志位标志为1,并行计算单元便可对该树包进行计算,计算完后将该树包对应的busy标志位标志为0,finished标志位标志为1,查询树包顺序表tdown上的下一个树包,反之并行计算单元直接查询树包顺序表tdown上的下一个树包;若并行计算单元查询完树包顺序表tdown后,再循环遍历一遍该表,直至该表中所有树包都已完成(即所有finished标志位都已经为1)。本专利技术中,主要包括树结构生成算法、向上并行计算算法和向下并行计算算法三部分。树结构生成算法,主要是根据给定带权图节点和边的关系,以及用户设定的参数(分解树的最大度数k)来生成树包,并根据父树包匹配要求,将树包连成一棵分解树的结构。向上并行计算算法,为了计算出此时该树包所有节点的全源最短路径(此时计算得到的值不一定是最终正确的结果),主要是根据给定带权图节点和边的权重,树结构生成算法中的树结构,以及用户设定的参数(并行化的计算单元个数)自底向上同时利用多个并行计算单元对树包进行计算。该计算可利用以下方法进行优化:首先进行更新操作,即如果该树包有子树包,便利用所有该树包内的节点对的路径信息对该树包内的节点对的路径进行更新,该操作保证了此时该树包里面的节点对的距离值一定小于等于子树包内相同节点对的距离值,如图2所示,设树包101有两个子树包103和104,包101中点x和点y的距离值dxy101会分别与包103和104中点x和点y的距离值dxy103和dxy104进行比较,更新后,包101中点x和点y的距离值dxy101=min(dxy101,dxy103,dxy104);更新结束后为树包内的全源最短路径的计算过程(如运用迪杰斯特拉算法),对于非根节点包,可进行下列优化,即对树包内摘下节点a的任意邻居节点b,c,计算:dab+dac<dbc是否成立,其中dab,dac和dbc分别为ab节点对,ac节点对,bc节点对之间的距离值。如果成立,则更新该树包内dbc的距离值。向下并行计算算法,主要是根据树结构生成算法中的树结构,用户设定的参数本文档来自技高网...
【技术保护点】
1.一种基于树分解的并行化路径计算方法,其特征在于,具体步骤为:(1)根据给定的带权图以及用户设定的参数,先依次摘除满足要求的节点,并生成树包,压入栈,直至图上没有满足要求的节点,将图上剩余节点组成最后一个树包压入栈;(2)摘除结束后,将栈中的树包依次弹出,按照父树包的匹配要求,将树包连接成一棵树的结构;(3)然后依次用向上并行计算算法和向下并行计算算法,利用多个计算单元完成分解树树包中任意节点对的最短路径的计算,从而快速生成一个分解树。
【技术特征摘要】
1.一种基于树分解的并行化路径计算方法,其特征在于,具体步骤为:(1)根据给定的带权图以及用户设定的参数,先依次摘除满足要求的节点,并生成树包,压入栈,直至图上没有满足要求的节点,将图上剩余节点组成最后一个树包压入栈;(2)摘除结束后,将栈中的树包依次弹出,按照父树包的匹配要求,将树包连接成一棵树的结构;(3)然后依次用向上并行计算算法和向下并行计算算法,利用多个计算单元完成分解树树包中任意节点对的最短路径的计算,从而快速生成一个分解树。2.根据权利要求1所述的基于树分解的并行化路径计算方法,其特征在于,步骤(1)的具体操作流程如下:(1)给定带权图G=(V,E),其中,图的节点数n=|V|,节点间的边数m=|E|,该带权图的带权函数w:E->R+,即每条边都有对应的非负权值;对该图计算分解树前,对将要用到的参数进行设置:分解树的最大度数k,并行化的计算单元个数;根据分解树的最大度数k,将带权图中度数小于等于设定的k的节点摘下,将节点和其所有邻居组成一个树包,压入栈s,并将带权图中摘掉的节点的邻居中未相连的节点连上边;再按照该操作依次将带权图中所有满足条件的节点摘下,组成一个个树包压入栈s,最后带权图中剩下的所有节点作为一个树包,压入栈s;步骤(2)的具体操作流程如下:根据步骤(1)中得到的栈s,依次弹出树包,来构建分解树中树的结构,其中,第一个弹出的树包为分解树根节点,其余树包按照规则寻找分解树上的父树包;步骤(3)的具体操作流程如下:分解树中树的结构构建完成后,并行化计算树包内任意两节点间的最短路径,计算方法包括:向上并行计算算法和向下并行计算算法,这两个算法分别对分解树上的树包进行自下往上和自上往下计算;其中:向上并行计算算法的流程为:按照步骤(2)中得到的树的结构利用广度优先遍历算法将树包按照层次生成一张树包顺序表tup,每个并行计算单元依次循环查询该树包顺序表tup,如果当前树包满足以下三个计算要求,该计算单元便对该树包进行计算:(a)该树包还未完成计算,即finished表中该树包对应的标志位为0;(b)该树包此时没有其他计算单元对其进行计算,即busy表中该树包对应的标志位为0;(c)该树包的...
【专利技术属性】
技术研发人员:许琼文,袁晶,赵伯罕,赵进,王新,
申请(专利权)人:复旦大学,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。