具有顶点最大indegree的有向图

时间:2011-11-17 18:49:28

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

当我遇到这个问题时,我试图查看网络流量的一些应用程序:

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

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

1 个答案:

答案 0 :(得分:2)

在攻击这类问题时,我倾向于写下一个数学程序,然后按摩它。显然,我们应该将涉及w的所有缺失边缘定向为w。设d是w的结果度。对于所有不同的i,j,如果arc 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&lt;重写时才使用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)。