我正在尝试标记哪些节点位于网络的巨大组件中,哪些节点不在网络中.我并不想简单地抓住巨大的组件.这是我到目前为止:
def in_giant(G):
giant = G.components().giant().vs["name"]
return map(lambda x: x in giant, G.vs["name"])
Run Code Online (Sandbox Code Playgroud)
这很慢.我怀疑通过G.components()直接操作结构可以做到快速的事情.有任何想法吗?
我不确定我是否正确地理解了你的问题,但似乎你只需要一个二进制列表(即包含True且False仅包含的列表),如果相应的顶点在巨人中,则列表中索引i处的项为真零件.你的解决方案很好,但由于它取决于NumPy,我想我会添加一个不依赖于它的替代方案:
def in_giant(G):
cl = G.components()
cl_sizes = cl.sizes()
giant_component_index = cl_sizes.index(max(cl_sizes))
return [x == giant_component_index for x in cl.membership]
Run Code Online (Sandbox Code Playgroud)