在拓扑上将DAG分成批次

时间:2016-11-16 21:33:36

标签: python algorithm sorting graph

我正在寻找一种算法来将DAG分类为多个顶点,这样批处理中没有顶点在它们之间有边缘,并且批处理按顺序排序,使得批处理中没有顶点在排序顺序之后的批处理边缘。我似乎无法对通用拓扑排序进行有效修改,因为要发现放置顶点的​​批次,必须在所有批次之前填充所有批次。有效地:

batches = []
while vertices:
    batch = []
    for v in vertices.copy():
        for v' in v.edges:
            if v' in vertices:
                break
        else:
            batch.append(v)
            vertices.remove(v)
    batches.append(batch)

但是,此算法O(n^2)用于反向排序'线性' graph with 用于顶点查找的哈希表。

对不起pythonic伪代码。

0 个答案:

没有答案