【问题标题】:Directed graph with max indegree of a vertex顶点最大入度的有向图
【发布时间】:2011-11-17 18:49:28
【问题描述】:

当我遇到这个问题时,我正在尝试查看网络流的几个应用程序:

我们从一个有向图 G = (V,E) 开始。我们需要向图中添加更多边,以便我们拥有\forall u,v \in V, e = (u -> v) or e = (v -> u) but not both。即,我们希望向图中添加更多边,以便图中的每一对顶点相互连接(具有出边或入边,但不能同时连接两者)。因此,我们总共将拥有|V||V-1|/2 边。当我们构建这个图时,我们需要确保给定顶点的入度,比如w 是图的所有顶点中的最大值(如果可能,给定原始图)。请注意,我们无法更改原始图中边的方向。

我正在尝试使用网络流来解决它,方法是构建一个没有顶点 w 的网络(以及 2 源、s 和接收器的新顶点,t)。但是我不确定如何在新图中表示容量和流向,以便将问题简化为网络流,以便在图中找到边缘方向。也许我正在做的事情是错误的,但我只是写了如果有人可能会从中得到提示。

【问题讨论】:

    标签: algorithm data-structures graph tree graph-algorithm


    【解决方案1】:

    在解决这类问题时,我倾向于写下一个数学程序,然后对其进行按摩。显然,我们应该将所有涉及 w 的缺失边指向 w。令 d 为 w 的入度。对于所有不同的 i、j,如果弧 i->j 出现在解中,则令 x_{ij} = 1,如果弧 j->i 出现,则令 x_{ij} = 0。

    forall j. sum_i x_{ij} <= k
    forall i <> j. x_{ij} = 1 - x_{ji}
    forall i <> j. x_{ij} in {0, 1}
    

    仅当 i x_{ij}。

    (*) forall j. sum_{i<j} x_{ij} + sum_{i>j} (1-x_{ji}) <= k
    forall i < j. x_{ij} in {0, 1}
    

    现在 (*) 开始类似于守恒约束,因为每个变量出现一次是负数,一次是正数。让我们把不等式改成等式。

    (*) forall j. x_{si} + sum_{i<j} x_{ij} + sum_{i>j} (1-x_{ji}) = k
                  ^^^^^^                                           ^
    forall i < j. x_{ij} in {0, 1}
    forall i. x_{si} >= 0
    ^^^^^^^^^^^^^^^^^^^^^
    

    我们几乎一直到流 LP ——我们只需要清除常量 1k。剩下的交给你处理(包括引入 t)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多