什么是Networkx的有效学位序列

时间:2017-06-10 03:55:38

标签: python python-3.x networkx

我正在尝试生成具有最小度数值(rho)的幂律程度分布,并使用它来构建具有networkx包的随机图。我用来生成幂律度分布的函数是这样的(指数是alpha,rho是最小值):

import random
import networkx as nx

def generate_pl_dd(no_of_nodes, alpha, rho):
  degree_distribution = []
  for i in range(no_of_nodes):
    r = random.random()

    degree_distribution.append(int(rho * (1 - r)**(-1/(alpha - 1))))

  return sorted(degree_distribution, reverse=True)

现在我希望使用此函数生成的度数列表来构建networkx图形对象。在我这样做之前,理智检查会返回以下结果。

dd1 = generate_pl_dd(100, 2.2, 50)
nx.is_valid_degree_sequence(dd1) # returns False

文档提到程度序列的总和必须是偶数,但即使我生成偶数求和程度序列,结果也是假的。我已经在下面捕获了一些此功能。

dd2 = generate_pl_dd(100, 2.2, 50)
sum(dd2) # returns 15710
nx.is_valid_degree_sequence(dd2) # returns False

dd3 = generate_pl_dd(100, 2.2, 10)
sum(dd3) # returns 4540
nx.is_valid_degree_sequence(dd3) # returns False

dd4 = generat_pl_dd(100, 2.2, 1)
sum(dd4) # returns 344
nx.is_valid_degree_sequence(dd4) # returns True

上次运行如何返回True?我在这里缺少什么细节?

1 个答案:

答案 0 :(得分:1)

is_valid_degree_sequence测试的有效度序列是一个简单图形(一个简单图形没有自循环且没有重复边缘)可能具有的序列。因此,例如,您不能只有两个节点的图形,两个节点都具有3级。这个例子显然是不可能的,但一般来说,序列的“图形”的特定条件是更复杂的计算,通常通过Havel-Hakimi algorithm

当你说“文档提到学位序列的总和需要均匀”时,我相信你指的是configuration_model configuration_model,它实际上生成多图(允许自我) -loops和多个边缘)。这样做的唯一限制是输入度的总和应该是偶数(并且作为技术细节,自循环在生成过程中被计算两次,尽管在其他情况下它们可能只计算一次)。

(因为它的价值--- <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#125688" android:gravity="center"> <ImageButton android:layout_width="45dp" android:layout_height="45dp" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:src="@drawable/left" android:scaleType="fitCenter" android:layout_alignParentLeft="true" android:foregroundGravity="right"/> </RelativeLayout> 用于测试学位序列是“图形”,但是documentation。我声称对此负有责任。)