Algorithm 寻找一个图形算法:如何使图形快乐?

Algorithm 寻找一个图形算法:如何使图形快乐?,algorithm,graph,bioinformatics,Algorithm,Graph,Bioinformatics,背景: 如下图所示,图的左侧有一个无向图。顶点由S1、S2。。。S6和边由顶点之间的线段表示。每条边都有一个权重,即边附近的数字,可以是正的,也可以是负的 定义: 在图中,如果简单循环的负边数为奇数,则称为冲突循环;如果简单循环的负边数为偶数或零,则称为协调循环。例如,下图左侧有两个冲突循环S1-S2-S3-S1和S2-S3-S4-S2,其他循环是一致的。如果一个图没有冲突的循环,则称之为happy 目标: 通过删除一些边使图形满意,同时确保删除边的权重绝对值之和最小。例如,在下图中,删除边缘红

背景:

如下图所示,图的左侧有一个无向图。顶点由S1、S2。。。S6和边由顶点之间的线段表示。每条边都有一个权重,即边附近的数字,可以是正的,也可以是负的

定义:

在图中,如果简单循环的负边数为奇数,则称为冲突循环;如果简单循环的负边数为偶数或零,则称为协调循环。例如,下图左侧有两个冲突循环S1-S2-S3-S1和S2-S3-S4-S2,其他循环是一致的。如果一个图没有冲突的循环,则称之为happy

目标:

通过删除一些边使图形满意,同时确保删除边的权重绝对值之和最小。例如,在下图中,删除边缘红线段后,没有冲突循环。因此,图表变得令人满意,而成本仅为2


该问题是由最大割集归约而成的NP难问题。给定一个最大切割实例,将所有边权重乘以-1。该问题的约束条件要求删除边以消除所有奇数圈,即我们需要找到最大权的二部子图

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

除非你熟悉组合优化,否则我建议的算法是整数规划。如果我们删除边e,则设xe为1,如果我们不删除边e,则设xe为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}
解算器将完成大部分工作。问题是如何处理我编写的指数数量的约束。最粗糙的事情是生成所有简单的循环,并将整个程序交给解算器。另一种可能性是用约束子集求解最优解,测试该解是否实际有效,如果无效,则引入一个或多个缺失的约束。要执行测试,请尝试对未删除的子图进行双色处理,以便由正边连接的顶点具有相同的颜色,而由负边连接的顶点具有不同的颜色。贪婪地着色;如果我们陷入困境,那么就会出现一个奇怪的循环故障


更复杂的是,可以通过一种称为的技术来解决编写的程序。

这个问题是NP难的,通过从最大割集进行约简。给定一个最大切割实例,将所有边权重乘以-1。该问题的约束条件要求删除边以消除所有奇数圈,即我们需要找到最大权的二部子图

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

除非你熟悉组合优化,否则我建议的算法是整数规划。如果我们删除边e,则设xe为1,如果我们不删除边e,则设xe为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}
解算器将完成大部分工作。问题是如何处理我编写的指数数量的约束。最粗糙的事情是生成所有简单的循环,并将整个程序交给解算器。另一种可能性是用约束子集求解最优解,测试该解是否实际有效,如果无效,则引入一个或多个缺失的约束。要执行测试,请尝试对未删除的子图进行双色处理,以便由正边连接的顶点具有相同的颜色,而由负边连接的顶点具有不同的颜色。贪婪地着色;如果我们陷入困境,那么就会出现一个奇怪的循环故障

更复杂的是,可以通过一种称为的技术来解决程序编写的问题。

我已经为这个问题编写了一个名为签名图平衡的解决方案。它基于一个固定参数算法,如果只需要删除很少的边,该算法速度很快。该方法在本文中进行了描述。

我已经为这个问题编写了一个名为签名图平衡的解决方案
. 它基于一个固定参数算法,如果只需要删除很少的边,该算法速度很快。该方法在本文中进行了描述。

也有可能移除正边缘,因此不存在循环冲突循环,因此收缩正边缘权重会影响这种可能性?@VikramBhat Argh,是的。NP硬度降低是完整的。我同意NP难的部分,因为只有负边缘消除是问题的子集,所以问题至少和它一样难:+1你能提供一些关于列生成的更多细节吗?一列对应什么?@FalkHüffner我们要解决对偶程序,得到分支和边界的下界。双列对应于具有奇数个负边的循环。使用当前原始解作为边权重,我们通过计算最短路径来寻找一个和小于1的无效循环。也有可能删除正边,因此根本不存在循环冲突循环,因此收缩正边权重会影响这种可能性?@VikramBhat Argh,是的。NP硬度降低是完整的。我同意NP难的部分,因为只有负边缘消除是问题的子集,所以问题至少和它一样难:+1你能提供一些关于列生成的更多细节吗?一列对应什么?@FalkHüffner我们要解决对偶程序,得到分支和边界的下界。双列对应于具有奇数个负边的循环。使用当前原始解作为边权值,通过计算最短路径来寻找和小于1的无效循环。