【问题标题】:Shortest path linear programming最短路径线性规划
【发布时间】:2017-03-27 15:06:46
【问题描述】:

我被困在第 4 页https://courses.engr.illinois.edu/cs498dl1/sp2015/notes/26-lp.pdf 处最大化 d_t。 我绝对不能遵循作者的论点

这些松弛约束意味着在任何可行的解决方案中,d_v 至多是从 s 到 v 的最短路径距离。因此,有点 与直觉相反,我们正确地最大化了目标函数 计算最短路径!

我们正在寻找最短路径,但为什么要寻找 max d_t?

【问题讨论】:

    标签: shortest-path linear-programming


    【解决方案1】:

    想象两个直接连接的顶点st 之间没有任何其他边或顶点的最短路径的简单情况。 LP 归结为:

    maximize   d_t
    subject to d_s = 0
               d_t − d_s ≤ l_st for every edge s -> t
    

    最大化d_t 的唯一方法是将其设置为从st 的最短路径——在这种情况下是两者之间的边缘。这是因为第二个约束d_t ≤ l_st 禁止任何更大的值,即从st 的任何更长的路径。

    现在,这个想法可以转移到st 不是相邻顶点的一般情况:将d 变量视为到t 的所有相邻顶点的最短路径。然后与d_t 相关的约束确定必须选择这些边中的哪一个来定义整体最短路径。它将满足相等性,而 d_t 的任何更高值都将违反这些约束中的至少一个。

    【讨论】:

    • Dijkstra 的算法是这样工作的:从S 中选择v 而不是S 至少有一条边(u, v)。找到min d(u) + l(u, v) 并将其分配给d(v)。现在假设我们有 3 个节点:S 中的 uvd(u) = 5d(v) = 4w 不在 S 中。 l(u, w) = 1l(v, w) = 3。问题中的约束确保d(v) <= 6,如果我们最大化它,它将恰好是6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多