6

非常简单,两三个关于minimize_nested_blockmodel_dl函数的基本问题graph-tool library。有没有办法找出哪个顶点落在哪个块上?换句话说,从每个块中提取一个列表,包含其顶点的标签。

对于网络理论中的业余爱好者来说,层次可视化是相当难以理解的,例如,带有有向边的正方形是否旨在暗示正在考虑的两个块之间的底层边的主要方向?使用不同的颜色很好地显示了这些块,但在非常概念的层面上,哪些类型的模式或边缘/顶点属性在顶点的块分类背后?换句话说,当两个顶点在同一个块中时,我能说一下它们的共同属性吗?

4

1 回答 1

9

关于您的第一个问题,它相当简单:该minimize_nested_blockmodel_dl()函数返回一个NestedBlockState对象:

 g = collection.data["football"]
 state = minimize_nested_blockmodel_dl(g)

您可以通过检查层次结构的第一级来查询节点的组成员身份:

 lstate = state.levels[0]

这是一个对象,我们通过以下方法BlockState从中获取组成员身份:get_blocks()

 b = lstate.get_blocks()
 print(b[30])  # prints the group membership of node 30

关于您的第二个问题,随机块模型假设属于同一组的节点具有相同的连接到网络其余部分的概率。因此,被上述函数归入同一组的节点具有相似的连接模式。例如,如果我们查看适合足球网络的情况:

state.draw(output="football.png")

在此处输入图像描述

我们看到,属于同一组的节点往往与同一组的其他节点有更多的连接——社区结构的一个典型例子。然而,这只是随机块模型可以发现的众多可能性之一。其他拓扑模式包括核心-外围组织、二分性等。

于 2016-06-21T20:41:27.603 回答