除了在所有可能的独立集合中找到最大值的蛮力方法之外,我不相信存在一种算法可以在二分图中找到最大独立顶点集。
我想知道找到所有可能的顶点集的伪代码。
假设给定一个具有 4 个蓝色顶点和 4 个红色顶点的二分图。目前我会
Start with an arbitrary blue,
find all red that don't match this blue
put all these red in Independent Set
find all blue that dont match these red
put these blue in Independent Set
Repeat for next vertex in blue
Repeat all over again for all blue then all vertices in red.
我知道这种方式根本不会给我所有可能的独立集组合,因为在第一步之后,我选择了所有不匹配的下一个颜色顶点,而不是逐步完成所有可能。
例如给定一个匹配的图
B R
1 1
1 3
2 1
2 3
3 1
3 3
4 2
4 4
Start with blue 1
Choose red 2 and 4 since they dont match
Add 2, 4 to independent Set
Choose 2 and 3 from blue since they dont with 2 or 4 from red
Add 2 and 3 from blue to independent set as well.
Independent Set = 1,2,3 from blue 2,4 from red
Repeat for blue 2, blue 3, ... red n (storing the cardinality for each set)
有没有办法改进这个算法以更好地搜索所有可能性。我知道|二部图的最大集| = |红色| + |蓝色| - |最大匹配|。
问题出现的可能性是,在第一次选择所有可能的红色以获得给定的蓝色时,如果这些红色连接到所有其他可能的蓝色,那么我的集合只有所有 1 个蓝色和其余红色。