zoukankan      html  css  js  c++  java
  • 「Wallace 笔记」图的绝对中心 和 最小直径生成树(MDST)的求法

    简介

    无向图中某一点(可以在顶点上或边上),这个点到所有点的最短距离的最大值最小,那么这个点就是 图的绝对中心

    无向图所有生成树中,直径最小的一个,被称为 最小直径生成树

    图的绝对中心的求法

    下文设 (d(i, j)) 为顶点 (i,j) 间的最短路径长。

    首先我们考虑枚举每一条边 ((u, v)),长为 (L),并假设绝对中心 (p) 在这条边上并且距离 (u) 长为 (x(le L))

    对于图中一点 (i)(p)(i) 的距离可以写作 (d(p, i) = min(d(u, i) + x, d(v, i) + (L - x)))

    那么显然可以看出 (d(p, i)) 的函数图像是一个 两条斜率相同的线段构成的折线段

    于是 (p) 到最远点距离的函数可以写作 (f = maxlimits_{1le ile n}{d(p, i)}),图像是一堆折线组成的 更加曲折的 折线,如图(来源):

    图中的 (alpha) 即为文中的 (x)(omega_{u, v}) 即为 (L)(w_{1cdots n}) 为图中异于 (u, v) 的点。

    aOI2Zt.png

    那么答案即为图像中的最低点,横坐标即为绝对中心的位置。


    如何得到最低点?不难观察到最低点必然是两折线的交点。

    对于图中的两点 (i, j),若 (d(u, i) ge d(u, j))(d(v, i) ge d(v, j)),那么显然这个 (j) 是丝毫不用考虑的——可以看出 (d(p, j)) 的函数图像是完全位于 (d(p, i)) 下方的,最低点显然不会在此。

    这样筛出的 (t) 条折线会有 (t - 1) 个交点,那么只要根据这些交点更新答案即可。

    (O(t^2)) 暴力枚举?大可不必。可以观察到,有一个性质,若我们将这些折线 (d(u, i)) 的大小 升序排序,那么对应 (d(v, i)) 的大小是 递减的

    于是排序后相邻两折线必定会有交点。

    图的绝对中心的实现

    (adj(i, j)) 为结点 (i, j) 间的直接距离(边长),(d(i, j)) 如上文所述,(rk(i, j)) 为距离点 (i)(j) 远的点,(f) 即上文的函数。

    这里 (ans) 表示最远距离。

    1. 首先使用多源最短路算法(Floyd,Johnson 等)求出 (d) 数组。
    2. 求出 (rk),对于每一个 (i),按关键字 (d(i, j)) 降序排序。
    3. 然后对于每一个点或边对答案进行更新:
      • 可能在点上:对于每一个点 (i),用相对较远的点更新:(ans leftarrow min(ans, d(i, rk(i, 1))))
      • 可能在边上:对于每一条边 ((i, j)),从距离 (i) 最远的点开始验证——对于所有的 (k(le n))
        • (d(j, rk(i, k-1)) le d(j, rk(i, k))),因为 (rk) 是根据 (d(i, cdots)) 排序的,那么两者组合,发现这个对答案无贡献,不能计算,跳过。
        • 否则就是 (f) 上的一个可能为答案的点(交点)。更新答案:(ansleftarrow min(ans, dfrac{d(i, rk(i, k)) + d(i, rk(i, k - 1)) + adj(i, j)}{2}))

    最后 (ans) 即为所求。如果需要具体位置需要特别地在更新 (ans) 时记录。

    复杂度 (O(n^3 + nm))(O(nmlog n + nm)),区别在于多源最短路的求法。对于无权图还可以直接 Bfs 得到更优秀的效率。

    最小直径生成树(MDST)的求法

    根据定义,易知图的绝对中心必定为 MDST 直径的中点。

    那么只要得到绝对重心,MDST 并不难求——从绝对中心开始,生成一个最短路径树即为 MDST。

    显然 MDST 的直径大小为 (ans imes 2)

    习题

    • BZOJ 2180 - 最小直径生成树 / SPOJ MDST - Minimum Diameter Spanning Tree 【参考代码
    • SPOJ PT07C - The GbAaY Kingdom 【参考代码
    • Codeforces 266D - BerDonalds

    后记

  • 相关阅读:
    信息检索笔记
    北大课程(变态心理学)
    My life
    Excel小技巧(随机点名)
    Flask基础
    CTF
    GDB
    LD_PRELOAD
    AFL-数据变异
    AFL入门
  • 原文地址:https://www.cnblogs.com/-Wallace-/p/13483433.html
Copyright © 2011-2022 走看看