一种有权有向动态网络上的最短路径估算方法

文档序号:6545783阅读:199来源:国知局
一种有权有向动态网络上的最短路径估算方法
【专利摘要】本发明涉及一种有权有向动态网络上的最短路径估算方法,其包括以下步骤:以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;有权有向动态网络的结构发生变化时,将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;在有权有向动态网络中找出权值增加的边集E+和权值减少的边集E-中的边,将些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
【专利说明】一种有权有向动态网络上的最短路径估算方法
【技术领域】
[0001]本发明涉及一种最短路径估算方法,特别是关于一种有权有向动态网络上的最短路径估算方法。
【背景技术】
[0002]如今,越来越多的应用中需要计算有权有向动态网络上的最短路径(SP)。交通路网的权重代表交通拥堵程度,基于当前交通状况计算出的两个地点间的最短路径可以用于导航去目的地的最快路径。同样地,如Facebook, Twitter, LinkedIn等社交网络中,连接两个用户的边的权重代表两个用户的亲密程度,权重值越小,两个用户的联系越亲密,基于用户间的联系计算出的两用户之间的最短路径可以帮助一个用户快速认识另一个用户,由于动态网络的规模急剧增加,并且动态网络中的用户关系都是有方向且随时间变化的,因此实时计算出动态网络中用户间的最短路径是非常必要的。
[0003]目前,计算最短距离通用的算法是基于三角不等式并利用landmark来估算的,这种算法虽然查询效率很高,但存在不能返回最短路径且不能适用于动态图的缺点。还有一些研究成果提出的基于sketch索引的可处理大规模网络的算法,虽然可以估算最短距离,也可以得到最短距离对应的最短路径,但这类算法存在不适用于有权图的缺点。计算有权图上最短路径的通用算法是Dijkstra算法,Dijkstra算法能够计算得到有权图上最短路径的最优解,但当有权图规模增大时,Di jkstra算法的时间复杂度呈指数级增加,计算效率很低。为克服Dijkstra这类静态算法的弊端,一些学者研究出可以尽量缩短重新计算最短路径的动态算法,早期的动态算法只能解决单源点最短路径问题,后来的动态算法可以计算出任意点对间的近似最短路径,但每次调用动态算法只能解决一条边插入、删除或者一条边权值增加、减少的问题,这类动态算法的查询效率虽然相对于Dijkstra算法有所提闻,但仍不尽如人意。

【发明内容】

