在表中表示图并给出下一个访问节点的访问节点

时间:2016-06-06 09:55:00

标签: database algorithm graph graph-algorithm graph-traversal

假设我有一个包含N个节点111,222,...,nnn的图表,我的图表如下表所示

NodeID  |   PredecessorID
222         111
333         111
555         222
555         333

等等。

给出已访问的M个节点的列表,如何找到下一个要访问的所有节点? 接下来要访问的节点是已访问其所有前任的节点。

1 个答案:

答案 0 :(得分:0)

如果您的列表M包含所有访问过的节点,而不仅仅是其中的一部分,您可以这样做:

foreach n in N:
    visite = True
    if n is not marked:
        foreach predecessor (pn) of n:
            visite = visite and (is pn marked)

    if visite = True:
        add n to visitable nodes

在最坏的情况下,predecessors of n的数量是N(完整图),因此运行时复杂度为O(N ^ 2)