gpt4 book ai didi

python - NetworkX——创建属于 4 节点 clique 的所有节点的新图

转载 作者:太空狗 更新时间:2023-10-30 02:11:02 24 4
gpt4 key购买 nike

我有一个我想受 clique 约束的网络,但我还没有完全弄清楚如何正确地做到这一点。我能够使用 k-cores 执行相同的过程,但不确定创建仅包含 cliques 的图形的正确过程是什么。

我希望如果我展示我使用 k_core 函数查找子图的过程,有人可以帮助我改变我的过程以使用 clique 函数查找子图。

首先,我创建了一个图表,我将使用空手道俱乐部的图表:

In [1]: import networkx as nx

In [2]: g = nx.karate_club_graph()

在 iPython 中绘制图形:

In [3]: pylab inline
Populating the interactive namespace from numpy and matplotlib

In [4]: nx.draw(g)

karate_club_graph

接下来,我找到 4 核内的所有边(有 4 个或更多边):

In [5]: g_4k_edges = nx.k_core(g, k=4).edges()

将这些边添加到新图中:

In [6]: g_4k = nx.Graph()
In [7]: g_4k.add_edges_from(g_4k_edges)

绘制 4 核图:

In [8]: nx.draw(g_4k)

karate club graph - 4-core

关于如何做到这一点的任何想法,但不是使用 k-cores 来绑定(bind)网络,而是使用具有 4 个或更多顶点的 cliques?

最佳答案

这是使用团生成子图的一种方法。

import networkx as nx

g = nx.karate_club_graph()

查找 4 个或更多节点的所有 cliques:

cliques = nx.find_cliques(g)
cliques4 = [clq for clq in cliques if len(clq) >= 4]

从所有足够大的团中创建 g 的子图:

nodes = set(n for clq in cliques4 for n in clq)
h = g.subgraph(nodes)

删除 h 中度数小于 4 的节点:

deg = nx.degree(h)
nodes = [n for n in nodes if deg[n] >= 4]

所需的图 kh 的子图,具有以下节点:

k = h.subgraph(nodes)

这是所需图形的图像:

nx.draw(k)

Graph image

关于python - NetworkX——创建属于 4 节点 clique 的所有节点的新图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222322/

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