[0004]针对上述问题,本发明的目的是提供一种查询效率高、扩展性强的有权有向动态网络上的最短路径估算方法,该方法针对有权有向动态网络,能够一次解决多条边增删、权值变化等问题。
[0005]为实现上述目的,本发明采取以下技术方案:一种有权有向动态网络上的最短路径估算方法,其包括以下步骤:1)以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新;3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
[0006]所述步骤I)中,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构,其构建过程为:采用MaxDegree最大度方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点;对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树;对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
[0007]所述步骤2)中,对有权有向动态网络中的初始树结构进行实时更新,其具体包括以下步骤:(I)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;⑵在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;(3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构。
[0008]所述步骤(2)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:(I )采用DASPInc算法对有权有向动态网络中每一个初始正向最短路径树SPT进行实时更新,不同的初始正向最短路径树SPT并行更新,其具体包括:①如果某初始SPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始SPT上删除该树边;该完整的初始SPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N ;②将节点集N中的节点状态设置为open,初始SPT中不受影响的节点的状态设置为closed ;如果受影响且状态为open的节点a至少有一个受影响且状态为closed的父节点P或者至少有一个不受影响的父节点P,则将节点a作为边界点,将使得根节点到父节点P的距离d(p)与父节点P到节点a的距离w(p, a)之和最小的父节点P作为候选最短路径父节点,将min(d(p)+w (p, a))作为候选最短距离,并将根节点到节点a的距离d(a)设置为min(d(p)+w(p,a)),该候选最短距离对应的路径作为候选最短路径将每个边界点a、候选最短路径父节点P和候选最短距离d(a)以形式(a, p,d(a))入链表Q 对链表Q是否为空进行判断,如果链表Q为空,则完成对初始SPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y,x,d(y))出链表Q,其具体包括:首先,将节点I的分支连接于节点I的候选最短路径父节点X,并将节点I的状态更改为closed ;其次,对于状态更改为closed的节点y在有权有向网络上的每条出边,其指向的节点q,如果根节点到节点y的距离d(y)与节点y到节点q的距离w (y, q)之和小于根节点到节点q的距离d (q),即d (y) +w (y, q) <d (q),则将根节点到节点q的距离d(q)更改为d(y)+w(y, q),并将(q,y,d(q))入链表Q ;⑤重复步骤④,直到链表Q为空,完成对初始SPT的更新;(II )采用DASPInc’算法对有权有向动态网络中每一个初始反向最短路径树RSPT进行实时更新,不同初始反向最短路径树RSPT并行更新,其具体包括:①如果某初始RSPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始RSPT上删除该树边;该完整的初始RSPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N’ ;②将节点集N’中的节点状态设置为open,初始RSPT中不受影响的节点的状态设置为closed ;如果受影响且状态为open的节点a’至少有一个受影响且状态为closed的子节点P’或者至少有一个不受影响的子节点P’,则将节点a’作为边界点,将使得子节点P’到根节点的距离d(p’ )与节点a’到子节点P’的距离w(a’,p’ )之和最小的子节点P’作为候选最短路径子节点,将min(d(p’)+w(a’,p’ ))作为候选最短距离,并将节点a’到根节点的距离d(a’ )设置为min(d(p’)+w(a’,p’)),将该候选最短距离对应的路径作为候选最短路径;③将每个边界点a’、候选最短路径子节点p’和候选最短距离d(a’ )以形式(a’,p’,d(a’ ))入链表Q ;④对链表Q是否为空进行判断,如果链表Q为空,则完成对初始RSPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y’,X’,d(y’ ))出链表q,其具体包括:首先,将节点r的分支连接于节点r的候选最短路径子节点X’,并将节点y’的状态更改为closed ;其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点I,到根节点的距离d(y’ )与节点q’到节点y’的距离w(q’,y’ )之和小于节点q,到根节点的距离d(q,),即d(y’)+w(q’,y’ )〈d(q,),贝丨J将节点q,到根节点的距离d(q,)更改为d(y,)+w(q’,y’),并将(q,,y,,d(q,))入链表Q ;⑤重复步骤④,直到链表Q为空,完成对初始RSPT的更新。
[0009]所述步骤(3)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:(I )采用DASPDec算法对有权有向动态网络中每一个初始正向最短路径树SPT进行实时更新,不同的初始正向最短路径树SPT并行更新,其具体包括:①如果某SPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值;②对于每条权值变化的树边,如果根节点到其箭尾端t的距离d(t)与其箭尾端t到箭头端h的距离w(t,h)之和小于根节点到其箭头端h的距离d(h),即d(t)+w(t,h)〈d(h),则将d(t)+w(t,h)作为根节点到其箭头端h的新最短距离newdist,将d(h)_newdist作为根节点到权值变化的树边的箭头端h的距离减少量Δ,并将(h, t, Δ ,newdist)入链表Q’ 对链表Q’是否为空进行判断,如果链表Q’为空,则完成对初始SPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Λ最大的元素,并将该元素以形式(y,x,Δ, newdist)出链表Q’ ;若最大减少量Λ对应多个元素,则从多个元素中选择新最短路径newdist最小的元素出链表Q’,若最小新最短路径newdist对应多个元素,贝Ij从多个元素中随机选取一个元素出链表Q’,其具体包括:首先,将节点I的分支连接于节点I的候选最短路径父节点X ;其次,对包括节点y在内的节点I分支上的每个节点η,将根节点到节点η的最短距离d(n)更改为d(n)-A ;如果节点η在链表Q’中且节点η的最短路径父节点与节点η在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点η删除;最后,对于节点η的每条出边指向的节点c,如果根节点到节点η的距离d(n)与节点η到节点c的距离w (n, c)之和小于根节点到节点c的距离d (c),即d (n) +w (n, c) <d (c),则将(c, n, d(c)-(d(n)+w(n, c)), d(n)+w(n, c))入链表Q’;④重复步骤③,直到链表Q’为空,完成对初始SPT的更新;(II )采用DASPDec’算法对有权有向动态网络中每一个初始反向最短路径树RSPT进行实时更新,不同的初始反向最短路径树RSPT并行更新,其具体包括:①如果某RSPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值;②对于每条权值变化的树边,如果其箭头端h’到根节点的距离d(h’ )与其箭尾端t’到箭头端h’的距离w(t’,h’ )之和小于其箭尾端t’到根节点的距离 d(t’),即 d(h’)+w(t’,h’)〈d(t’),则将 d(h’)+w(t’,h’ )作为其箭尾端 t’ 到根节点的新最短路径newdist’,将d(t’)_newdist’作为权值变化的树边的箭尾端t’到根节点的距离减少量Λ’,并将(t’,h’,Λ’,newdist’ )入链表Q’;③对链表Q’是否为空进行判断,如果链表Q’为空,则完成对初始RSPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Δ,最大的元素,并将该元素以形式(y,’X,, Δ ’,newdist’)出链表Q’,若最大减少量Λ ’对应多个元素,则从多个元素中选择新最短路径newdist’最小的元素出链表Q’,若最小新最短路径newdist’对应多个元素,则从多个元素中随机选取一个元素出链表Q’,其具体包括:首先,将节点y’的分支连接于节点y’的候选最短路径子节点X’;其次,对包括节点I,在内的节点I,分支上的每个节点η’,节点η’到根节点的最短距离更改为d(n’)-Δ ’ ;如果节点η’在链表Q’中且节点η’的最短路径子节点与节点η’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点η’删除;最后,对于节点η’的每条入边,其指出的节点c’,如果节点η’到根节点的距离d(n’ )与节点c’到节点η’的距离w(c’,η’ )之和小于节点c’到根节点的距离d(c’),即d(n’)+w(c’,n’)〈d(c’ )则将(c’,n’,d(c,)-(d(n,)+w(c,,n,)),d(n,)+w(c,,n,))入链表 Q’ ;④重复步骤③,直到链表 Q’ 为空,完成对初始RSPT的更新。
[0010]所述步骤3)中,找出有权有向动态网络中任意两节点e到f的最短路径,其具体包括:首先,连接节点e的SPT和节点f的RSPT,SPT和RSPT两棵树有m个相同的landmark叶子节点;通过landmark叶子节点,形成m条节点e到节点f的路径;其次,采用最近公共祖先问题方法对节点e到节点f的m条路径进行优化,优化后的m条路径中的最短路径即为节点e到节点f的最短路径,最短路径对应的距离即为节点e到节点f的最短距离。
[0011]本发明由于采取以上技术方案,其具有以下优点:1、本发明由于以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;有权有向动态网络的结构发生变化时,将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;在有权有向动态网络中找出权值增加的边集E+和权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径,因此本发明能够一次解决有权有向动态网络中多条边增删、权值变化等问题。2、本发明由于对有权有向动态网络中每一个初始正向最短路径树SPT和每一个初始反向最短路径树RSPT进行实时更新时,不同的初始正向最短路径树SPT和不同的初始反向最短路径树RSPT能够并行更新,因此本发明对有权有向动态网络中任意两节点之间的最短路径和最短距离进行查询时,具有查询效率高、扩展性强的特点。基于以上优点,本发明可以广泛应用于估算动态网络上任意两用户之间的最短路径。
【专利附图】

