排除 LightGraphs 中未连接的节点

问题描述

我通过随机抽奖生成一个网络。现在,当我通过 LightGraphs.jl 绘制网络时,我也得到了未连接的节点:

但是,我希望从图中排除这些节点。这可能吗?

解决方法

是的,使用 getindexinduced_subgraph 函数(我假设您想排除 0 度节点):

julia> Random.seed!(123);

julia> g = erdos_renyi(10,0.1)
{10,7} undirected simple Int64 graph

julia> degree(g)
10-element Vector{Int64}:
 1
 4
 1
 1
 1
 2
 0
 2
 2
 0

julia> sg = g[findall(>(0),degree(g))]
{8,7} undirected simple Int64 graph

julia> degree(sg)
8-element Vector{Int64}:
 1
 4
 1
 1
 1
 2
 2
 2

julia> sg2 = induced_subgraph(g,findall(>(0),degree(g)))
({8,7} undirected simple Int64 graph,[1,2,3,4,5,6,8,9])

julia> sg2[1] == sg
true

induced_sugraph 的好处是它还返回一个将新顶点映射到旧顶点的向量。