Ticket #7634: trac_7634-switchover.patch
File trac_7634-switchover.patch, 15.7 KB (added by , 13 years ago) |
---|
-
sage/categories/examples/finite_semigroups.py
# HG changeset patch # User Robert Miller <rlm@rlmiller.org> # Date 1245326234 25200 # Node ID bab4423082321b85db61bc0e17f6f068d7787c06 # Parent afe90cf65c0ebc94601de63ab6b1c44e8a29c872 Patch to switch the default implementation to c_graphs diff -r afe90cf65c0e -r bab442308232 sage/categories/examples/finite_semigroups.py
a b 73 73 sage: S = FiniteSemigroups().example(alphabet = ('a','b','c')) 74 74 sage: S.cayley_graph(side="left", simple=True).plot() 75 75 sage: S.j_transversal_of_idempotents() 76 [' cab', 'ca', 'ab', 'cb', 'a', 'c', 'b']76 ['acb', 'ac', 'ab', 'bc', 'a', 'c', 'b'] 77 77 78 78 We conclude by running systematic tests on this semigroup:: 79 79 -
sage/categories/finite_semigroups.py
diff -r afe90cf65c0e -r bab442308232 sage/categories/finite_semigroups.py
a b 261 261 262 262 sage: S = FiniteSemigroups().example(alphabet=('a','b', 'c')) 263 263 sage: S.j_classes() 264 [[' cab', 'acb', 'bac', 'cba', 'bca', 'abc'], ['ca', 'ac'],265 ['ab', 'ba'], [' cb', 'bc'], ['a'], ['c'], ['b']]264 [['acb', 'cab', 'bca', 'abc', 'bac', 'cba'], ['ac', 'ca'], 265 ['ab', 'ba'], ['bc', 'cb'], ['a'], ['c'], ['b']] 266 266 267 267 """ 268 268 return self.cayley_graph(side="twosided", simple=True).strongly_connected_components() … … 295 295 296 296 sage: S = FiniteSemigroups().example(alphabet=('a','b', 'c')) 297 297 sage: sorted(S.j_transversal_of_idempotents()) 298 ['a', 'ab', ' b', 'c', 'ca', 'cab', 'cb']298 ['a', 'ab', 'ac', 'acb', 'b', 'bc', 'c'] 299 299 """ 300 300 def first_idempotent(l): 301 301 for x in l: -
sage/combinat/posets/posets.py
diff -r afe90cf65c0e -r bab442308232 sage/combinat/posets/posets.py
a b 951 951 952 952 sage: [(v,P.rank(v)) for v in P] 953 953 [(1234, 0), 954 ( 2134, 1),954 (1243, 1), 955 955 ... 956 (4 231, 5),956 (4312, 5), 957 957 (4321, 6)] 958 958 """ 959 959 if element is None: -
sage/combinat/yang_baxter_graph.py
diff -r afe90cf65c0e -r bab442308232 sage/combinat/yang_baxter_graph.py
a b 258 258 sage: from sage.combinat.yang_baxter_graph import SwapIncreasingOperator 259 259 sage: ops = [SwapIncreasingOperator(i) for i in range(4)] 260 260 sage: Y = YangBaxterGraph(root=(1,0,2,1,0), operators=ops) 261 sage: list(Y.__iter__())262 [( 2, 1, 1, 0, 0), (1, 0, 2, 1, 0), (2, 1, 0, 1, 0), (1, 2, 1, 0, 0), (1, 2, 0, 1, 0)]261 sage: uniq(Y.__iter__()) 262 [(1, 0, 2, 1, 0), (1, 2, 0, 1, 0), (1, 2, 1, 0, 0), (2, 1, 0, 1, 0), (2, 1, 1, 0, 0)] 263 263 """ 264 264 return self._digraph.vertex_iterator() 265 265 -
sage/graphs/base/sparse_graph.pyx
diff -r afe90cf65c0e -r bab442308232 sage/graphs/base/sparse_graph.pyx
a b 1489 1489 cdef int l_int = check_edge_label(l, self.edge_labels) 1490 1490 if l_int not in self.edge_labels: 1491 1491 return 1492 if l_int == 0: 1493 l_int = self._cg.arc_label(u_int, v_int) 1492 1494 if directed: 1493 1495 self._cg.del_arc_label(u_int, v_int, l_int) 1494 1496 self._cg_rev.del_arc_label(v_int, u_int, l_int) … … 1510 1512 sage: D.add_edges([(0,1,1), (2,3,2), (4,5,3), (5,6,2)], False) 1511 1513 sage: list(D.iterator_edges(range(9), True)) 1512 1514 [(0, 1, 1), (2, 3, 2), (4, 5, 3), (5, 6, 2)] 1513 sage: D.del_edge(0,1,None,True) 1515 sage: D.del_edge(0,1,None,True) # "None" is equivalent to not providing a label 1514 1516 sage: list(D.iterator_edges(range(9), True)) 1515 [( 0, 1, 1), (2, 3, 2), (4, 5, 3), (5, 6, 2)]1516 sage: D.get_edge_label( 1,0)1517 11517 [(2, 3, 2), (4, 5, 3), (5, 6, 2)] 1518 sage: D.get_edge_label(3,2) 1519 2 1518 1520 1519 1521 """ 1520 1522 cdef int l_int -
sage/graphs/graph.py
diff -r afe90cf65c0e -r bab442308232 sage/graphs/graph.py
a b 793 793 794 794 ### Formats 795 795 796 def copy(self, implementation=' networkx', sparse=None):796 def copy(self, implementation='c_graph', sparse=None): 797 797 """ 798 798 Creates a copy of the graph. 799 799 … … 2250 2250 sage: g=graphs.PetersenGraph() 2251 2251 sage: o=g.eulerian_orientation() 2252 2252 sage: o.in_degree() 2253 [2, 2, 2, 2, 1, 2, 1, 1, 1, 1]2253 [2, 2, 2, 2, 2, 1, 1, 1, 1, 1] 2254 2254 sage: o.out_degree() 2255 [1, 1, 1, 1, 2, 1, 2, 2, 2, 2]2255 [1, 1, 1, 1, 1, 2, 2, 2, 2, 2] 2256 2256 """ 2257 2257 from copy import copy 2258 2258 g=copy(self) … … 2548 2548 2549 2549 sage: g = graphs.PetersenGraph() 2550 2550 sage: (g.is_planar(kuratowski=True))[1].adjacency_matrix() 2551 [0 1 0 0 0 1 0 0 0 0] 2552 [1 0 1 0 0 0 1 0 0 0] 2553 [0 1 0 1 0 0 0 0 0 0] 2554 [0 0 1 0 1 0 0 0 1 0] 2555 [0 0 0 1 0 0 0 0 0 1] 2556 [1 0 0 0 0 0 0 1 1 0] 2557 [0 1 0 0 0 0 0 0 1 1] 2558 [0 0 0 0 0 1 0 0 0 1] 2559 [0 0 0 1 0 1 1 0 0 0] 2560 [0 0 0 0 1 0 1 1 0 0] 2551 [0 1 0 0 0 1 0 0 0] 2552 [1 0 1 0 0 0 1 0 0] 2553 [0 1 0 1 0 0 0 1 0] 2554 [0 0 1 0 0 0 0 0 1] 2555 [0 0 0 0 0 0 1 1 0] 2556 [1 0 0 0 0 0 0 1 1] 2557 [0 1 0 0 1 0 0 0 1] 2558 [0 0 1 0 1 1 0 0 0] 2559 [0 0 0 1 0 1 1 0 0] 2561 2560 2562 2561 :: 2563 2562 … … 5219 5218 sage: G = Graph() 5220 5219 sage: G.add_edge((1,2), 'label') 5221 5220 sage: G.edges() 5222 [( (1, 2), 'label', None)]5221 [('label', (1, 2), None)] 5223 5222 5224 5223 """ 5225 5224 if label is None: … … 5270 5269 5271 5270 EXAMPLES:: 5272 5271 5273 sage: G = graphs.CompleteGraph(19) 5272 sage: G = graphs.CompleteGraph(19).copy(implementation='c_graph') 5274 5273 sage: G.size() 5275 5274 171 5276 5275 sage: G.delete_edge( 1, 2 ) … … 5282 5281 Note that NetworkX accidentally deletes these edges, even though the 5283 5282 labels do not match up:: 5284 5283 5285 sage: G.delete_edge( 9, 10, 'label' ) 5286 sage: G.delete_edge( (11, 12, 'label') ) 5287 sage: G.delete_edges( [ (13, 14, 'label') ] ) 5288 sage: G.size() 5284 sage: N = graphs.CompleteGraph(19).copy(implementation='networkx') 5285 sage: N.size() 5286 171 5287 sage: N.delete_edge( 1, 2 ) 5288 sage: N.delete_edge( (3, 4) ) 5289 sage: N.delete_edges( [ (5, 6), (7, 8) ] ) 5290 sage: N.size() 5291 167 5292 sage: N.delete_edge( 9, 10, 'label' ) 5293 sage: N.delete_edge( (11, 12, 'label') ) 5294 sage: N.delete_edges( [ (13, 14, 'label') ] ) 5295 sage: N.size() 5289 5296 164 5290 sage: G.has_edge( (11, 12) )5297 sage: N.has_edge( (11, 12) ) 5291 5298 False 5292 5299 5293 5300 However, CGraph backends handle things properly:: 5294 5301 5295 sage: G = graphs.CompleteGraph(19).copy(implementation='c_graph')5296 sage: G.size()5297 1715298 sage: G.delete_edge( 1, 2 )5299 sage: G.delete_edge( (3, 4) )5300 sage: G.delete_edges( [ (5, 6), (7, 8) ] )5301 5302 sage: G.delete_edge( 9, 10, 'label' ) 5302 5303 sage: G.delete_edge( (11, 12, 'label') ) 5303 5304 sage: G.delete_edges( [ (13, 14, 'label') ] ) … … 5306 5307 5307 5308 :: 5308 5309 5309 sage: D = graphs.CompleteGraph(19).to_directed(sparse=True) 5310 sage: C = graphs.CompleteGraph(19).to_directed(sparse=True) 5311 sage: C.size() 5312 342 5313 sage: C.delete_edge( 1, 2 ) 5314 sage: C.delete_edge( (3, 4) ) 5315 sage: C.delete_edges( [ (5, 6), (7, 8) ] ) 5316 5317 Again, NetworkX deleting edges when it shouldn't:: 5318 5319 sage: D = graphs.CompleteGraph(19).to_directed(sparse=True, implementation='networkx') 5310 5320 sage: D.size() 5311 5321 342 5312 5322 sage: D.delete_edge( 1, 2 ) 5313 5323 sage: D.delete_edge( (3, 4) ) 5314 5324 sage: D.delete_edges( [ (5, 6), (7, 8) ] ) 5315 sage: C = D.copy(implementation='c_graph')5316 5317 Again, NetworkX deleting edges when it shouldn't::5318 5319 5325 sage: D.delete_edge( 9, 10, 'label' ) 5320 5326 sage: D.delete_edge( (11, 12, 'label') ) 5321 5327 sage: D.delete_edges( [ (13, 14, 'label') ] ) … … 6042 6048 2 6043 6049 ... 6044 6050 2 6045 36051 4 6046 6052 sage: for i in G.degree_iterator(labels=True): 6047 6053 ... print i 6048 6054 ((0, 1), 3) … … 6050 6056 ((0, 0), 2) 6051 6057 ... 6052 6058 ((0, 3), 2) 6053 (( 0, 2), 3)6059 ((1, 1), 4) 6054 6060 6055 6061 :: 6056 6062 … … 6271 6277 sage: C = graphs.CubeGraph(2) 6272 6278 sage: S = C.subgraph(edge_property=(lambda e: e[0][0] == e[1][0])) 6273 6279 sage: C.edges() 6274 [('00', '01', None), (' 10', '00', None), ('11', '01', None), ('11', '10', None)]6280 [('00', '01', None), ('00', '10', None), ('01', '11', None), ('10', '11', None)] 6275 6281 sage: S.edges() 6276 [('00', '01', None), ('1 1', '10', None)]6282 [('00', '01', None), ('10', '11', None)] 6277 6283 6278 6284 6279 6285 The algorithm is not specified, then a reasonable choice is made for speed. … … 6407 6413 sage: C = graphs.CubeGraph(2) 6408 6414 sage: S = C._subgraph_by_adding(vertices=C.vertices(), edge_property=(lambda e: e[0][0] == e[1][0])) 6409 6415 sage: C.edges() 6410 [('00', '01', None), (' 10', '00', None), ('11', '01', None), ('11', '10', None)]6416 [('00', '01', None), ('00', '10', None), ('01', '11', None), ('10', '11', None)] 6411 6417 sage: S.edges() 6412 [('00', '01', None), ('1 1', '10', None)]6418 [('00', '01', None), ('10', '11', None)] 6413 6419 6414 6420 TESTS: Properties of the graph are preserved. 6415 6421 … … 6552 6558 sage: C = graphs.CubeGraph(2) 6553 6559 sage: S = C._subgraph_by_deleting(vertices=C.vertices(), edge_property=(lambda e: e[0][0] == e[1][0])) 6554 6560 sage: C.edges() 6555 [('00', '01', None), (' 10', '00', None), ('11', '01', None), ('11', '10', None)]6561 [('00', '01', None), ('00', '10', None), ('01', '11', None), ('10', '11', None)] 6556 6562 sage: S.edges() 6557 [('00', '01', None), ('1 1', '10', None)]6563 [('00', '01', None), ('10', '11', None)] 6558 6564 6559 6565 TESTS: Properties of the graph are preserved. 6560 6566 … … 11420 11426 _directed = False 11421 11427 11422 11428 def __init__(self, data=None, pos=None, loops=None, format=None, 11423 boundary=[], weighted=None, implementation=' networkx',11429 boundary=[], weighted=None, implementation='c_graph', 11424 11430 sparse=True, vertex_labels=True, **kwds): 11425 11431 """ 11426 11432 TESTS:: … … 12682 12688 12683 12689 ### Constructors 12684 12690 12685 def to_directed(self, implementation=' networkx', sparse=None):12691 def to_directed(self, implementation='c_graph', sparse=None): 12686 12692 """ 12687 12693 Returns a directed version of the graph. A single edge becomes two 12688 12694 edges, one in each direction. … … 12693 12699 Petersen graph: Digraph on 10 vertices 12694 12700 """ 12695 12701 if sparse is None: 12696 from sage.graphs.base. sparse_graph import SparseGraphBackend12697 sparse = isinstance(self._backend, SparseGraphBackend)12702 from sage.graphs.base.dense_graph import DenseGraphBackend 12703 sparse = (not isinstance(self._backend, DenseGraphBackend)) 12698 12704 D = DiGraph(name=self.name(), pos=self._pos, boundary=self._boundary, 12699 12705 multiedges=self.allows_multiple_edges(), 12700 12706 implementation=implementation, sparse=sparse) … … 13209 13215 sage: for v in sorted(X.iterkeys()): 13210 13216 ... print v, X[v] 13211 13217 (0, 0) [[(0, 1), (0, 0)], [(1, 0), (0, 0)]] 13212 (0, 1) [[(0, 1), (0, 0)], [(0, 1), ( 0, 2)], [(0, 1), (1, 1)]]13218 (0, 1) [[(0, 1), (0, 0)], [(0, 1), (1, 1)], [(0, 1), (0, 2)]] 13213 13219 (0, 2) [[(0, 1), (0, 2)], [(1, 2), (0, 2)]] 13214 13220 (1, 0) [[(1, 0), (0, 0)], [(1, 0), (1, 1)]] 13215 13221 (1, 1) [[(0, 1), (1, 1)], [(1, 2), (1, 1)], [(1, 0), (1, 1)]] 13216 (1, 2) [[(1, 2), ( 0, 2)], [(1, 2), (1, 1)]]13222 (1, 2) [[(1, 2), (1, 1)], [(1, 2), (0, 2)]] 13217 13223 sage: F.cliques_containing_vertex(vertices=[(0, 1), (1, 2)]) 13218 [[[(0, 1), (0, 0)], [(0, 1), ( 0, 2)], [(0, 1), (1, 1)]], [[(1, 2), (0, 2)], [(1, 2), (1, 1)]]]13224 [[[(0, 1), (0, 0)], [(0, 1), (1, 1)], [(0, 1), (0, 2)]], [[(1, 2), (1, 1)], [(1, 2), (0, 2)]]] 13219 13225 sage: G = Graph({0:[1,2,3], 1:[2], 3:[0,1]}) 13220 13226 sage: G.show(figsize=[2,2]) 13221 13227 sage: G.cliques_containing_vertex() … … 13738 13744 _directed = True 13739 13745 13740 13746 def __init__(self, data=None, pos=None, loops=None, format=None, 13741 boundary=[], weighted=None, implementation=' networkx',13747 boundary=[], weighted=None, implementation='c_graph', 13742 13748 sparse=True, vertex_labels=True, **kwds): 13743 13749 """ 13744 13750 TESTS:: … … 14153 14159 from copy import copy 14154 14160 return copy(self) 14155 14161 14156 def to_undirected(self, implementation=' networkx', sparse=None):14162 def to_undirected(self, implementation='c_graph', sparse=None): 14157 14163 """ 14158 14164 Returns an undirected version of the graph. Every directed edge 14159 14165 becomes an edge. … … 14168 14174 [(0, 1), (0, 2)] 14169 14175 """ 14170 14176 if sparse is None: 14171 from sage.graphs.base. sparse_graph import SparseGraphBackend14172 sparse = isinstance(self._backend, SparseGraphBackend)14177 from sage.graphs.base.dense_graph import DenseGraphBackend 14178 sparse = (not isinstance(self._backend, DenseGraphBackend)) 14173 14179 G = Graph(name=self.name(), pos=self._pos, boundary=self._boundary, 14174 14180 multiedges=self.allows_multiple_edges(), loops=self.allows_loops(), 14175 14181 implementation=implementation, sparse=sparse) -
sage/homology/simplicial_complex.py
diff -r afe90cf65c0e -r bab442308232 sage/homology/simplicial_complex.py
a b 490 490 sage: Simplex([0,1,2]) == Simplex(['a','b','c']) 491 491 False 492 492 """ 493 if self.__set == other.__set: 493 if not isinstance(other, Simplex) or self.__set != other.__set: 494 return -1 495 else: 494 496 return 0 495 else:496 return -1497 497 498 498 def __hash__(self): 499 499 """ … … 2008 2008 sage: P = SimplicialComplex(3, [[0, 1], [1,2], [2,3]]).face_poset(); P 2009 2009 Finite poset containing 7 elements 2010 2010 sage: P.list() 2011 [(3,), (2,), (2, 3), (1,), (0,), ( 0, 1), (1, 2)]2011 [(3,), (2,), (2, 3), (1,), (0,), (1, 2), (0, 1)] 2012 2012 """ 2013 2013 from sage.combinat.posets.posets import Poset 2014 2014 covers = {}