将图形放置在二维数组上

Placing a graph on a 2d array

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

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

这是我的节点的简化版本class。这些节点以树状结构连接——没有循环连接。我将如何转像

这样的图表

a-b /f /h
\c-d-e-g

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

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

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