2017-04-05 175 views
0

我创建了一个图表,我运行pagerank。我已经测试了有向图和无向图,但我很难理解我所看到的。networkx python,有向/无向图,不一致的节点和边缘?

我有一个代码块看起来象下面这样:

G= nx.DiGraph() #option 1 
#G= nx.Graph() #option 2 
[inside a for loop] 
    G.add_edge(node, another_node) 
print("Graph size {} {}".format(len(G.nodes()), len(G.edges()))) 

[then code to run pagerank...] 

正如你所看到的,我尝试这两种有向图(有向图)和无向图(图表)。对于这两者,我都经历同一个循环,即在同一组(node,another_node)对上调用add_edge相同的次数。

然后我打印结果图上的节点和边的数量。但是,这是困扰我的一条线。因为对于DiGraph和Graph,我看到不同的输出:

使用选项1时,有10107个节点和1350222条边。 使用选项2时,有10107个节点和1268064个边。

我知道理解一致性。这是正常的还是可能是错的?

谢谢

回答

1

无向图中的边没有方向。从A到B和从B到A的边缘被认为是重复的。 add_edge()默默忽略重复。这就是为什么你的无向图有一个边(A,B)或(B,A),其中有向图有两条边(A,B)和(B,A)。

+0

我看,非常感谢! – Ziqi