我一直试图通过下面提到的算法解决最大团队问题,到目前为止还没能找到失败的情况。
算法:
对于给定的图,每个节点编号从1到N.
1.将节点视为永久节点并形成一组节点,使每个节点连接到该永久节点。(该集合还包括永久节点)
2.现在形成原始图形的子图,使其包含所形成的集合中的所有节点,并且仅包含集合中存在的节点之间的那些边。
3.找出每个节点的度数
如果所有节点都有相同的学位,那么我们就有了一个集团
5.否则从该子图中删除最小度数节点,并从步骤3开始重复
6.对图中的所有节点重复步骤1-5
任何人都可以指出这个算法的缺陷吗?
这是我的代码http://pastebin.com/tN149P9m。
答案 0 :(得分:6)
这是一系列反例。从k-clique开始。对于该集团中的每个节点,将其连接到K_ {k-1,k-1}的新副本的每个节点,即k-1加k-1个节点上的完整二分图。对于集团中的每个永久节点,残差图是其K_ {k-1,k-1}和集团的副本。 K_ {k-1,k-1}中的节点具有度k,而其他clique节点具有度k-1,因此后者被删除。
这是一个16节点的反例,通过设置k = 4并识别环中K_ {3,3}的部分来获得:
{0: {1, 2, 3, 4, 5, 6, 7, 8, 9},
1: {0, 2, 3, 7, 8, 9, 10, 11, 12},
2: {0, 1, 3, 10, 11, 12, 13, 14, 15},
3: {0, 1, 2, 4, 5, 6, 13, 14, 15},
4: {0, 3, 7, 8, 9, 13, 14, 15},
5: {0, 3, 7, 8, 9, 13, 14, 15},
6: {0, 3, 7, 8, 9, 13, 14, 15},
7: {0, 1, 4, 5, 6, 10, 11, 12},
8: {0, 1, 4, 5, 6, 10, 11, 12},
9: {0, 1, 4, 5, 6, 10, 11, 12},
10: {1, 2, 7, 8, 9, 13, 14, 15},
11: {1, 2, 7, 8, 9, 13, 14, 15},
12: {1, 2, 7, 8, 9, 13, 14, 15},
13: {2, 3, 4, 5, 6, 10, 11, 12},
14: {2, 3, 4, 5, 6, 10, 11, 12},
15: {2, 3, 4, 5, 6, 10, 11, 12}}
答案 1 :(得分:3)
你的建议看起来非常像下面的排序算法和贪婪的集团搜索:
考虑一个简单的无向图G =(V,E)
选择具有最小度数的顶点并将其放置在新列表L中。从剩余顶点中选择具有最小度数的顶点并将其置于L中的第二个位置。重复操作直到V中的所有顶点都在L中。
从L中的最后一个顶点开始,然后以反向顺序移动。对于L计算派系中的每个顶点 v ,如下所示:
实际上,建议的初始排序称为简并排序,并在k核中分解G(参见Batagelj et al. 2002)k核是一个最大子图,使得它的所有顶点至少具有 k < / em>的。最初的排序最后会留下最高的核心(最大的 k )。当以相反的顺序拾取顶点时,您首先在最高核心中拾取顶点(类似于您的步骤4)并尝试在那里找到派系。有许多其他的可能性可以根据k核心贪婪地找到派系,但除非你进行全面的枚举,否则你永远无法保证最佳。
例如,在搜索确切的最大集团时使用建议的初始排序,并且已在许多研究论文中进行了描述,例如[Carraghan and Pardalos 90]