《A Characterization of the Minimum Cycle Mean in a Digraph》笔记
翻译:
首先,一个环一定属于同一个强连通分量。因此可以对一个有向图的所有强连通分量计算它们各自的环最小平均值,它们的最小值就是答案。
所以接下来的讨论中,默认有向图是强连通的。
任选一点 \(s\),从它开始刚好走 \(k\) 步到 \(v\) 的最短路记作 \(F_k(v)\),若找不到这样的路径,则定义 \(F_k(v)=\infty\)。
记 \(\lambda^*\) 为这个图的环最小平均值,则有如下定理:
但在这之前,还需证明一个引理:
如果 \(\lambda^*=0\),则右侧式子的值也为 \(0\)。
证明:
\(\lambda^*=0\) 说明原图中存在零环且没有负环。由于没有负环,存在一条 \(s\) 到 \(v\) 的最短路,且其边数小于 \(n\)(否则就会在负环上转圈),记这个值为 \(\pi(v)\)。
于是有 \(F_n(v)\ge\pi(v)\)。由定义可得 \(\pi(v)=\underset{0\le k<n}{\min}F_k(v)\)。所以有:
于是可推得:
其中等号成立当且仅当 \(F_n(v)=\pi(v)\)。现在我们需要做的只是找到一个 \(v\),使得等号成立。记一个零环为 \(C\),其中任选一个节点 \(w\),\(P(w)\) 为从 \(s\) 到 \(w\) 的一条路径,满足其权值为 \(\pi(w)\)。所以在 \(P(w)\) 之后再沿零环转任意多次,得到的也将是一条最短路(因其权值不变)。于是,这条路径上任何一个中间点 \(p\) 都满足这条路径如果到 \(p\) 就结束,那么它是 \(s\) 到 \(p\) 的最短路。所以我们在到达 \(w\) 后再在零环上转一段,使得其边数为 \(n\),设此时的终点为 \(w'\),令 \(v=w'\),则有 \(F_n\left(w'\right)=\pi\left(w'\right)\),引理得证。
接下来考虑对所有边的权值都减去一个常数 \(c\)(可能为负)的影响。显然 \(\lambda^*\) 将减小 \(c\),\(F_k(v)\) 将减小 \(kc\),而 \(\underset{v\in V}{\min}\underset{0\le k<n}{\max}\left[\frac{F_n(v)-F_k(v)}{n-k}\right]\) 将减小 \(c\)。所以只需选取 \(c=\lambda^*\),就转化为了引理,定理得证。
\(F_k(v)\) 的计算可以利用递推式:
初始时有:
根据定理中式子计算答案是 \(\mathcal O\left(n^2\right)\) 的,计算 \(F_k(v)\) 则是 \(\mathcal O(nm)\) 的。所以该算法的时间复杂度为 \(\mathcal O(nm)\)。
如果还想找方案的话,可以先找到贡献 \(\lambda^*\) 的 \(v\) 和 \(k\),然后找到一条长度为 \(n\) 的 \(s\) 到 \(v\) 的最短路(可以在计算 \(F_n(v)\) 时顺便求出),再在上面剥离出长度为 \(n-k\) 的环,这就是我们要的最小平均值环。
翻译结束。
但是我不想先写强连通分量,有没有别的办法?文章中书写了这样一种做法:
考虑图不强连通的后果是什么,并思考能否挽回。后果有两种:有从 \(s\) 开始无法到达的环;\(F_n(v)\) 可能等于 \(\infty\)。
对于第一种,我们考虑添加一个超级原点,向其它所有点连一个权值为 \(0\) 的有向边。
对于第二种,如果 \(f_n(v)=\infty\),说明它肯定不在环上(不然可以先转圈再过去),直接排除。
由于 \(F_k(v)\) 的递推式仅与上一层有关,所以可以滚动数组,但是计算 \(\lambda^*\) 时要重新算一遍。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号