【发布时间】:2012-12-14 10:53:34
【问题描述】:
我在空闲时间练习解决编程问题。这个问题我前段时间发现了,现在还不知道怎么解决:
对于具有 n 个顶点和 m 个边的给定无向图(均小于 2 × 106) 我需要将它的顶点分成尽可能多的组,但只有一个 条件:来自不同组的每一对顶点通过边连接。 每个顶点恰好在一个组中。最后我需要知道的大小 每个组。
当我想出这个解决方案时,我很自豪:考虑原始图的complemented graph 并为其使用不相交集数据结构。它给了我们正确的答案(不难证明)。但这只是理论上的解决方案。在给定的约束下,它非常非常糟糕,不是最优的。但我相信这种方法可以以某种方式巧妙地解决。但是怎么做呢?
谁能帮忙?
编辑:对于顶点从 1 到 7 和 16 条边的图:
1 3
1 4
1 5
2 3
3 4
4 5
4 7
4 6
5 6
6 7
2 4
2 7
2 5
3 5
3 7
1 7
我们有 3 个大小为 1、2 和 4 的组。
这些组分别是:{4}、{5,7}、{1,2,3,6}。有边连接来自不同组的每对顶点,我们无法创建更多组。
【问题讨论】:
-
当您说
each pair of vertices from different groups are connected by edge时,您的意思是它们最多通过一个边缘连接吗?如果不是,来自不同组的每对顶点必须有一条边,你的意思是如果你有组A{a, b}, B{c, d}那么必须有从a到c和d的边,以及从@987654327 @ 到c和d? -
来自不同组的每一对顶点由一条边连接。如果我们有你所说的组 A{a,b} 和 B{c,d},那么它们是组,如果存在边 a-c,a-d,b-c,b-d;我们必须创建尽可能多的组,所以如果不存在边 a-b 或 c-d,那么我们可以将 A 或 B 分成两组。
-
在最后一句中,您的意思是如果不存在边
a-c或a-d,对吗?还是同一组中的顶点之间必须有边? -
对不起,我弄错了。我编辑了我的问题并举了一个例子来说明一切。
-
您确定您发布的结果吗?还是我误解了问题所在?
标签: algorithm data-structures graph graph-algorithm