Ticket #13362: trac_13362.patch

File trac_13362.patch, 2.5 KB (added by dcoudert, 9 years ago)

with doctests

  • sage/graphs/generic_graph.py

    # HG changeset patch
    # User dcoudert <david.coudert@inria.fr>
    # Date 1344859877 -7200
    # Node ID 89f41dec6a4b94baf9c7873d26c401c89894c290
    # Parent  a7ac8594e68b7272faad47cf7b1cc9743e8a414e
    trac #13362  -- Fix bug in function _build_flow_graph
    
    diff --git a/sage/graphs/generic_graph.py b/sage/graphs/generic_graph.py
    a b  
    65856585 
    65866586            sage: g = Graph()
    65876587            sage: g.add_edge(0,1)
    6588             sage: f = g._build_flow_graph({(0,1):1}, True)
     6588            sage: f = g._build_flow_graph({(0,1):1}, True)
     6589
     6590        The method removes zero-cost flow cycles and updates the values accordingly::
     6591
     6592            sage: g = digraphs.DeBruijn(2,3)
     6593            sage: flow = {('001','010'):1,('010','100'):1,('010','101'):1,('101','010'):1}
     6594            sage: flow_graph = g._build_flow_graph(flow,True)
     6595            sage: flow_graph.edges()
     6596            [('001', '010', 1), ('010', '100', 1)]
     6597            sage: flow = {('001','010'):2,('010','101'):3,('101','011'):2,('101','010'):1}
     6598            sage: flow_graph = g._build_flow_graph(flow,True)
     6599            sage: flow_graph.edges()
     6600            [('001', '010', 2), ('010', '101', 2), ('101', '011', 2)]
     6601
     6602        Isolated zero-cost flow cycles are also removed::
     6603
     6604            sage: g = digraphs.DeBruijn(2,3)
     6605            sage: flow = {('000','001'):1,('010','101'):1,('101','010'):1}
     6606            sage: flow_graph = g._build_flow_graph(flow,True)
     6607            sage: flow_graph.edges()
     6608            [('000', '001', 1)]
    65896609        """
    65906610 
    65916611        from sage.graphs.digraph import DiGraph
     
    66216641                        if l == 0:
    66226642                            g.delete_edge(sp[i],sp[i+1])
    66236643                        else:
    6624                             g.set_edge_label(l)
     6644                            g.set_edge_label(sp[i],sp[i+1],l)
    66256645 
    66266646        # if integer is set, round values and deletes zeroes
    66276647        if integer:
     
    66296649                if l<.5:
    66306650                    g.delete_edge(u,v)
    66316651                else:
    6632                     g.set_edge_label(u,v, round(l))
    6633  
    6634         # returning a graph with the same embedding, the corersponding name, etc ...
     6652                    g.set_edge_label(u,v, int(round(l)))
     6653 
     6654        # returning a graph with the same embedding, the corresponding name, etc ...
    66356655        h = self.subgraph(edges=[])
    66366656        h.delete_vertices([v for v in self if (v not in g) or g.degree(v)==0])
    66376657        h.add_edges(g.edges())