为了证明再加权策略是可行的,必须证明再加权的两个性质都是正确的。gydF4y2Ba
性质1:保留最短路径gydF4y2Ba
第一个性质表示任意两个顶点之间的最短路径,gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
u, vgydF4y2Ba
ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba 重新加权后应该保持最短路径。我们将开始证明下面的方程保持最短路径。这个函数gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
h (v)gydF4y2Ba
hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba )gydF4y2Ba 是一个将顶点映射到数字的函数。gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
.gydF4y2Ba
体重^ {\ '}(u, v) =重量(u, v) + h (u) - h (v)。gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba =gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba ugydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba )gydF4y2Ba .gydF4y2Ba
让gydF4y2Ba
pgydF4y2Ba
=gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
1gydF4y2Ba
,gydF4y2Ba
.gydF4y2Ba
.gydF4y2Ba
.gydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
P = {v_0, v_1,…, v_k}gydF4y2Ba
pgydF4y2Ba =gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba vgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba .gydF4y2Ba .gydF4y2Ba .gydF4y2Ba ,gydF4y2Ba vgydF4y2Ba kgydF4y2Ba 是一条从gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
v_0gydF4y2Ba
vgydF4y2Ba 0gydF4y2Ba 来gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
v_kgydF4y2Ba
vgydF4y2Ba kgydF4y2Ba .所以,gydF4y2Ba
pgydF4y2Ba
pgydF4y2Ba
pgydF4y2Ba 是具有原始权函数的最短路径,当且仅当它是具有重权函数的最短路径。我们有gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
pgydF4y2Ba
)gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
pgydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
)gydF4y2Ba
,gydF4y2Ba
体重^ {\ '}(p) =体重(p) + h (v_0) - h (v_k),gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba pgydF4y2Ba )gydF4y2Ba =gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba pgydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba kgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba
=gydF4y2Ba
∑gydF4y2Ba
我gydF4y2Ba
kgydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
−gydF4y2Ba
1gydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
)gydF4y2Ba
,gydF4y2Ba
= \sum_{i}^{k}weight^{\prime}(v_{i-1}, v_i),gydF4y2Ba
=gydF4y2Ba 我gydF4y2Ba ∑gydF4y2Ba kgydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ,gydF4y2Ba
=gydF4y2Ba
∑gydF4y2Ba
我gydF4y2Ba
kgydF4y2Ba
(gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
−gydF4y2Ba
1gydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
−gydF4y2Ba
1gydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
我gydF4y2Ba
)gydF4y2Ba
)gydF4y2Ba
,gydF4y2Ba
= \ sum_{我}^ {k}(重量(v_张{},v_i) + h (v_张{})- h (v_i)),gydF4y2Ba
=gydF4y2Ba 我gydF4y2Ba ∑gydF4y2Ba kgydF4y2Ba (gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba )gydF4y2Ba ,gydF4y2Ba 由于gydF4y2Ba可伸缩的资金gydF4y2Ba ,gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
pgydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
)gydF4y2Ba
.gydF4y2Ba
= weight(p) + h(v_0) - h(v_k)。gydF4y2Ba
=gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba pgydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba kgydF4y2Ba )gydF4y2Ba .gydF4y2Ba
任何路径从gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
v_0gydF4y2Ba
vgydF4y2Ba 0gydF4y2Ba 来gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
v_kgydF4y2Ba
vgydF4y2Ba kgydF4y2Ba 这是使用原始权函数的最短路径gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
pgydF4y2Ba
)gydF4y2Ba
体重(p)gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba pgydF4y2Ba )gydF4y2Ba 也是使用重加权函数的最短路径吗gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
pgydF4y2Ba
)gydF4y2Ba
体重^ {\ '}(p)gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba pgydF4y2Ba )gydF4y2Ba .这是因为gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
)gydF4y2Ba
h (v_0)gydF4y2Ba
hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba )gydF4y2Ba 而且gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
)gydF4y2Ba
h (v_k)gydF4y2Ba
hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba kgydF4y2Ba )gydF4y2Ba 不依赖于路径。gydF4y2Ba
在我们继续之前,还需要证明任何路径gydF4y2Ba
pgydF4y2Ba
pgydF4y2Ba
pgydF4y2Ba 它有一个使用原始权函数的负权环,也有一个使用重权函数的负权环(因此我们可以在变换后检测到负权环)。gydF4y2Ba
考虑任何周期gydF4y2Ba
cgydF4y2Ba
cgydF4y2Ba
cgydF4y2Ba 我们刚刚在上面的步骤中证明了,gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
cgydF4y2Ba
)gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
cgydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
0gydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
kgydF4y2Ba
)gydF4y2Ba
,gydF4y2Ba
体重^ {\ '}(c) =重量(c) + h (v_0) - h (v_k),gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba cgydF4y2Ba )gydF4y2Ba =gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba cgydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba kgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
cgydF4y2Ba
)gydF4y2Ba
.gydF4y2Ba
=重量(c)。gydF4y2Ba
=gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba cgydF4y2Ba )gydF4y2Ba .gydF4y2Ba
所以,任何周期gydF4y2Ba
cgydF4y2Ba
cgydF4y2Ba
cgydF4y2Ba 在转换之前具有负权值的,在重新加权之后也将具有负权值。gydF4y2Ba
性质2:所有重加权的边必须有一个非负值gydF4y2Ba
还记得在这个算法的第一步中,我们构造了一个新图,gydF4y2Ba
GgydF4y2Ba
”gydF4y2Ba
G ^ {\ '}gydF4y2Ba
GgydF4y2Ba ”gydF4y2Ba 它有一些重要的特性吗?它有一个额外的顶点,gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba 它有从它到所有其他顶点的边,每条边的权值都是0。一个重要的结果是这个新图中的所有最短路径只包含gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba 如果gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba 源是(因为没有边伸进去gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba
年代gydF4y2Ba ).gydF4y2Ba
现在,假设gydF4y2Ba
GgydF4y2Ba
”gydF4y2Ba
G ^ {\ '}gydF4y2Ba
GgydF4y2Ba ”gydF4y2Ba 没有负权环(因为如果有我们会知道),我们可以定义gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
=gydF4y2Ba
dgydF4y2Ba
我gydF4y2Ba
年代gydF4y2Ba
tgydF4y2Ba
一个gydF4y2Ba
ngydF4y2Ba
cgydF4y2Ba
egydF4y2Ba
(gydF4y2Ba
年代gydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
H (v) =距离(s, v)gydF4y2Ba
hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba )gydF4y2Ba =gydF4y2Ba dgydF4y2Ba 我gydF4y2Ba 年代gydF4y2Ba tgydF4y2Ba 一个gydF4y2Ba ngydF4y2Ba cgydF4y2Ba egydF4y2Ba (gydF4y2Ba 年代gydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba 对所有gydF4y2Ba
vgydF4y2Ba
vgydF4y2Ba
vgydF4y2Ba 在gydF4y2Ba
GgydF4y2Ba
”gydF4y2Ba
.gydF4y2Ba
VgydF4y2Ba
G ^{\ '}。VgydF4y2Ba
GgydF4y2Ba ”gydF4y2Ba .gydF4y2Ba VgydF4y2Ba .由gydF4y2Ba三角不等式gydF4y2Ba ,我们有gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
≤gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
,gydF4y2Ba
H (v) \leq H (u) + weight(u, v),gydF4y2Ba
hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba hgydF4y2Ba (gydF4y2Ba ugydF4y2Ba )gydF4y2Ba +gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba
对于所有的边gydF4y2Ba
GgydF4y2Ba
”gydF4y2Ba
.gydF4y2Ba
EgydF4y2Ba
G ^{\ '}。EgydF4y2Ba
GgydF4y2Ba ”gydF4y2Ba .gydF4y2Ba EgydF4y2Ba .所以,如果我们简单地定义我们的权重调整方程为gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
”gydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
=gydF4y2Ba
wgydF4y2Ba
egydF4y2Ba
我gydF4y2Ba
ggydF4y2Ba
hgydF4y2Ba
tgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
,gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
+gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
ugydF4y2Ba
)gydF4y2Ba
−gydF4y2Ba
hgydF4y2Ba
(gydF4y2Ba
vgydF4y2Ba
)gydF4y2Ba
≥gydF4y2Ba
0gydF4y2Ba
,gydF4y2Ba
体重^ {\ '}(u, v) =重量(u, v) + h (u) - h (v) \组0,gydF4y2Ba
wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba ”gydF4y2Ba (gydF4y2Ba ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba =gydF4y2Ba wgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba (gydF4y2Ba ugydF4y2Ba ,gydF4y2Ba vgydF4y2Ba )gydF4y2Ba +gydF4y2Ba hgydF4y2Ba (gydF4y2Ba ugydF4y2Ba )gydF4y2Ba −gydF4y2Ba hgydF4y2Ba (gydF4y2Ba vgydF4y2Ba )gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba
那么第二个性质就满足了。gydF4y2Ba
{gydF4y2Ba
一个gydF4y2Ba
,gydF4y2Ba
BgydF4y2Ba
,gydF4y2Ba
DgydF4y2Ba
}gydF4y2Ba
\ {A, B, D \}gydF4y2Ba
{gydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba BgydF4y2Ba ,gydF4y2Ba DgydF4y2Ba }gydF4y2Ba
{gydF4y2Ba
一个gydF4y2Ba
,gydF4y2Ba
CgydF4y2Ba
,gydF4y2Ba
DgydF4y2Ba
}gydF4y2Ba
\ {A、C、D \}gydF4y2Ba
{gydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba CgydF4y2Ba ,gydF4y2Ba DgydF4y2Ba }gydF4y2Ba
{gydF4y2Ba
一个gydF4y2Ba
,gydF4y2Ba
BgydF4y2Ba
,gydF4y2Ba
CgydF4y2Ba
,gydF4y2Ba
DgydF4y2Ba
}gydF4y2Ba
\{a, b, c, d \}gydF4y2Ba
{gydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba BgydF4y2Ba ,gydF4y2Ba CgydF4y2Ba ,gydF4y2Ba DgydF4y2Ba }gydF4y2Ba
{gydF4y2Ba
一个gydF4y2Ba
,gydF4y2Ba
CgydF4y2Ba
,gydF4y2Ba
BgydF4y2Ba
,gydF4y2Ba
DgydF4y2Ba
}gydF4y2Ba
\{a, c, b, d \}gydF4y2Ba
{gydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba CgydF4y2Ba ,gydF4y2Ba BgydF4y2Ba ,gydF4y2Ba DgydF4y2Ba }gydF4y2Ba
请看下面的图表。哪条路径是最短的路径gydF4y2Ba
一个gydF4y2Ba
一个gydF4y2Ba
一个gydF4y2Ba 来gydF4y2Ba
DgydF4y2Ba
DgydF4y2Ba
DgydF4y2Ba 在用约翰逊算法的技术重新加权之后?gydF4y2Ba
有4个顶点的图gydF4y2Ba
提交你的答案gydF4y2Ba
请看下面的图表。用约翰逊算法的方法对A到D的最短路径进行加权后,其路径长度是多少?gydF4y2Ba
有4个顶点的图gydF4y2Ba