【问题标题】:converting list to graph?将列表转换为图形?
【发布时间】:2017-02-13 06:46:05
【问题描述】:

假设我有一个 2D 布尔值列表,例如:

[[False, True , False],
 [True, False, False]]

是否可以将其转换为图表,使列表的所有相邻值都相互连接?邻接意味着另一个值,或者直接相邻、上方/下方,或者彼此相隔一个对角线空间。我正在解决一个我认为用图表更容易完成的问题,但我的输入是一个列表,我很好奇是否有办法做到这一点?

【问题讨论】:

  • 更精确(如果网格中的邻接是特征,真/假是什么意思?什么样的邻接=多少邻居?)!
  • @sascha 对此感到抱歉,真假值无关紧要,这只是一个随机示例。我只是说接下来的两件事,上/下,或彼此对角线
  • 当然可以。这甚至不难。问题出在哪里?实现get_neighbor(x,y) 函数并遍历所有节点,将边添加到邻居。不确定,你想要什么样的图表。哪个库,有向/无向等等……

标签: python list python-2.7 graph


【解决方案1】:

“转换为图表”到底是什么意思?

您可以创建一个结构来表示图形。我建议你阅读这个问题的最佳答案:Representing graphs (data structure) in Python

然后,您创建适当的连接并创建图表。

此代码假定所有子列表的长度相同,并且图是无向的。

def getConnections(input_list):
    connections = []
    directions = [(-1,-1),(0,-1),(1,-1),(1,0)]
    for i in range(0,len(input_list)):
        for j in range(0,len(input_list[0])):
            for x,y in directions:
                if (i+y >= 0 and i+y < len(input_list) and j+x >= 0 and j+x < len(input_list))
                    pair = (input_list[i][j], input_list[i+y][j+x])
                    connections.append(pair)
    return connections

myList = [[False, True , False], [True, False, False]]
connections = getConnections(myList)
myGraph = new Graph(connections, directed = false)

【讨论】:

  • 谢谢!该链接正是我正在寻找的。我主要是一名 C++ 程序员,所以在阅读您的回复之前,我不确定如何提出这个问题。非常感谢。
猜你喜欢
  • 2019-12-23
  • 2020-05-02
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
相关资源
最近更新 更多