【问题标题】:Partially coloring a graph with 1 color用 1 种颜色对图形进行部分着色
【发布时间】:2015-05-12 08:10:59
【问题描述】:

我刚开始阅读图论,正在阅读有关图着色的内容。这个问题突然出现在我脑海中:

我们必须只用一种颜色为我们的无向图(不完全)着色,以使彩色节点的数量最大化。我们需要找到这个最大数量。我能够为非循环图制定一种方法:

我的方法:首先,我们将图划分为独立的组件,并对每个组件执行此操作。我们创建一个 dfs 树并在遍历它的同时创建 2 个 dp 数组,以便 root 排在最后:

dp[0][u]=sum(dp[1][visited children])

dp[1][u]=sum(dp[0][visited children])

ans=max(dp[1][root],dp[0][root])

dp[0][i] , dp[1][i] are initialized to 0,1 respectively.

这里 0 表示无色,1 表示有色。

但这不适用于循环图,因为我假设没有访问过的孩子被连接。

有人可以指导我如何解决循环图的这个问题(而不是通过蛮力)吗?是否可以修改我的方法,或者我们是否需要提出不同的方法?像为边缘最少的节点着色这样的贪婪方法会起作用吗?

【问题讨论】:

  • 我不明白你的问题?如果为整个图着色,结果是否最佳?
  • @PhamTrung 两个连续的顶点不能用相同的颜色着色。
  • 很确定它也是 NP Hard,可能可以从 Vertex-Cover 减少。问题之间存在差异,但本质上它们归结为相同的目标。
  • 那么两个未着色的节点不被认为具有相同的颜色吗?
  • @PhamTrung 是的,两个未着色的节点可以是连续的。

标签: algorithm graph graph-algorithm


【解决方案1】:

这个问题也是 NP-Hard,被称为maximum independent set problem

如果S 中的每两个顶点u,v 没有边(u,v),则称集合S<=V 是图中的独立集

S(也就是你要找的数)的最大尺寸称为图的独立数,不幸的是发现它是NP-Hard。

因此,除非 P=NP,否则您的算法无法用于一般用途的图表。


证明它相当简单,给定一个图G=(V,E),创建互补图G'=(V,E'),其中(u,v)E' 中当且仅当(u,v) 不在E 中。

现在,给定一个图 G,当且仅当在 G' 中存在一个大小为 k 的独立集合,使用相同的顶点(因为 if (u, v) 是独立集中的两个顶点,E' 中没有边 (u,v),并且根据定义,E 中有边。对独立集中的所有顶点重复此操作,您在 @987654342 中得到了一个 clique @)。

由于clique problem 是 NP-Hard,所以这也是这样。

【讨论】:

  • 你说的是“通用图表”。什么类型的图可以在多项式时间内求解?
  • @Awesome 很多。例如,在clique 中,最大独立集是任意节点,独立数 为 1。没有检查您的算法,但如果它确实正确,也适用于无环图。
  • 有色节点数+邻居数=总节点数有必要吗?
  • 在最大独立集中,是的。并且最大独立集也是最大的
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2020-08-15
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多