Ticket #11182: trac_11182.patch
File trac_11182.patch, 11.4 KB (added by , 10 years ago) |
---|
-
sage/graphs/bipartite_graph.py
# HG changeset patch # User Robert L. Miller <rlm@rlmiller.org> # Date 1302639230 25200 # Node ID 0fd28743cd399b25b0324ffd8a91088497a518fb # Parent 461868191947707e8c6a764078c3bec7274088a6 #11181: edge labels should be unique diff -r 461868191947 -r 0fd28743cd39 sage/graphs/bipartite_graph.py
a b 591 591 sage: B.left 592 592 set([2]) 593 593 sage: B.edges() 594 [(1, 2, {}), (2, 3, {})]594 [(1, 2, None), (2, 3, None)] 595 595 sage: B.delete_vertex(3) 596 596 sage: B.right 597 597 set([1]) 598 598 sage: B.edges() 599 [(1, 2, {})]599 [(1, 2, None)] 600 600 sage: B.delete_vertex(0) 601 601 Traceback (most recent call last): 602 602 ... … … 659 659 sage: B.right 660 660 set([1]) 661 661 sage: B.edges() 662 [(1, 2, {})]662 [(1, 2, None)] 663 663 sage: B.delete_vertices([0]) 664 664 Traceback (most recent call last): 665 665 ... … … 964 964 ... if b != b2: 965 965 ... print "Load/save failed for code with edges:" 966 966 ... print b.edges() 967 ... print b2.edges() 967 968 ... except: 968 969 ... print "Exception encountered for graph of order "+ str(order) 969 970 ... print "with edges: " -
sage/graphs/digraph.py
diff -r 461868191947 -r 0fd28743cd39 sage/graphs/digraph.py
a b 461 461 format = 'NX' 462 462 463 463 # At this point, format has been set. 464 465 # adjust for empty dicts instead of None in NetworkX default edge labels 466 kwds.setdefault('convert_empty_dict_labels_to_None', (format == 'NX')) 467 464 468 verts = None 465 469 466 470 if format == 'dig6': … … 706 710 if f(uu,vv): 707 711 self.add_edge(uu,vv) 708 712 elif format == 'dict_of_dicts': 709 for u in data: 710 for v in data[u]: 711 if multiedges: 712 self.add_edges([(u,v,l) for l in data[u][v]]) 713 else: 714 self.add_edge((u,v,data[u][v])) 713 if kwds.get('convert_empty_dict_labels_to_None', False): 714 for u in data: 715 for v in data[u]: 716 if multiedges: 717 self.add_edges([(u,v,l) for l in data[u][v]]) 718 else: 719 self.add_edge((u,v,data[u][v] if data[u][v] != {} else None)) 720 else: 721 for u in data: 722 for v in data[u]: 723 if multiedges: 724 self.add_edges([(u,v,l) for l in data[u][v]]) 725 else: 726 self.add_edge((u,v,data[u][v])) 715 727 elif format == 'dict_of_lists': 716 728 for u in data: 717 729 for v in data[u]: -
sage/graphs/generic_graph.py
diff -r 461868191947 -r 0fd28743cd39 sage/graphs/generic_graph.py
a b 2107 2107 4 2108 2108 sage: weight = lambda e: 1 / ((e[0] + 1) * (e[1] + 1)) 2109 2109 sage: g.min_spanning_tree(weight_function=weight) 2110 [(3, 4, {}), (2, 4, {}), (1, 4, {}), (0, 4, {})]2110 [(3, 4, None), (2, 4, None), (1, 4, None), (0, 4, None)] 2111 2111 sage: g = graphs.PetersenGraph() 2112 2112 sage: g.allow_multiple_edges(True) 2113 2113 sage: g.weighted(True) … … 2119 2119 2120 2120 sage: g = graphs.CompleteGraph(5) 2121 2121 sage: g.min_spanning_tree(algorithm='Prim_edge', starting_vertex=2, weight_function=weight) 2122 [(2, 4, {}), (3, 4, {}), (1, 4, {}), (0, 4, {})]2122 [(2, 4, None), (3, 4, None), (1, 4, None), (0, 4, None)] 2123 2123 sage: g.min_spanning_tree(algorithm='Prim_fringe', starting_vertex=2, weight_function=weight) 2124 2124 [(2, 4), (4, 3), (4, 1), (4, 0)] 2125 2125 """ … … 7253 7253 sage: g=graphs.CycleGraph(3) 7254 7254 sage: g.merge_vertices([0,1]) 7255 7255 sage: g.edges() 7256 [(0, 2, {})]7256 [(0, 2, None)] 7257 7257 sage: # With a Multigraph : 7258 7258 sage: g=graphs.CycleGraph(3) 7259 7259 sage: g.allow_multiple_edges(True) 7260 7260 sage: g.merge_vertices([0,1]) 7261 sage: g.edges( )7262 [(0, 2 , {}), (0, 2, {})]7261 sage: g.edges(labels=False) 7262 [(0, 2), (0, 2)] 7263 7263 sage: P=graphs.PetersenGraph() 7264 7264 sage: P.merge_vertices([5,7]) 7265 7265 sage: P.vertices() … … 7840 7840 EXAMPLES:: 7841 7841 7842 7842 sage: graphs.DodecahedralGraph().edges() 7843 [(0, 1, {}), (0, 10, {}), (0, 19, {}), (1, 2, {}), (1, 8, {}), (2, 3, {}), (2, 6, {}), (3, 4, {}), (3, 19, {}), (4, 5, {}), (4, 17, {}), (5, 6, {}), (5, 15, {}), (6, 7, {}), (7, 8, {}), (7, 14, {}), (8, 9, {}), (9, 10, {}), (9, 13, {}), (10, 11, {}), (11, 12, {}), (11, 18, {}), (12, 13, {}), (12, 16, {}), (13, 14, {}), (14, 15, {}), (15, 16, {}), (16, 17, {}), (17, 18, {}), (18, 19, {})]7843 [(0, 1, None), (0, 10, None), (0, 19, None), (1, 2, None), (1, 8, None), (2, 3, None), (2, 6, None), (3, 4, None), (3, 19, None), (4, 5, None), (4, 17, None), (5, 6, None), (5, 15, None), (6, 7, None), (7, 8, None), (7, 14, None), (8, 9, None), (9, 10, None), (9, 13, None), (10, 11, None), (11, 12, None), (11, 18, None), (12, 13, None), (12, 16, None), (13, 14, None), (14, 15, None), (15, 16, None), (16, 17, None), (17, 18, None), (18, 19, None)] 7844 7844 7845 7845 :: 7846 7846 … … 7851 7851 7852 7852 sage: D = graphs.DodecahedralGraph().to_directed() 7853 7853 sage: D.edges() 7854 [(0, 1, {}), (0, 10, {}), (0, 19, {}), (1, 0, {}), (1, 2, {}), (1, 8, {}), (2, 1, {}), (2, 3, {}), (2, 6, {}), (3, 2, {}), (3, 4, {}), (3, 19, {}), (4, 3, {}), (4, 5, {}), (4, 17, {}), (5, 4, {}), (5, 6, {}), (5, 15, {}), (6, 2, {}), (6, 5, {}), (6, 7, {}), (7, 6, {}), (7, 8, {}), (7, 14, {}), (8, 1, {}), (8, 7, {}), (8, 9, {}), (9, 8, {}), (9, 10, {}), (9, 13, {}), (10, 0, {}), (10, 9, {}), (10, 11, {}), (11, 10, {}), (11, 12, {}), (11, 18, {}), (12, 11, {}), (12, 13, {}), (12, 16, {}), (13, 9, {}), (13, 12, {}), (13, 14, {}), (14, 7, {}), (14, 13, {}), (14, 15, {}), (15, 5, {}), (15, 14, {}), (15, 16, {}), (16, 12, {}), (16, 15, {}), (16, 17, {}), (17, 4, {}), (17, 16, {}), (17, 18, {}), (18, 11, {}), (18, 17, {}), (18, 19, {}), (19, 0, {}), (19, 3, {}), (19, 18, {})]7854 [(0, 1, None), (0, 10, None), (0, 19, None), (1, 0, None), (1, 2, None), (1, 8, None), (2, 1, None), (2, 3, None), (2, 6, None), (3, 2, None), (3, 4, None), (3, 19, None), (4, 3, None), (4, 5, None), (4, 17, None), (5, 4, None), (5, 6, None), (5, 15, None), (6, 2, None), (6, 5, None), (6, 7, None), (7, 6, None), (7, 8, None), (7, 14, None), (8, 1, None), (8, 7, None), (8, 9, None), (9, 8, None), (9, 10, None), (9, 13, None), (10, 0, None), (10, 9, None), (10, 11, None), (11, 10, None), (11, 12, None), (11, 18, None), (12, 11, None), (12, 13, None), (12, 16, None), (13, 9, None), (13, 12, None), (13, 14, None), (14, 7, None), (14, 13, None), (14, 15, None), (15, 5, None), (15, 14, None), (15, 16, None), (16, 12, None), (16, 15, None), (16, 17, None), (17, 4, None), (17, 16, None), (17, 18, None), (18, 11, None), (18, 17, None), (18, 19, None), (19, 0, None), (19, 3, None), (19, 18, None)] 7855 7855 sage: D.edges(labels = False) 7856 7856 [(0, 1), (0, 10), (0, 19), (1, 0), (1, 2), (1, 8), (2, 1), (2, 3), (2, 6), (3, 2), (3, 4), (3, 19), (4, 3), (4, 5), (4, 17), (5, 4), (5, 6), (5, 15), (6, 2), (6, 5), (6, 7), (7, 6), (7, 8), (7, 14), (8, 1), (8, 7), (8, 9), (9, 8), (9, 10), (9, 13), (10, 0), (10, 9), (10, 11), (11, 10), (11, 12), (11, 18), (12, 11), (12, 13), (12, 16), (13, 9), (13, 12), (13, 14), (14, 7), (14, 13), (14, 15), (15, 5), (15, 14), (15, 16), (16, 12), (16, 15), (16, 17), (17, 4), (17, 16), (17, 18), (18, 11), (18, 17), (18, 19), (19, 0), (19, 3), (19, 18)] 7857 7857 … … 7861 7861 7862 7862 sage: G=graphs.CycleGraph(5) 7863 7863 sage: G.edges(key = lambda x: (x[1],-x[0])) 7864 [(0, 1, {}), (1, 2, {}), (2, 3, {}), (3, 4, {}), (0, 4, {})]7864 [(0, 1, None), (1, 2, None), (2, 3, None), (3, 4, None), (0, 4, None)] 7865 7865 7866 7866 We set the labels to characters and then perform a default sort 7867 7867 followed by a sort according to the labels. :: … … 7935 7935 7936 7936 sage: G = graphs.DiamondGraph() 7937 7937 sage: G.edge_boundary([0,1]) 7938 [(0, 2, {}), (1, 2, {}), (1, 3, {})]7938 [(0, 2, None), (1, 2, None), (1, 3, None)] 7939 7939 sage: G.edge_boundary([0], [0]) 7940 7940 [] 7941 7941 sage: G.edge_boundary([2], [0]) 7942 [(0, 2, {})]7942 [(0, 2, None)] 7943 7943 """ 7944 7944 vertices1 = set([v for v in vertices1 if v in self]) 7945 7945 if self._directed: -
sage/graphs/graph.py
diff -r 461868191947 -r 0fd28743cd39 sage/graphs/graph.py
a b 960 960 format = 'NX' 961 961 962 962 # At this point, format has been set. 963 964 # adjust for empty dicts instead of None in NetworkX default edge labels 965 kwds.setdefault('convert_empty_dict_labels_to_None', (format == 'NX')) 963 966 964 967 verts = None 965 968 … … 1257 1260 if f(uu,vv): 1258 1261 self.add_edge(uu,vv) 1259 1262 elif format == 'dict_of_dicts': 1260 for u in data: 1261 for v in data[u]: 1262 if hash(u) <= hash(v) or v not in data or u not in data[v]: 1263 if multiedges: 1264 self.add_edges([(u,v,l) for l in data[u][v]]) 1265 else: 1266 self.add_edge((u,v,data[u][v])) 1263 if kwds.get('convert_empty_dict_labels_to_None', False): 1264 for u in data: 1265 for v in data[u]: 1266 if hash(u) <= hash(v) or v not in data or u not in data[v]: 1267 if multiedges: 1268 self.add_edges([(u,v,l) for l in data[u][v]]) 1269 else: 1270 self.add_edge((u,v,data[u][v] if data[u][v] != {} else None)) 1271 else: 1272 for u in data: 1273 for v in data[u]: 1274 if hash(u) <= hash(v) or v not in data or u not in data[v]: 1275 if multiedges: 1276 self.add_edges([(u,v,l) for l in data[u][v]]) 1277 else: 1278 self.add_edge((u,v,data[u][v])) 1267 1279 elif format == 'dict_of_lists': 1268 1280 for u in data: 1269 1281 for v in data[u]: … … 1627 1639 1628 1640 sage: g=graphs.CycleGraph(5); 1629 1641 sage: g.eulerian_circuit() 1630 [(0, 1, {}), (1, 2, {}), (2, 3, {}), (3, 4, {}), (4, 0, {})]1642 [(0, 1, None), (1, 2, None), (2, 3, None), (3, 4, None), (4, 0, None)] 1631 1643 sage: g.eulerian_circuit(labels=False) 1632 1644 [(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)] 1633 1645 sage: g = graphs.CompleteGraph(7)