【附图说明】
[0012]图1是本发明动态有权有向网络上的最短路径估算方法的流程图【具体实施方式】
[0013]下面结合附图和实施例对本发明进行详细的描述。
[0014]本发明动态网络上的最短路径估算方法包括以下步骤:
[0015]I)以有权有向动态网络中每一点为树根节点,构建初始树结构。其中,初始树结构包括若干正向最短路径树(SPT)和若干反向最短路径树(RSPT),其具体包括:
[0016]采用MaxDegree (最大度)方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点,对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树;对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
[0017]2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新,其具体包括:
[0018](I)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-。
[0019](2)在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
[0020]( I )米用 DASPInc (Dynamic Algorithm of Approximating Shortest PathonWeights Increase)算法对有权有向动态网络中每一个初始SPT进行实时更新,不同的初始SPT可以并行更新,其具体包括:
[0021]①如果某初始SPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始SPT上删除该树边。该完整的初始SPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N。
[0022]②将节点集N中的节点状态设置为open,初始SPT中不受影响的节点的状态设置为closed。如果受影响且状态为open的节点a至少有一个受影响且状态为closed的父节点P或者至少有一个不受影响的父节点P,则将节点a作为边界点,将使得根节点到父节点P的距离d(p)与父节点P到节点a的距离w(P, a)之和最小的父节点P作为候选最短路径父节点,将min(d(p)+w(p,a))作为候选最短距离,并将根节点到节点a的距离d(a)设置为min (d (p) +w (p, a)),该候选最短距离对应的路径作为候选最短路径。
[0023]③将每个边界点a、候选最短路径父节点P和候选最短距离d(a)以形式(a, p, d(a))入链表 Q0
[0024]④对链表Q是否为空进行判断,如果链表Q为空,则完成对初始SPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y,x,d(y))出链表Q,其具体包括:
[0025]首先,将节点y的分支连接于节点y的候选最短路径父节点X,并将节点y的状态更改为closed。
[0026]其次,对于状态更改为closed的节点y在有权有向网络上的每条出边,其指向的节点q,如果根节点到节点I的距离d(y)与节点y到节点q的距离w(y, q)之和小于根节点到节点q的距离d(q),即d(y)+w(y, q)〈d(q),则将根节点到节点q的距离d(q)更改为d (y) +w (y, q),并将(q, y, d (q))入链表 Q。
[0027]⑤重复步骤④,直到链表Q为空,完成对初始SPT的更新。
[0028]( II )采用DASPInc’算法对有权有向动态网络中每一个初始RSPT进行实时更新,不同初始RSPT可以并行更新,其具体包括:
[0029]①如果某初始RSPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始RSPT上删除该树边。该完整的初始RSPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N’。
[0030]②将节点集N’中的节点状态设置为open,初始RSPT中不受影响的节点的状态设置为closed。如果受影响且状态为open的节点a’至少有一个受影响且状态为closed的子节点P’或者至少有一个不受影响的子节点P’,则将节点a’作为边界点,将使得子节点P’到根节点的距离d(p’)与节点a’到子节点P’的距离w(a’,p’ )之和最小的子节点P’作为候选最短路径子节点,将min(d(p’)+w(a’,p’))作为候选最短距离,并将节点a’到根节点的距离d(a’)设置为min(d(p’)+w(a’,P’)),将该候选最短距离对应的路径作为候选最短路径。
[0031]③将每个边界点a’、候选最短路径子节点P’和候选最短距离d(a’)以形式(a’,p’,d(a’))入链表 Q。
[0032]④对链表Q是否为空进行判断,如果链表Q为空,则完成对初始RSPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y’,X’,d(y’))出链表Q,其具体包括:
[0033]首先,将节点r的分支连接于节点r的候选最短路径子节点X’,并将节点r的状态更改为closed。
[0034]其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点I,到根节点的距离d(y,)与节点q,到节点y,的距离w(q’,y,)之和小于节点q’到根节点的距离d(q’),即d(y’)+w(q’,y’)〈d(q’ ),则将节点q’到根节点的距离 d(q’ )更改为 d(y’)+w(q’,y’),并将(q,,y,,d(q,))入链表 Q。
[0035]⑤重复步骤④,直到链表Q为空,完成对初始RSPT的更新。
[0036](3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
[0037]( I )米用 DASPDec (Dynamic Algorithm of Approximating Shortest Path onWeights Decrease)算法对有权有向动态网络中每一个初始SPT进行实时更新,不同的初始SPT可以并行更新,其具体包括:
[0038]①如果某SPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值。
[0039]②对于每条权值变化的树边,如果根节点到其箭尾端t的距离d(t)与其箭尾端t到箭头端h的距离w(t, h)之和小于根节点到其箭头端h的距离d(h),即d(t)+w(t,h) <d (h),则将d (t) +w (t, h)作为根节点到其箭头端h的新最短距离newdist,将d(h)_newdist作为根节点到权值变化的树边的箭头端h的距离减少量Δ,并将(h, t, Δ ,newdist)入链表 Q’。
[0040]③对链表Q’是否为空进行判断,如果链表Q’为空,则完成对初始SPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Λ最大的元素,并将该元素以形式(y,x,Δ, newdist)出链表Q’ ;若最大减少量Λ对应多个元素,则从多个元素中选择新最短路径newdist最小的元素出链表Q’,若最小新最短路径newdist对应多个元素,则从多个元素中随机选取一个元素出链表Q’,其具体包括:
[0041]首先,将节点y的分支连接于节点y的候选最短路径父节点X。[0042]其次,对包括节点y在内的节点y分支上的每个节点n,将根节点到节点η的最短距离d (η)更改为d (η) - Δ ;如果节点η在链表Q’中且节点η的最短路径父节点与节点η在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点η删除。
[0043]最后,对于节点η的每条出边指向的节点c,如果根节点到节点η的距离d(n)与节点η到节点c的距离w (n, c)之和小于根节点到节点c的距离d (c),即d (n) +w (n, c) <d (c),则将(c, n, d(c)-(d(n)+w(n, c)),d(n)+w(n, c))入链表 Q,。
[0044]④重复步骤③,直到链表Q’为空,完成对初始SPT的更新。
[0045]( II )采用DASPDec’算法对有权有向动态网络中每一个初始RSPT进行实时更新,不同的初始RSPT可以并行更新,其具体包括:
[0046]①如果某RSPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值。
[0047]②对于每条权值变化的树边,如果其箭头端h’到根节点的距离d(h’ )与其箭尾端t’到箭头端h’的距离w(t’,h’ )之和小于其箭尾端t’到根节点的距离d(t’),即d(h’)+w(t’,h’)〈d(t’),则将d(h’)+w(t’,h’ )作为其箭尾端t’到根节点的新最短路径newdist’,将d(t’)_newdist’作为权值变化的树边的箭尾端t’到根节点的距离减少量Δ ’,并将(t,,h,, Δ ’,newdist,)入链表 Q’。
[0048]③对链表Q’是否为空进行判断,如果链表Q’为空,则完成对初始RSPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Λ ’最大的元素,并将该元素以形式(y’,X’,Λ’,newdist’ )出链表Q’,若最大减少量Λ ’对应多个元素,则从多个元素中选择新最短路径newdist’最小的元素出链表Q’,若最小新最短路径newdist’对应多个元素,则从多个元素中随机选取一个元素出链表Q’,其具体包括:
[0049]首先,将节点y’的分支连接于节点I,的候选最短路径子节点X’。
[0050]其次,对包括节点y’在内的节点y’分支上的每个节点η’,节点η’到根节点的最短距离更改为d(n’)-Λ ’ ;如果节点η’在链表Q’中且节点η’的最短路径子节点与节点η’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点η’删除。
[0051]最后,对于节点η’的每条入边,其指出的节点c’,如果节点η’到根节点的距离d(n’ )与节点c’到节点η’的距离w(c’,n’ )之和小于节点c’到根节点的距离d(c’ ),即d(n,)+w(c,,n,)<d(c,)则将(c,,η,,d(c,)_(d(n,)+w(c,,η,)),d(n,)+w(c,,η,)) Λ链表Q’。
[0052]④重复步骤③,直到链表Q’为空,完成对初始RSPT的更新。
[0053]3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径,其具体包括:
[0054]首先,连接节点e的SPT和节点f的RSPT,SPT和RSPT两棵树有m个相同的landmark叶子节点;通过landmark叶子节点,形成m条节点e到节点f的路径。
[0055]其次,采用LCA (Least Common Ancestor,最近公共祖先问题)方法对节点e到节点f的m条路径进行优化,优化后的m条路径中的最短路径即为节点e到节点f的最短路径,最短路径对应的距离即为节点e到节点f的最短距离。
[0056]上述各实施例仅用于说明本发明,其中各部件的结构、连接方式和方法步骤等都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。
【权利要求】
1.一种有权有向动态网络上的最短路径估算方法,其包括以下步骤: 1)以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构; 2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新; 3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
2.如权利要求1所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤I)中,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构,其构建过程为: 采用MaxDegree最大度方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点; 对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树; 对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
3.如权利要求 1或2所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤2)中,对有权有向动态网络中的初始树结构进行实时更新,其具体包括以下步骤: (1)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-; (2)在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构; (3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构。
4.如权利要求3所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤(2)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤: (I )采用DASPInc算法对有权有向动态网络中每一个初始正向最短路径树SPT进行实时更新,不同的初始正向最短路径树SPT并行更新,其具体包括: ①如果某初始SPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始SPT上删除该树边;该完整的初始SPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N ; ②将节点集N中的节点状态设置为open,初始SPT中不受影响的节点的状态设置为closed ;如果受影响且状态为open的节点a至少有一个受影响且状态为closed的父节点P或者至少有一个不受影响的父节点P,则将节点a作为边界点,将使得根节点到父节点P的距离d(p)与父节点P到节点a的距离w(p,a)之和最小的父节点P作为候选最短路径父节点,将min(d(p)+w(p,a))作为候选最短距离,并将根节点到节点a的距离d(a)设置为min (d (p) +w (p, a)),该候选最短距离对应的路径作为候选最短路径;③将每个边界点a、候选最短路径父节点P和候选最短距离d(a)以形式(a,p, d (a))入链表Q ; ④对链表Q是否为空进行判断,如果链表Q为空,则完成对初始SPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y,χ, d(y))出链表Q,其具体包括: 首先,将节点I的分支连接于节点I的候选最短路径父节点X,并将节点I的状态更改为 closed ; 其次,对于状态更改为closed的节点y在有权有向网络上的每条出边,其指向的节点q,如果根节点到节点y的距离d(y)与节点y到节点q的距离w(y, q)之和小于根节点到节点q的距离d(q),即d(y)+w(y, q)〈d(q),则将根节点到节点q的距离d(q)更改为d (y) +w (y, q),并将(q, y, d (q))入链表 Q ; ⑤重复步骤④,直到链表Q为空,完成对初始SPT的更新; (II )采用DASPInc’算法对有权有向动态网络中每一个初始反向最短路径树RSPT进行实时更新,不同初始反向最短路径树RSPT并行更新,其具体包括: ①如果某初始RSPT中的任一树边对应权值增加的边集E+中一权值增加的边,则从该初始RSPT上删除该树边;该完整的初始RSPT被分解成一棵包含根节点的树以及一些离散的树或节点,这些离散的树和节点构成受影响的节点集N’ ; ②将节点集N’中的节点状态设置为open,初始RSPT中不受影响的节点的状态设置为closed ;如果受影响且状态为open的节点a’至少有一个受影响且状态为closed的子节点P’或者至少有一个不受影响的子节点P’,则将节点a’作为边界点,将使得子节点P’到根节点的距离d(p’ )与节点a’到子节点P’的距离w(a’,p’ )之和最小的子节点P’作为候选最短路径子节点,将min(d(p’)+w(a’,p’))作为候选最短距离,并将节点a’到根节点的距离d(a’)设置为min(d(p’)+w(a’,P’)),将该候选最短距离对应的路径作为候选最短路径; ③将每个边界点a’、候选最短路径子节点p’和候选最短距离d(a’)以形式(a’,p’,d(a’ ))入链表 Q ; ④对链表Q是否为空进行判断,如果链表Q为空,则完成对初始RSPT的更新;如果链表Q不为空,则从链表Q中找出候选最短距离最小的元素,并将该元素以形式(y’,x’,d(y’ ))出链表Q,其具体包括: 首先,将节点y’的分支连接于节点y’的候选最短路径子节点χ’,并将节点y’的状态更改为closed ; 其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点I,到根节点的距离d(y,)与节点q,到节点y,的距离w(q’,y,)之和小于节点q,到根节点的距离d(q,),即d(y,)+w(q,,y,)〈d(q,),则将节点q,到根节点的距离d(q,)更改为 d(y,)+w(q,,y,),并将(q,,y,,d(q,))入链表 Q ; ⑤重复步骤④,直到链表Q为空,完成对初始RSPT的更新。
5.如权利要求3所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤(3)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:(I ) 采用DASPDec算法对有权有向动态网络中每一个初始正向最短路径树SPT进行实时更新,不同的初始正向最短路径树SPT并行更新,其具体包括: ①如果某SPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值; ②对于每条权值变化的树边,如果根节点到其箭尾端t的距离d(t)与其箭尾端t到箭头端h的距离w(t,h)之和小于根节点到其箭头端h的距离d(h),即d(t)+w(t,h) <d(h),则将d(t)+w(t,h)作为根节点到其箭头端h的新最短距离newdist,将d(h)_newdist作为根节点到权值变化的树边的箭头端h的距离减少量Δ,并将(h, t, Δ,newdist)入链表Q’ ; ③对链表Q’是否为空进行判断,如果链表Q ’为空,则完成对初始SPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Λ最大的元素,并将该元素以形式(y,x,Λ ,newdist)出链表Q’;若最大减少量△对应多个元素,则从多个元素中选择新最短路径newdist最小的元素出链表Q’,若最小新最短路径newdist对应多个元素,则从多个元素中随机选取一个元素出链表Q’,其具体包括: 首先,将节点I的分支连接于节点I的候选最短路径父节点χ ; 其次,对包括节点y在内的节点I分支上的每个节点η,将根节点到节点η的最短距离d (η)更改为d (η) - Λ ;如果节点η在链表Q’中且节点η的最短路径父节点与节点η在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点η删除; 最后,对于节点η的每条出边指向的节点c,如果根节点到节点η的距离d(n)与节点η到节点c的距离w (n, c)之和小于根节点到节点c的距离d(c),即d(n)+w(n, c)〈d(c),则将(c, n, d(c)-(d(n)+w(n, c)),d(n)+w(n, c))入链表 Q,; ④重复步骤③,直到链表Q’为空,完成对初始SPT的更新; (II )采用DASPDec’算法对有权有向动态网络中每一个初始反向最短路径树RSPT进行实时更新,不同的初始反向最短路径树RSPT并行更新,其具体包括: ①如果某RSPT中的任一树边对应权值减小的边集E-中一权值减少的边,则将该树边的权值更改为变化后的权值; ②对于每条权值变化的树边,如果其箭头端h’到根节点的距离d(h’)与其箭尾端t’到箭头端h’的距离w(t’,h’)之和小于其箭尾端t’到根节点的距离d(t’),即d(h’)+w(t’,h’)〈d(t’),则将d(h’)+w(t’,h’ )作为其箭尾端t’到根节点的新最短路径newdist’,将d(t’)-neWdist’作为权值变化的树边的箭尾端t’到根节点的距离减少量Λ’,并将(t’,h,,Δ,,newdist,)入链表 Q,; ③对链表Q’是否为空进行判断,如果链表Q’为空,则完成对初始RSPT的更新;如果链表Q’不为空,则从链表Q’中找出减少量Λ ’最大的元素,并将该元素以形式(y’,x’,Λ’,newdist’ )出链表Q’,若最大减少量Λ’对应多个元素,则从多个元素中选择新最短路径newdist’最小的元素出链表Q’,若最小新最短路径newdist’对应多个元素,则从多个元素中随机选取一个元素出链表Q’,其具体包括: 首先,将节点I,的分支连接于节点I,的候选最短路径子节点X’ ; 其次,对包括节点I,在内的节点I,分支上的每个节点η’,节点η’到根节点的最短距离更改为d(n’)-Λ ’ ;如果节点η’在链表Q’中且节点η’的最短路径子节点与节点η’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点η’删除;最后,对于节点η’的每条入边,其指出的节点c’,如果节点η’到根节点的距离d (η’)与节点c’到节点η’的距离w(c’,n’)之和小于节点c’到根节点的距离d(c’),即d(n’)+w(c’,n,)〈d(c,)则将(c,, n,,d(c,)-(d(n,)+w(c,,n,)), d(n,)+w(c,, n,))入链表 Q,; ④重复步骤③,直到链表Q’为空,完成对初始RSPT的更新。
6.如权利要求1或2所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤3)中,找出有权有向动态网络中任意两节点e到f的最短路径,其具体包括:首先,连接节点e的SPT和节点f的RSPT,SPT和RSPT两棵树有m个相同的landmark叶子节点;通过 landmark叶子节点,形成m条节点e到节点f的路径; 其次,采用最近公共祖先问题方法对节点e到节点f的m条路径进行优化,优化后的m条路径中的最短路径即为节点e到节点f的最短路径,最短路径对应的距离即为节点e到节点f的最短距离。
【文档编号】G06F17/30GK103970856SQ201410189825
【公开日】2014年8月6日 申请日期:2014年5月7日 优先权日:2014年5月7日
【发明者】史晓薇, 金俊挺, 李翠平, 陈红 申请人:中国人民大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1