用于集团发现的Bron Kerbosch算法 - 当枢轴顶点不存在时会发生什么?

时间:2011-09-12 15:38:54

标签: algorithm graph clique

BK clique上的维基百科伪代码使用透视:

   BronKerbosch2(R,P,X):
   if P and X are both empty:
       report R as a maximal clique
   choose a pivot vertex u in P ⋃ X
   for each vertex v in P \ N(u):
       BronKerbosch2(R ⋃ {v}, P ⋂ N(v), X ⋂ N(v))
       P := P \ {v}
       X := X ⋃ {v}

我不清楚P union X是空的,会发生什么。由于u未定义,函数是否以N(u)作为空集继续(即它继续为P中的每个顶点v),还是返回给调用者?

2 个答案:

答案 0 :(得分:2)

当且仅当P和X都为空时,P union X为空。在

行中检查此条件
if P and X are both empty:

因此,如果此条件失败,则表示P或X或两者都不为空。因此,P union X中必须至少有一个元素。

换句话说:如果P union X为空,我们report R as a maximal clique

答案 1 :(得分:1)

我们选择u的价值并不重要。您的假设是P union X为空,这意味着PX都为空。因此,我们暂时忽略u的值,然后转到下一行," for each vertex v in P \ N(u):"。由于P为空,因此P \ N(u)仍为空。因此无论如何都会跳过for循环。因此,如果它让你感觉更好,你可以在那里放一个return语句,但正如它目前所写,它仍将停止执行算法。