Пример #1
0
def test_barbell():
    G=nx.barbell_graph(8,4)
    G.add_path([7,20,21,22])
    G.add_cycle([22,23,24,25])
    pts=set(biconnected.articulation_points(G))
    assert_equal(pts,set([7,8,9,10,11,12,20,21,22]))

    answer = [set([12, 13, 14, 15, 16, 17, 18, 19]),
                set([0, 1, 2, 3, 4, 5, 6, 7]),
                set([22, 23, 24, 25]),
                set([11, 12]),
                set([10, 11]),
                set([9, 10]),
                set([8, 9]),
                set([7, 8]),
                set([21, 22]),
                set([20, 21]),
                set([7, 20])]  
    bcc=list(biconnected.biconnected_components(G))
    bcc.sort(key=len, reverse=True)
    assert_equal(bcc,answer)

    G.add_edge(2,17)
    pts=set(biconnected.articulation_points(G))
    assert_equal(pts,set([7,20,21,22]))
Пример #2
0
def test_barbell():
    G = nx.barbell_graph(8, 4)
    G.add_path([7, 20, 21, 22])
    G.add_cycle([22, 23, 24, 25])
    pts = set(biconnected.articulation_points(G))
    assert_equal(pts, set([7, 8, 9, 10, 11, 12, 20, 21, 22]))

    answer = [
        set([12, 13, 14, 15, 16, 17, 18, 19]),
        set([0, 1, 2, 3, 4, 5, 6, 7]),
        set([22, 23, 24, 25]),
        set([11, 12]),
        set([10, 11]),
        set([9, 10]),
        set([8, 9]),
        set([7, 8]),
        set([21, 22]),
        set([20, 21]),
        set([7, 20])
    ]
    bcc = list(biconnected.biconnected_components(G))
    bcc.sort(key=len, reverse=True)
    assert_equal(bcc, answer)

    G.add_edge(2, 17)
    pts = set(biconnected.articulation_points(G))
    assert_equal(pts, set([7, 20, 21, 22]))
Пример #3
0
def test_biconnected_karate():
    K = nx.karate_club_graph()
    answer = [set([0, 1, 2, 3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19,
                20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]),
                set([0, 4, 5, 6, 10, 16]),
                set([0, 11])]
    bcc = list(biconnected.biconnected_components(K))
    bcc.sort(key=len, reverse=True)
    assert_true(list(biconnected.biconnected_components(K)) == answer)
    assert_equal(list(biconnected.articulation_points(K)),[0])
Пример #4
0
def test_biconnected_karate():
    K = nx.karate_club_graph()
    answer = [
        set([
            0, 1, 2, 3, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23,
            24, 25, 26, 27, 28, 29, 30, 31, 32, 33
        ]),
        set([0, 4, 5, 6, 10, 16]),
        set([0, 11])
    ]
    bcc = list(biconnected.biconnected_components(K))
    bcc.sort(key=len, reverse=True)
    assert_true(list(biconnected.biconnected_components(K)) == answer)
    assert_equal(list(biconnected.articulation_points(K)), [0])
Пример #5
0
def test_biconnected_components1():
    # nxgraph example from
    # http://www.ibluemojo.com/school/articul_algorithm.html 
    edges=[(0,1),
           (0,5),
           (0,6),
           (0,14),
           (1,5),
           (1,6),
           (1,14),
           (2,4),
           (2,10),
           (3,4),
           (3,15),
           (4,6),
           (4,7),
           (4,10),
           (5,14),
           (6,14),
           (7,9),
           (8,9),
           (8,12),
           (8,13),
           (10,15),
           (11,12),
           (11,13),
           (12,13)]   
    G=nx.Graph(edges)
    pts = set(biconnected.articulation_points(G))
    assert_equal(pts,set([4,6,7,8,9]))
    comps = list(biconnected.biconnected_component_edges(G))
    answer = [
        [(3,4),(15,3),(10,15),(10,4),(2,10),(4,2)],
        [(13,12),(13,8),(11,13),(12,11),(8,12)],
        [(9,8)],
        [(7,9)],
        [(4,7)],
        [(6,4)],
        [(14,0),(5,1),(5,0),(14,5),(14,1),(6,14),(6,0),(1,6),(0,1)],
        ]
    assert_components_equal(comps,answer)
Пример #6
0
def test_biconnected_components1():
    # graph example from
    # http://www.ibluemojo.com/school/articul_algorithm.html
    edges = [(0, 1), (0, 5), (0, 6), (0, 14), (1, 5), (1, 6), (1, 14), (2, 4),
             (2, 10), (3, 4), (3, 15), (4, 6), (4, 7), (4, 10), (5, 14),
             (6, 14), (7, 9), (8, 9), (8, 12), (8, 13), (10, 15), (11, 12),
             (11, 13), (12, 13)]
    G = nx.Graph(edges)
    pts = set(biconnected.articulation_points(G))
    assert_equal(pts, set([4, 6, 7, 8, 9]))
    comps = list(biconnected.biconnected_component_edges(G))
    answer = [
        [(3, 4), (15, 3), (10, 15), (10, 4), (2, 10), (4, 2)],
        [(13, 12), (13, 8), (11, 13), (12, 11), (8, 12)],
        [(9, 8)],
        [(7, 9)],
        [(4, 7)],
        [(6, 4)],
        [(14, 0), (5, 1), (5, 0), (14, 5), (14, 1), (6, 14), (6, 0), (1, 6),
         (0, 1)],
    ]
    assert_components_equal(comps, answer)
Пример #7
0
def test_articulation_points_cycle():
    G=nx.cycle_graph(3)
    G.add_cycle([1,3,4])
    pts=set(biconnected.articulation_points(G))
    assert_equal(pts,set([1]))
Пример #8
0
def test_biconnected_davis():
    D = nx.davis_southern_women_graph()
    bcc = list(biconnected.biconnected_components(D))[0]
    assert_true(set(D) == bcc) # All nodes in a giant bicomponent
    # So no articulation points
    assert_equal(list(biconnected.articulation_points(D)),[])
Пример #9
0
def test_articulation_points_cycle():
    G = nx.cycle_graph(3)
    G.add_cycle([1, 3, 4])
    pts = set(biconnected.articulation_points(G))
    assert_equal(pts, set([1]))
Пример #10
0
def test_biconnected_davis():
    D = nx.davis_southern_women_graph()
    bcc = list(biconnected.biconnected_components(D))[0]
    assert_true(set(D) == bcc)  # All nodes in a giant bicomponent
    # So no articulation points
    assert_equal(list(biconnected.articulation_points(D)), [])