给定一个无向加权图(或一个较大的不相交图的单个连通分量),它通常包含许多奇数和偶数周期,我正在寻找算法去除生成一个或多个所需的最小边数。更多的二分子图。文献中是否有任何标准算法,如最小切割等?
我想解决的问题在现实世界中看起来像这样: 在一个或两个时间段内向学生提供关于不同科目的约1小时的演示。学生可以注册至少一个他们选择的演示文稿,或两个或三个(第三个选择是另一个选择,以防其中一个不会出现)。他们必须是所有不同的选择。如果给定演示文稿的注册少于三次,则不会给出。如果有18个或更多,则两个块中将给出两次。我必须安排演示文稿,以便满足最大注册次数。
在以下情况下,调度很简单:
如果提供演示文稿(即注册> = 3),则始终只能满足一个演示文稿的注册;
如果两次给定的演示文稿中至少有一次给出两次,那么这些演示文稿的注册总是令人满意。
首先,汇总所有注册以确定哪些注册一次,哪些注册两次。如果学生已经注册了几乎没有其他注册的演示文稿,那么如果也会给出替代演示文稿。
在一天结束时,我留下了一个无向加权图,其中顶点是演示文稿,边缘代表已注册演示组合的学生,每个演示文稿仅出现一次。权重对应于独特呈现组合的注册次数(从而避免平行边缘)。
如果顶点或演示的数量大约为20或更少,我会想出一个在可接受的时间内完成的强力解决方案。但是,每个附加顶点将使该解决方案的运行时间加倍。大约28岁后,它很快就变得难以管理。
今年我们有37场演讲,其中30场只有一次,最终出现在图表中。我现在正在尝试更大的图表如下:
我找不到优先级队列的顺序,我可以证明结果与使用强力方法获得的解决方案一样可接受(它可能是NP-hard)。但是,我正在尝试这些方面:
一个。如果边缘仅属于奇数周期,请先将其删除;
湾如果边缘属于比奇数更多的奇数周期,则在属于比奇数更多的偶数周期的任何其他边缘之前将其移除;
℃。应首先移除重量最小的边缘。
如果边缘属于奇数周期和偶数周期,则移除它会留下更大的奇数周期。这就是为什么我这样订购它们。显然,边缘所属的奇数周期数越大,优先级越高,但只有在较少的偶数周期受到影响时才会出现。
还存在其他标准,但需要在图形问题之外加以考虑;例如,删除边缘有效地删除了其中一个演示文稿的注册之一,因此必须保持注意不要让注册的数量变得太小。
(编辑:还有可能将演示文稿分成两个块,这些块几乎有足够的注册,例如15-16而不是18。但这意味着无论谁提供演示文稿都必须做两次,所以这是一种权衡。)
提前感谢任何建议!
答案 0 :(得分:0)
这个问题等同于NP-hard加权max cut problem,它要求将顶点划分为两部分,使得最大边数在部分之间。
我认为解决问题大小的最简单方法就是将其表示为二次整数程序,然后应用现成的求解器。配方看起来像
maximize (1/2) sum_{ij} w_{ij} (1 - y_i y_j)
subject to
y_i in {±1} for all i
其中w_ij
是无向边ij
的权重,如果存在则为零(因此可以省略相应的变量及其约束)。