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),还是返回给调用者?
答案 0 :(得分:2)
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
为空,这意味着P
和X
都为空。因此,我们暂时忽略u
的值,然后转到下一行," for each vertex v in P \ N(u):
"。由于P
为空,因此P \ N(u)
仍为空。因此无论如何都会跳过for循环。因此,如果它让你感觉更好,你可以在那里放一个return语句,但正如它目前所写,它仍将停止执行算法。