我在空闲时间练习解决编程问题。这个问题我前段时间发现了,但仍然不知道如何解决:
对于具有 n 个顶点和 m 个边(均小于 2 × 10 6)的给定无向图,我需要将其顶点拆分为尽可能多的组,但有一个条件:来自不同组的每一对顶点通过边连接。每个顶点恰好在一个组中。最后,我需要知道每个组的大小。
当我想出这个解决方案时,我感到很自豪:考虑原始图的补充图并为其使用不相交集数据结构。它给了我们正确的答案(不难证明)。但这只是理论上的解决方案。在给定的约束下,它非常非常糟糕,不是最优的。但我相信这种方法可以以某种方式巧妙地解决。但是怎么做?
任何人都可以帮忙吗?
编辑:对于顶点从 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}。有边连接来自不同组的每对顶点,我们不能创建更多组。