关于删边最短路问题的若干见解 下载本文

内容发布更新时间 : 2024/5/13 0:41:40星期一 下面是文章的全部内容请认真阅读。

关于最短哥问题的若干见解

马鑫宇

1.不缩点的做法

首先,对于一个图,我们从S点和T点进行两次搜索其到所有顶点的最短路,这些最短路定向后将构成两个定向树(不唯一时,任取其一),根分别为S(出发根)和T(到着根),我们称之为S树和T树。对于两个树,我们分别维护其顶点u的深度为dS[u]和dT[u]。最一开始没有任何删边之前就可以在最短路中用到的边称之为原边,其他边称之为备择边,视实际需要这两个词可能会有不同含义。

现在我们只考虑S树而无视T树。那么显然每当删去S-T路之外的边时我们直接输出最短路即可,而删除S-T路上的边(i,j)(割边)时,T将被隔离在S树的某一个子树中。将(i,j)之外的S树上的边视为原边,不在S树上而能连接被割断的S树和T所在子树的边视为备择边。那么显然,删边后的最短路(备择最短路)一定过至少一条备择边。现在我们证明备择最短路一定只过一个备择边。

定理1:对任意的割边(i,j),一定存在一条备择最短路(可能不唯一),使存在被割S树上的点u和T子树上的点v,使得备择最短路表示为如下结构:S出发经被割S树上的边

到u,备择边(u,v),v出发经T树上的点到T;因而其长度为dS[u]+dT[v]+w[u,v](文中所有定理均假定备择最短路存在)

证明:假设备择最短路为L,且长度小于所有满足上面性质的路。显见L中必定存在至少一条备择边(u,v),否则割边(i,j)将无法构成S-T割,因为只有T存在于被割S树中才有这种情况,而此时S树上S-T路未被(i,j)割断。我们取(u,v)为最后经过的备择边。现在取新路L2如下:S出发经原边到达u,(u,v),v出发经T树边到达T。显见L2路径长度不超过L,因为将L拆成3部分:S-u,u-v,v-T后,由最小树性质,其对应部分长度一定不小于L2对应部分的长度。注意因为v和T在被割后相同的S树的子树中,因此T树中v到T的路不会被(i,j)割断,如若不然则有下图:

比较i,j,v三点间的最短路即可得出。L2违背了原假设,因此用反证法得出此定理的前半部分。后半部分显而易见。

显见不在S树中的任何一条边都有机会称为备择边,于

是我们得出枚举备择边的初步想法。取LCA为S树上的最近公共祖先,进一步地,我们得出以下定理:

定理2:若(i,j)割的备择最短路经过备择边(u,v),则一定有(i,j)在LCA(u,T)到LCA(v,T)的原路上。

证明:显见若不满足此条件,则(u,v)必然在割掉(i,j)之后的同一个子树上,因此不构成备择边。

综上,我们得出以下算法(备择边-LCA-线段树法): 1.构建S树,计算所有dS和dT,用Tarjan算法初始化LCA

2.对S-T原最短路上的原边维护最小值线段树,将每一条不在S树上的无向边(u,v)拆成一对有向边计算其存在于备择最短路上时备择最短路的长度,更新区间[LCA(u,T),LCA(v,T)]

3.对每次查询,返回其在线段树上对应点的值即是结果

(此算法来自于[1],详细细节请参见[1]) 依据线段树的摊还复杂度,此算法时间复杂度预估为O((m+Q)lgm)

如果同时考虑S树和T树,我们可以得出以下定理: 定理3:对于每个(i,j)割边,一定存在这样一条备择最短路L,使存在顶点u(备择点)将L分成两个部分:S经S树边到u,和u经T树边到T。此路径长度为dS[u]+dT[u]。

证明:显而易见,此处略去。

定义LCAT和LCAS分别表示T树和S树的最近公共祖先。显见某点u成为备择点仅仅在[LCAT(S,u),LCAS(T,u)]区间内才有可能。

因此我们得到以下算法(备择点-LCA-线段树法): 1.构建S树和T树,计算所有dS和dT,用Tarjan算法初始化LCAS和LCAT

2.对S-T原最短路上的原边维护最小值线段树,对每一个不在S-T原最短路上的点u,计算其在备择最短路上时的备择最短路长度,更新区间[LCAT(u,S),LCAS(u,T)]

3.对每次查询,返回其在线段树上对应点的值即是结果

(此算法来自于本人比赛后的随感) 依据线段树的摊还复杂度,此算法时间复杂度预估为O((n+Q)lgm),但目测不如前一个算法高效。

2.强连通缩点法

这种做法是出题人Vani有约会本人给出的解答([4]),思路无误但是标程被质疑(见[2]),其本人认为的复杂度为O(nlgn),但根据其代码分析,应该为O(mlgm)。

定义由S出发的SP图如下:有向边(i,j)属于SP当且仅当无向边(i,j)满足dS[i]+w[i,j]=dS[j]。易见此图为有向无环图。

定义到达T的TP图如下:有向边(i,j)属于TP当且仅当无向边(i,j)满足dT[j]+w[i,j]=dT[i]。定义S到T的ST图如下:有向边(i,j)属于

ST

当且仅当无向边(i,j)满足

dS[i]+w[i,j]+dT[j]=dS[T]。

定理4:(1)ST图是SP图和TP图的子图。(2)如果所有边权大于0,则SP图中不含有向圈。(证明略)

定义SP图中的关键边(i,j)如下:删除(i,j)后,在SP中S不能到达j点。ST中的关键边类似。我们有

定理5:ST图的关键边是边无向化后的桥。SP图的关键边包括但不限于无向化后的桥。

证明:我们首先证明第二个。取图如下:

令S=1,T=3。显见SP图定向边集{(1,2),(2,3),(3,4),(1,4)},关键边集{(1,2),(2,3)},但无向化之后的图即为原图,三个连通度全为2,证完。

然后在证明第一个,假设ST图中的边(i,j)是关键边,但不是无向化后的桥。因此删去边(i,j)后,任意取一条无向化ST图中的S-T路L,其中必定包括一条边(u,v),其在ST图