CN103970856A - 一种有权有向动态网络上的最短路径估算方法 - Google Patents
一种有权有向动态网络上的最短路径估算方法 Download PDFInfo
- Publication number
- CN103970856A CN103970856A CN201410189825.2A CN201410189825A CN103970856A CN 103970856 A CN103970856 A CN 103970856A CN 201410189825 A CN201410189825 A CN 201410189825A CN 103970856 A CN103970856 A CN 103970856A
- Authority
- CN
- China
- Prior art keywords
- node
- shortest path
- chained list
- tree
- initial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种有权有向动态网络上的最短路径估算方法,其包括以下步骤:以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;有权有向动态网络的结构发生变化时,将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;在有权有向动态网络中找出权值增加的边集E+和权值减少的边集E-中的边,将些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
Description
技术领域
本发明涉及一种最短路径估算方法,特别是关于一种有权有向动态网络上的最短路径估算方法。
背景技术
如今,越来越多的应用中需要计算有权有向动态网络上的最短路径(SP)。交通路网的权重代表交通拥堵程度,基于当前交通状况计算出的两个地点间的最短路径可以用于导航去目的地的最快路径。同样地,如Facebook,Twitter,LinkedIn等社交网络中,连接两个用户的边的权重代表两个用户的亲密程度,权重值越小,两个用户的联系越亲密,基于用户间的联系计算出的两用户之间的最短路径可以帮助一个用户快速认识另一个用户,由于动态网络的规模急剧增加,并且动态网络中的用户关系都是有方向且随时间变化的,因此实时计算出动态网络中用户间的最短路径是非常必要的。
目前,计算最短距离通用的算法是基于三角不等式并利用landmark来估算的,这种算法虽然查询效率很高,但存在不能返回最短路径且不能适用于动态图的缺点。还有一些研究成果提出的基于sketch索引的可处理大规模网络的算法,虽然可以估算最短距离,也可以得到最短距离对应的最短路径,但这类算法存在不适用于有权图的缺点。计算有权图上最短路径的通用算法是Dijkstra算法,Dijkstra算法能够计算得到有权图上最短路径的最优解,但当有权图规模增大时,Dijkstra算法的时间复杂度呈指数级增加,计算效率很低。为克服Dijkstra这类静态算法的弊端,一些学者研究出可以尽量缩短重新计算最短路径的动态算法,早期的动态算法只能解决单源点最短路径问题,后来的动态算法可以计算出任意点对间的近似最短路径,但每次调用动态算法只能解决一条边插入、删除或者一条边权值增加、减少的问题,这类动态算法的查询效率虽然相对于Dijkstra算法有所提高,但仍不尽如人意。
发明内容
针对上述问题,本发明的目的是提供一种查询效率高、扩展性强的有权有向动态网络上的最短路径估算方法,该方法针对有权有向动态网络,能够一次解决多条边增删、权值变化等问题。
为实现上述目的,本发明采取以下技术方案:一种有权有向动态网络上的最短路径估算方法,其包括以下步骤:1)以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新;3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
所述步骤1)中,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构,其构建过程为:采用MaxDegree最大度方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点;对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树;对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
所述步骤2)中,对有权有向动态网络中的初始树结构进行实时更新,其具体包括以下步骤:(1)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;(2)在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;(3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构。
所述步骤(2)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:(Ⅰ)采用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,其具体包括:首先,将节点y的分支连接于节点y的候选最短路径父节点x,并将节点y的状态更改为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的更新;(Ⅱ)采用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’的候选最短路径子节点x’,并将节点y’的状态更改为closed;其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点y’到根节点的距离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的更新。
所述步骤(3)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:(Ⅰ)采用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’,其具体包括:首先,将节点y的分支连接于节点y的候选最短路径父节点x;其次,对包括节点y在内的节点y分支上的每个节点n,将根节点到节点n的最短距离d(n)更改为d(n)-Δ;如果节点n在链表Q’中且节点n的最短路径父节点与节点n在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点n删除;最后,对于节点n的每条出边指向的节点c,如果根节点到节点n的距离d(n)与节点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的更新;(Ⅱ)采用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’;其次,对包括节点y’在内的节点y’分支上的每个节点n’,节点n’到根节点的最短距离更改为d(n’)-Δ’;如果节点n’在链表Q’中且节点n’的最短路径子节点与节点n’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点n’删除;最后,对于节点n’的每条入边,其指出的节点c’,如果节点n’到根节点的距离d(n’)与节点c’到节点n’的距离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的更新。
所述步骤3)中,找出有权有向动态网络中任意两节点e到f的最短路径,其具体包括:首先,连接节点e的SPT和节点f的RSPT,SPT和RSPT两棵树有m个相同的landmark叶子节点;通过landmark叶子节点,形成m条节点e到节点f的路径;其次,采用最近公共祖先问题方法对节点e到节点f的m条路径进行优化,优化后的m条路径中的最短路径即为节点e到节点f的最短路径,最短路径对应的距离即为节点e到节点f的最短距离。
本发明由于采取以上技术方案,其具有以下优点:1、本发明由于以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;有权有向动态网络的结构发生变化时,将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;在有权有向动态网络中找出权值增加的边集E+和权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径,因此本发明能够一次解决有权有向动态网络中多条边增删、权值变化等问题。2、本发明由于对有权有向动态网络中每一个初始正向最短路径树SPT和每一个初始反向最短路径树RSPT进行实时更新时,不同的初始正向最短路径树SPT和不同的初始反向最短路径树RSPT能够并行更新,因此本发明对有权有向动态网络中任意两节点之间的最短路径和最短距离进行查询时,具有查询效率高、扩展性强的特点。基于以上优点,本发明可以广泛应用于估算动态网络上任意两用户之间的最短路径。
附图说明
图1是本发明动态有权有向网络上的最短路径估算方法的流程图
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
本发明动态网络上的最短路径估算方法包括以下步骤:
1)以有权有向动态网络中每一点为树根节点,构建初始树结构。其中,初始树结构包括若干正向最短路径树(SPT)和若干反向最短路径树(RSPT),其具体包括:
采用MaxDegree(最大度)方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点,对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树;对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新,其具体包括:
(1)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-。
(2)在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
(Ⅰ)采用DASPInc(Dynamic Algorithm of Approximating Shortest PathonWeights Increase)算法对有权有向动态网络中每一个初始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,其具体包括:
首先,将节点y的分支连接于节点y的候选最短路径父节点x,并将节点y的状态更改为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的更新。
(Ⅱ)采用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’的候选最短路径子节点x’,并将节点y’的状态更改为closed。
其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点y’到根节点的距离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的更新。
(3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
(Ⅰ)采用DASPDec(Dynamic Algorithm of Approximating Shortest Path onWeights Decrease)算法对有权有向动态网络中每一个初始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’,其具体包括:
首先,将节点y的分支连接于节点y的候选最短路径父节点x。
其次,对包括节点y在内的节点y分支上的每个节点n,将根节点到节点n的最短距离d(n)更改为d(n)-Δ;如果节点n在链表Q’中且节点n的最短路径父节点与节点n在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点n删除。
最后,对于节点n的每条出边指向的节点c,如果根节点到节点n的距离d(n)与节点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的更新。
(Ⅱ)采用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’。
其次,对包括节点y’在内的节点y’分支上的每个节点n’,节点n’到根节点的最短距离更改为d(n’)-Δ’;如果节点n’在链表Q’中且节点n’的最短路径子节点与节点n’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点n’删除。
最后,对于节点n’的每条入边,其指出的节点c’,如果节点n’到根节点的距离d(n’)与节点c’到节点n’的距离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的更新。
3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径,其具体包括:
首先,连接节点e的SPT和节点f的RSPT,SPT和RSPT两棵树有m个相同的landmark叶子节点;通过landmark叶子节点,形成m条节点e到节点f的路径。
其次,采用LCA(Least Common Ancestor,最近公共祖先问题)方法对节点e到节点f的m条路径进行优化,优化后的m条路径中的最短路径即为节点e到节点f的最短路径,最短路径对应的距离即为节点e到节点f的最短距离。
上述各实施例仅用于说明本发明,其中各部件的结构、连接方式和方法步骤等都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。
Claims (6)
1.一种有权有向动态网络上的最短路径估算方法,其包括以下步骤:
1)以有权有向动态网络中每一点为树根节点,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构;
2)有权有向动态网络的结构发生变化时,对有权有向动态网络中的初始树结构进行实时更新;
3)根据更新后的树结构,对有权有向动态网络中任意两节点e到f的最短路径和最短距离进行查询,找出节点e到节点f的最短路径。
2.如权利要求1所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤1)中,构建包括若干正向最短路径树和若干反向最短路径树的初始树结构,其构建过程为:
采用MaxDegree最大度方法,在有权有向动态网络中选取若干点作为landmark叶子节点,以有权有向动态网络中每一点为树根节点;
对于每一树根节点,计算其到所有landmark叶子节点的最短路径,构成该树根节点的正向最短路径树;
对于每一树根节点,计算所有landmark叶子节点到该树根节点的最短路径,构成该树根节点的反向最短路径树。
3.如权利要求1或2所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤2)中,对有权有向动态网络中的初始树结构进行实时更新,其具体包括以下步骤:
(1)将点的增加和减少以及边的插入和删除处理成相应边权值的变化,相应边权值的变化和权值改变的边一起构成权值增加的边集E+和权值减小的边集E-;
(2)在有权有向动态网络中找出权值增加的边集E+中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构;
(3)在有权有向动态网络中找出权值减少的边集E-中的边,将这些边的权值更改为变化后的权值,并实时更新有权有向动态网络中的初始树结构。
4.如权利要求3所述的一种有权有向动态网络上的最短路径估算方法,其特征在于:所述步骤(2)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
(Ⅰ)采用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,其具体包括:
首先,将节点y的分支连接于节点y的候选最短路径父节点x,并将节点y的状态更改为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的更新;
(Ⅱ)采用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’的候选最短路径子节点x’,并将节点y’的状态更改为closed;
其次,对于状态更改为closed的节点y’在有权有向网络上的每条入边,其指出的节点q’,如果节点y’到根节点的距离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)中,采用以下方法实时更新有权有向动态网络中的初始树结构,其具体包括以下步骤:
(Ⅰ)采用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’,其具体包括:
首先,将节点y的分支连接于节点y的候选最短路径父节点x;
其次,对包括节点y在内的节点y分支上的每个节点n,将根节点到节点n的最短距离d(n)更改为d(n)-Δ;如果节点n在链表Q’中且节点n的最短路径父节点与节点n在链表Q’中的候选最短路径父节点不是同一个点,则从链表Q’中将节点n删除;
最后,对于节点n的每条出边指向的节点c,如果根节点到节点n的距离d(n)与节点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的更新;
(Ⅱ)采用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’;
其次,对包括节点y’在内的节点y’分支上的每个节点n’,节点n’到根节点的最短距离更改为d(n’)-Δ’;如果节点n’在链表Q’中且节点n’的最短路径子节点与节点n’在链表Q’中的候选最短路径子节点不是同一个点,则从链表Q’中将节点n’删除;
最后,对于节点n’的每条入边,其指出的节点c’,如果节点n’到根节点的距离d(n’)与节点c’到节点n’的距离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的最短距离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189825.2A CN103970856A (zh) | 2014-05-07 | 2014-05-07 | 一种有权有向动态网络上的最短路径估算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189825.2A CN103970856A (zh) | 2014-05-07 | 2014-05-07 | 一种有权有向动态网络上的最短路径估算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103970856A true CN103970856A (zh) | 2014-08-06 |
Family
ID=51240353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410189825.2A Pending CN103970856A (zh) | 2014-05-07 | 2014-05-07 | 一种有权有向动态网络上的最短路径估算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970856A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644076A (zh) * | 2017-09-18 | 2018-01-30 | 首都师范大学 | 路径更新方法及装置 |
CN108052743A (zh) * | 2017-12-15 | 2018-05-18 | 华中科技大学 | 一种阶梯接近中心度确定方法及系统 |
CN110517144A (zh) * | 2019-08-29 | 2019-11-29 | 南京烽火天地通信科技有限公司 | 一种基于bsp模型的资金环路优化方法 |
CN111369052A (zh) * | 2020-03-03 | 2020-07-03 | 中铁工程设计咨询集团有限公司 | 简化路网ksp优化算法 |
-
2014
- 2014-05-07 CN CN201410189825.2A patent/CN103970856A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644076A (zh) * | 2017-09-18 | 2018-01-30 | 首都师范大学 | 路径更新方法及装置 |
CN107644076B (zh) * | 2017-09-18 | 2021-11-12 | 首都师范大学 | 路径更新方法及装置 |
CN108052743A (zh) * | 2017-12-15 | 2018-05-18 | 华中科技大学 | 一种阶梯接近中心度确定方法及系统 |
CN108052743B (zh) * | 2017-12-15 | 2021-01-05 | 华中科技大学 | 一种阶梯接近中心度确定方法及系统 |
CN110517144A (zh) * | 2019-08-29 | 2019-11-29 | 南京烽火天地通信科技有限公司 | 一种基于bsp模型的资金环路优化方法 |
CN111369052A (zh) * | 2020-03-03 | 2020-07-03 | 中铁工程设计咨询集团有限公司 | 简化路网ksp优化算法 |
CN111369052B (zh) * | 2020-03-03 | 2021-02-12 | 中铁工程设计咨询集团有限公司 | 简化路网ksp优化算法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107272679B (zh) | 基于改进的蚁群算法的路径规划方法 | |
CN103970856A (zh) | 一种有权有向动态网络上的最短路径估算方法 | |
CN105760503B (zh) | 一种快速计算图节点相似度的方法 | |
CN109902203A (zh) | 基于边的随机游走的网络表示学习方法和装置 | |
JP2016048540A (ja) | 生成方法、装置、及びプログラム | |
RU2018128976A (ru) | Поиск формы пирамидального векторного квантователя | |
CN108009061B (zh) | 一种改变复杂网络中节点控制类别的方法 | |
Srour et al. | A Water Flow‐Like Algorithm for the Travelling Salesman Problem | |
US20230289618A1 (en) | Performing knowledge graph embedding using a prediction model | |
KR102460485B1 (ko) | 정책 벡터 기반 인공신경망 탐색 장치 및 방법 | |
CN102210128A (zh) | 路径计算顺序决定方法、程序以及计算装置 | |
CN108683593B (zh) | 一种k短路径的计算方法 | |
CN110881178B (zh) | 一种基于分支游走的物联网数据聚合方法 | |
Gopalan et al. | Weighted bandits or: How bandits learn distorted values that are not expected | |
CN106034266B (zh) | 光路由的生成方法及装置 | |
CN107222334A (zh) | 适用于社交网络的基于核心三角的局部社团发现方法 | |
CN105242669A (zh) | 基于加权平均距离视觉鱼群算法的移动机器人路径规划方法 | |
Demaine et al. | Canadians should travel randomly | |
CN111998869B (zh) | 路线生成方法、装置、电子设备和计算机可读存储介质 | |
CN105005628A (zh) | 基于集中式平台的最短路径关键节点查询方法 | |
CN102882792A (zh) | 互联网传播路径图简化方法 | |
CN105320647B (zh) | 一种基于文字交互行为的用户特征建模方法 | |
CN107689922A (zh) | 基于微粒群算法的Steiner最优树计算方法及装置 | |
CN103778192B (zh) | 一种复杂网络局部社区发现方法 | |
CN113590912A (zh) | 融合节点相对位置和绝对度分布的跨社交网络对齐方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140806 |
|
RJ01 | Rejection of invention patent application after publication |