zoukankan      html  css  js  c++  java
  • 最短路解差分约束得到的解的性质(未补完)


    引入

    如题。

    首先,建一个超级源点 0 并向所有点连权值为 0 的边是为了求一组非正数的可行解, 因为这些边所代表的约数即为 (x_ile 0), 然后依据 ({x_1,cdots,x_n}) 可行则 ({x_1+Delta,cdots,x_n+Delta}) 可行的定理就可以构造出别的可行解。

    至于为什么求出的是可行解: 第一轮更新后所有 (x_i) 都变成了 (0), 则超级源点代表的约束全部被满足。

    通过算法导论的习题可以了解到, 这样求出的解,满足 (sumlimits_i x_i) 最大, 同时满足 (max{x_i}-min{x_i}) 最小, 即和最大同时极差最小。


    和最大的证明

    首先,第一轮更新后, (x_ile 0) 的约束已经被满足, 且此时是最大的。

    之后对于每个形如 (x_ile x_j + w(j,i)) 的约束, 在最短路更新时如果不满足, 则 (x_i) 会被赋值成 (x_j + w(j,i)), 而这显然是最大的满足条件的解。

    总的来说, 最短路算法通过减小 (x_i) 的值使得被满足的约束越来越多(首先明确被满足的约束的数量是一定不会在最短路的过程中变少的), 在此基础上使得 (x_i) 减小的值尽量小


    极差最小的证明

    不会,死了


    怎么让和最小

    改成让 (-left(sumlimits_{i}x_i ight)) 最大, 这就要求对原先的约束变形,具体地:(x_ile x_j + w(j,i)) 变成 (-x_i ge -x_j - w(j,i)) ,若令 (y_i = -x_i), 则原式子即为 (y_i ge y_j - w(j,i)), 在变形一次即得 (y_j le y_i-w(j,i))

    于是, 和最小就是把约束反着连边, 然后最后把求得的解变为相反数即可。

    例题


    怎么让极差最大

    不会,死了。
    不过也不像是有这种东西。

  • 相关阅读:
    9
    8
    7
    lua开发和调试环境
    MeshFilter mesh vs sharedMesh
    几种方法验证unity是否为development build
    Unity SetActive Event
    利用Data Vault对数据仓库进行建模(二)
    程序员如何圆飞行梦想(一)
    利用Data vault对数据仓库建模
  • 原文地址:https://www.cnblogs.com/tztqwq/p/14055929.html
Copyright © 2011-2022 走看看