求图算法:如何使图表满意?

时间:2014-09-18 03:08:14

标签: algorithm graph bioinformatics

背景

如下所示,图的左侧有一个无向图。顶点由S1,S2 ... S6表示,边缘由顶点之间的线段表示。每条边都有一个重量(边缘附近的数字),无论是正数还是负数。

解释

在图中,如果一个简单的循环具有奇数个负边,则称为冲突循环,如果是负边的偶数(或零),则称为一致循环。例如,在下图的左侧,图形具有两个冲突的循环(S1-S2-S3-S1和S2-S3-S4-S2),并且其他循环是一致的。如果图表没有冲突周期,则称为快乐。

目的:

通过去除一些边缘使图形快乐,同时确保成本(去除边缘的权重的绝对值之和)最低。在下图中,例如,在移除边缘(红线段)后,没有冲突的周期。因此图表变得快乐,成本仅为2。

Grahp

2 个答案:

答案 0 :(得分:3)

通过从最大切割减少这个问题是NP难的。给定最大切割的实例,将所有边缘权重乘以-1。这个问题的约束要求去除边缘以消除所有奇数周期,即我们需要找到最大权重的二分子图。

这个问题实际上相当于2标签独特的标签封面问题。目标是将每个顶点着色为黑色或白色,以便最小化(i)连接不同颜色的顶点的正边缘(ii)连接相同颜色的顶点的负边缘的成本之和。删除所有这些边是原始问题的有效解决方案。相反,给定一组有效的删除边,我们可以确定着色。我希望有一种基于半定规划的近似算法(并且松弛可以用于分支和边界)。

但是,除非您熟悉组合优化,否则我建议的算法是整数编程。如果我们删除边x(e),则e为1,如果不删除,则x(e)为0。

minimize sum_{edges e} cost(e) x(e)
subject to
for every simple cycle C with an odd number of negative edges,
    sum_{edges e in C} x(e) >= 1
for each edge e, x(e) in {0, 1}

解算器将完成大部分工作。问题是处理我编写的指数数量的约束。最原始的事情是生成所有简单的循环,并为求解器提供整个程序。另一种可能性是利用约束的子集来求解最优性,测试解是否实际上是有效的,并且如果不是,则引入一个或多个缺失约束。要进行测试,尝试对未删除的子图进行双色处理,使得由正边连接的顶点具有相同的颜色,并且由负边连接的顶点具有不同的颜色。颜色贪婪;如果我们陷入困境,那么就会出现一个奇怪的周期。

通过更加复杂,可以通过名为column generation的技术解决该程序。

答案 1 :(得分:1)

我为这个问题编写了一个solver(名称为"签名图平衡")。它基于固定参数算法,如果只需要删除少量边缘,则该算法很快。该方法在论文" Separator-based data reduction for signed graph balancing"。

中有所描述