예제 #1
0
def main():
    g = Graph()
    r = Vertex(g)
    r._id = 'root'
    A = Vertex(g)
    A._id = 'A'
    B = Vertex(g)
    B._id = 'B'
    C = Vertex(g)
    C._id = 'C'
    D = Vertex(g)
    D._id = 'D'
    E = Vertex(g)
    E._id = 'E'
    F = Vertex(g)
    F._id = 'F'
    G = Vertex(g)
    G._id = 'G'
    end = Vertex(g)
    end._id = 'end'

    g.add_edge(r, A)
    g.add_edge(r, end)

    g.add_edge(A, B)
    g.add_edge(A, C)
    g.add_edge(B, C)
    g.add_edge(C, D)
    g.add_edge(C, E)
    g.add_edge(D, F)
    g.add_edge(E, F)
    g.add_edge(F, B)
    g.add_edge(F, G)
    g.add_edge(G, end)
    dt = DominatorTree(r)
    assert (r, end) in dt.e
    assert (r, A) in dt.e
    assert (A, B) in dt.e
    assert (A, C) in dt.e
    assert (A, C) in dt.e
    assert (C, D) in dt.e
    assert (C, E) in dt.e
    assert (C, F) in dt.e
    assert (F, G) in dt.e
    g.entry = r