繁体   English   中英

获取python-igraph中有向图的邻接矩阵

[英]get adjacency matrix of a directed graph in python-igraph

我的问题听起来很愚蠢,但是如何获得有向图的邻接矩阵?

让我解释。 我有以下代码:

g = Graph()
g.add_vertices(5)
g.add_edges([(0,1),(1,2)])
print(g)
print(g.get_adjacency())

第一次打印返回:

IGRAPH U--- 5 2 --
+ edges:
0--1 1--2

而第二个返回:

[[0, 1, 0, 0, 0]
 [1, 0, 1, 0, 0]
 [0, 1, 0, 0, 0]
 [0, 0, 0, 0, 0]
 [0, 0, 0, 0, 0]]

如果我希望图形是有向的而不是无向的,该怎么办?

谢谢您的帮助

在开始向其添加边之前,您需要按照指示初始化图:

gd = Graph(directed=True)
gd.add_vertices(5)
gd.add_edges([(0,1),(1,2)])
print(gd.get_adjacency())
# [[0, 1, 0, 0, 0]
#  [0, 0, 1, 0, 0]
#  [0, 0, 0, 0, 0]
#  [0, 0, 0, 0, 0]
#  [0, 0, 0, 0, 0]]

Matthew提到的.to_directed()方法不会做您想要的事情,因为它会为每个无向边沿两个方向创建边:

print(g.is_directed())    # your original undirected example graph
# False

g.to_directed()

print(g.is_directed())
# True

print(g.get_adjacency())  # adjacency matrix is still symmetric
# [[0, 1, 0, 0, 0]
#  [1, 0, 1, 0, 0]
#  [0, 1, 0, 0, 0]
#  [0, 0, 0, 0, 0]
#  [0, 0, 0, 0, 0]]

您可以通过传递.to_directed(mutual=False)来防止创建两个有向边,但是在这种情况下,igraph只会为每个边选择任意一个方向。 根本的问题是,如果图形是无向的,则根本不会存储有关边缘方向的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM