【发布时间】:2016-09-11 18:33:38
【问题描述】:
我有一个数据集,它是有向无环图 (DAG) 的特例。我的 DAG 中的节点有 0 条或 1 条弧。所有弧的权重均等(也就是说,弧中包含的唯一信息是它指向的节点,没有“距离”或“成本”或“权重”)。
我的用户将以半随机顺序输入节点,期望保留无弧节点的顺序,但所有弧都会在指向它们的节点之前排序(因此子优先排序)。
这是一个代表我的数据的简化类:
class Node:
def __init__(self, name, arc=None):
self.name = str(name)
self.arc = str(arc)
(注意self.arc是指向节点的字符串表示,而不是对象本身)
所以,给定这样的输入:
input = [Node('A'),
Node('B'),
Node('C'),
Node('Z', 'Y'),
Node('X', 'W'),
Node('Y', 'X'),
Node('W')]
你会得到这样的输出,最好使用最少的循环和中间数据结构:
output = [Node('A'),
Node('B'),
Node('C'),
Node('W'),
Node('X', 'W'),
Node('Y', 'X'),
Node('Z', 'Y')]
【问题讨论】:
标签: python algorithm python-3.x directed-acyclic-graphs topological-sort