将图形放置在二维数组上
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]]
数组没有大小限制,但生成的数组应该有所压缩。如果需要,可以创建额外的节点用作填充。
这与要求将迷宫转换为图形的问题所要求的相反。
- 计算出方向的优先顺序 (N,E,S,W)
- 对于超过 4 个连接的任何节点:
- 添加新的'connection'节点
- 当溢出节点超过4个连接时
- 如果节点未被解析并且不是刚刚创建的节点
- 与溢出节点断开连接
- 连接到新节点
- 将起始节点置于 0,0
- 将当前节点设为最后一个节点
- 对于每个连接节点
- 如果方向更喜欢空?
Y:将节点放在 space 中,转到 4
- 按顺序重复所有其他首选项
- 如果所有连接都已满,则全部撤消 return 错误
我有一个由节点和连接组成的图。每个节点都有一个它连接到的所有其他节点的列表,如对象:
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]]
数组没有大小限制,但生成的数组应该有所压缩。如果需要,可以创建额外的节点用作填充。
这与要求将迷宫转换为图形的问题所要求的相反。
- 计算出方向的优先顺序 (N,E,S,W)
- 对于超过 4 个连接的任何节点:
- 添加新的'connection'节点
- 当溢出节点超过4个连接时
- 如果节点未被解析并且不是刚刚创建的节点
- 与溢出节点断开连接
- 连接到新节点
- 将起始节点置于 0,0
- 将当前节点设为最后一个节点
- 对于每个连接节点
- 如果方向更喜欢空? Y:将节点放在 space 中,转到 4
- 按顺序重复所有其他首选项
- 如果所有连接都已满,则全部撤消 return 错误