从边列表文件中测试图是有向图还是无向图

3
我有一个文本文件,它是一个边缘列表文件。我知道如何读取该文件(使用Canopy Enthought),但我不知道如何获取所需的关于图形的信息。
主要问题:是否有一种方法可以使用networkx命令检测这个从边缘列表文件创建的图形是有向的还是无向的?或者仅仅是加权或未加权?
1个回答

8
我认为在使用边列表文件之前,必须指定图的类型。因为边列表文件仅由包含要连接的节点的元组组成,而没有说明它们如何连接。例如,如果你创建一个图 G = nx.Graph(),那么如果文件中的节点对被重复出现,它们之间仍将有一条边,节点的顺序无关紧要; ((node1,node2) 等同于 (node2,node1))。而如果你将图创建为 G = nx.DiGraph(),则节点的顺序很重要。此外,如果指定了 G = nx.MultiGraph(),则在重复的情况下将存在多条边。当读取边列表文件时,G = nx.MultiDiGraph() 将产生不同的结果。因此,请查看图类型文档以了解所需类型。 要检查图是否是有向的,可以使用 nx.is_directed(G),可以在这里找到文档。 要检查图是否带权重 没有特定的类型来表示图是否具有加权边缘。但是,可以通过检查边是否包含名为weight的属性来查看权重,如此处所述。可以通过以下方式完成:
'weight' in G[1][2] # Returns true if an attribute called weight exists in the edge connecting nodes 1 and 2.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接