gpt4 book ai didi

networkx - 了解 Networkx find_cliques() 函数

转载 作者:行者123 更新时间:2023-12-05 06:26:45 27 4
gpt4 key购买 nike

我目前正在尝试制定一种算法来在图中查找派系,幸运的是我从 Networkx 找到了一个函数的文档,该函数就是这样做的。不幸的是,变量名有点简洁,我很难理解代码的每一部分的作用。

这里是 find_cliques 的代码:

def find_cliques(G):
if len(G) == 0:
return

adj = {u: {v for v in G[u] if v != u} for u in G}
Q = [None]

subg = set(G)
cand = set(G)
u = max(subg, key=lambda u: len(cand & adj[u]))
ext_u = cand - adj[u]
stack = []

try:
while True:
if ext_u:
q = ext_u.pop()
cand.remove(q)
Q[-1] = q
adj_q = adj[q]
subg_q = subg & adj_q
if not subg_q:
yield Q[:]
else:
cand_q = cand & adj_q
if cand_q:
stack.append((subg, cand, ext_u))
Q.append(None)
subg = subg_q
cand = cand_q
u = max(subg, key=lambda u: len(cand & adj[u]))
ext_u = cand - adj[u]
else:
Q.pop()
subg, cand, ext_u = stack.pop()
except IndexError:
pass

它只是 fie,但我只是想了解这里发生了什么,而且我似乎无法在网上找到任何解释它的资源。

最佳答案

documentation find_cliques 方法列出了该算法的三个引用。你可能想看看它们或者你看看wikipedia .

一些变量:

adj= 将每个节点的邻居存储为一个集合的字典

u= 不属于其他 clique 的邻居数最多的节点。

ext_u = u 的所有邻居,它们不是另一个 clique 的成员

关于networkx - 了解 Networkx find_cliques() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55768644/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com