繁体   English   中英

Python:从带括号的边创建图节点

[英]python: creating graph nodes from a parenthesized edges

我正在尝试通过如下所示的输入创建图形:

(1 2) (2 3) (3 4) (4 1) 

上面的表示是用空格隔开的,每个带括号的参数表示两个节点之间的一条边。 我不确定哪种矩阵表示形式将更易于使用.. matrix-adjacencylinked list adjacency

关于如何解析此类输入的任何想法? 以及如何立即将其存储在矩阵中?

提前致谢!

在易用性方面,即使两个节点之间的边缘检测发生在O(1)时间,矩阵邻接也是可取的。 如果您的网络庞大且稀疏,则要避免浪费太多的空间,将零添加到矩阵邻接中,那么您应该使用链表邻接。 在您的情况下,由于它只是一个小图,所以没关系。

你可以这样解析

points = re.findall("\((\d+) (\d+)\)","(1 2) (2 3) (3 4) (4 1) ")

我建议建一个字典,将节点映射到它所连接的一组节点。 这是假设您的边缘是单向的。

info = '(1 2) (2 3) (3 4) (4 1)'
info = info.replace('(','').replace(')','')
info = info.split(' ')
edges={};
for i in range(1,len(info)):
    if i%2 == 1:
        startnode = info[i-1]
        endnode = info[i]
        if startnode not in edges:
            edges[startnode] = set()
        edges[startnode].add(endnode)

暂无
暂无

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

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