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]))
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]))
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])
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])
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)
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)
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]))
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)),[])
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]))
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)), [])