在2d数组上放置图形

时间:2015-01-22 22:37:41

标签: python graph

我有一个由节点和连接组成的图表。每个节点都有一个与其连接的每个其他节点的列表,如对象:

class Node():
  def __init__(self):
    self.connections = []
  def connect(self, node):
    self.connections.append(node)
    node.connections.append(self)

这是我的节点类的简化版本。这些节点以树状结构连接 - 没有环路连接。我将如何转换像

这样的图表

a-b / f / h
\ C-d-E-G

进入像

这样的二维数组
[[a,b,f,h],
 [c,d,e,g]]

数组没有大小限制,但生成的数组应该有点浓缩。如果需要,可以创建额外的节点作为填充 这与要求将迷宫转换成图形的问题相反。

1 个答案:

答案 0 :(得分:0)

  1. 计算出方向(N,E,S,W)的优先顺序
  2. 对于任何超过4个连接的节点:
    1. 添加新的“连接”节点
    2. 虽然溢出节点有超过4个连接
    3. 如果节点未解析而不是仅创建节点
    4. 断开与溢出节点的连接
    5. 连接到新节点
  3. 将起始节点置于0,0
  4. 将当前节点设置为最后一个
  5. 对于每个连接节点
    1. 如果方向更喜欢空? Y:将节点放在空间中,转到4
    2. 按顺序重复所有其他首选项
    3. 如果所有连接都已满,则撤消全部并返回错误