测试图表是Edgelist文件中的Directed还是Undirected Graph

时间:2015-11-10 00:23:44

标签: python networkx canopy

我有一个文本文档,它是一个边缘列表文件。我知道如何阅读文件(使用Canopy Enthought),但我不知道如何获取我想要的图表信息。

主要问题:有没有办法检测此图表(从边缘列表文件创建)是使用networkx命令定向还是不定向?或者只是加权或不加权?

1 个答案:

答案 0 :(得分:5)

我认为在使用边缘列表文件之前必须指定图形的类型。因为边缘列表文件只是由包含要连接的节点的元组组成,而没有说明它们是如何连接的。因此,例如,如果您创建图形G = nx.Graph(),那么如果文件中的节点对重复出现,它们之间仍然会有一条边,并且节点的顺序无关紧要; ((node1,node2)等同于(node2,node1))。如果您将图形创建为G = nx.DiGraph(),则节点的顺序会有所不同。此外,如果重复,将指定G = nx.MultiGraph()多个边缘。读取边列表文件时,G = nx.MultiDiGraph()会有不同的结果。因此,请检查图表类型documentation以了解您需要的类型。

要检查图表是否已定向,您可以使用 nx.is_directed(G),您可以找到文档here

检查图表是否已加权  如果图形具有加权边缘,则没有特定类型可以说。但是,解决方法是检查边是否包含名为 weight 的属性,如上所述here。它可以通过

完成
'weight' in G[1][2] # Returns true if an attribute called weight exists in the edge connecting nodes 1 and 2.