SSSP:Single Source Shortest Path
Maiter 4.2.1
SSSP算法广泛应用于社交网路和网页地图。给定一个点 s s s,SSSP算法算出在有向有权图中s节点到其余节点的最短距离。初始时,除节点 s s s到源节点的距离 d s 0 d_{s}^0 ds0初始化为 0 0 0外,其余每个节点 j j j到 s s s的距离 d j 0 d_{j}^0 dj0初始化为 ∞ \infty ∞。在每次迭代时, s s s到 j j j的距离 d j d_{j} dj根据下列公式进行更新:
d j k = m i n { d 1 k − 1 + A ( 1 , j ) , d 2 k − 1 + A ( 2 , j ) , . . . , d n k − 1 + A ( n , j ) , d j k − 1 } d_{j}^k=min\lbrace d_{1}^{k-1}+A(1,j),d_{2}^{k-1}+A(2,j),..., d_{n}^{k-1}+A(n,j),d_{j}^{k-1} \rbrace djk=min{d1k−1+A(1,j),d2k−1+A(2,j),...,dnk−1+A(n,j),djk−1},
其中 A ( i , j ) A(i,j) A(i,j)时节点 i i i到节点 j j j的边权,如果节点 i i i到节点 j j j不存在边,则 A ( i , j ) = ∞ A(i,j)=\infty A(i,j)=∞,直到收敛,即所有节点到源点 s s s的距离不再改变时,停止迭代。
(以下部分可不看,建议看完Maiter论文再看以下部分,不然很有可能看不懂)
据上,我们可以确定操作符
⨁
\bigoplus
⨁为“
m
i
n
min
min”,函数
g
{
i
,
j
}
(
d
i
)
=
d
i
+
A
(
i
,
j
)
g_{ \lbrace i,j \rbrace}(d_{i})=d_{i}+A(i,j)
g{i,j}(di)=di+A(i,j)。显然,函数
g
{
i
,
j
}
(
x
)
g_{ \lbrace i,j \rbrace}(x)
g{i,j}(x)满足分配律,而操作符“
m
i
n
min
min”满足交换律和结合律。
(下面这句为论文原文,我认为有误,不知如何理解)
The initialization can be
d
j
0
=
∞
d_{j}^0=\infty
dj0=∞ and
Δ
d
j
1
=
0
\Delta d_{j}^1=0
Δdj1=0 if
j
=
s
j = s
j=s, or else
Δ
d
j
=
0
\Delta d_{j}=0
Δdj=0.
因此,SSSP可以使用DAIC(DAIC为此论文提出的方法)执行。此外,假设 Δ d j \Delta d_{j} Δdj用于通过“ m i n min min”操作累计接收到的距离值,则节点 j j j的调度优先级将为 d j − m i n { d j , Δ d j } d_{j}-min \lbrace {d_{j},\Delta d_{j}}\rbrace dj−min{dj,Δdj}.
未完待续…