Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:从带括号的边创建图形节点_Python_Graph_Nodes_Edges - Fatal编程技术网

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

python:从带括号的边创建图形节点,python,graph,nodes,edges,Python,Graph,Nodes,Edges,我正在尝试从如下输入创建一个图形: (1 2) (2 3) (3 4) (4 1) 上面的表示是空格分隔的,每个括号内的参数表示两个节点之间的边。我不确定哪种矩阵表示法更容易使用。。矩阵邻接或链表邻接 关于如何解析这些输入有什么想法吗?例如,如何将其立即存储在矩阵中 提前谢谢 您可以这样解析它 points = re.findall("\((\d+) (\d+)\)","(1 2) (2 3) (3 4) (4 1) ") 在易用性方面,矩阵邻接更好,即使两个节点之间的边缘检测在O(1)时

我正在尝试从如下输入创建一个图形:

(1 2) (2 3) (3 4) (4 1) 
上面的表示是空格分隔的,每个括号内的参数表示两个节点之间的边。我不确定哪种矩阵表示法更容易使用。。矩阵邻接或链表邻接

关于如何解析这些输入有什么想法吗?例如,如何将其立即存储在矩阵中


提前谢谢

您可以这样解析它

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

在易用性方面,矩阵邻接更好,即使两个节点之间的边缘检测在O(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)

你想做什么。。。当然不仅仅是储存它。。。如果您只想存储它,那么当前格式有什么问题。。。如果你想以某种方式渲染它,看看点语言。。。它使图形再现变得简单。。。您可以使用
networkx
来保存图形,它已经构建了遍历功能in@JoranBeasley我想检查这个图是否是欧拉回路