From 36bf3b9d214ff24533199a0818a98f5ffe48f11e Mon Sep 17 00:00:00 2001 From: dcoudert Date: Fri, 27 Sep 2024 10:35:53 +0200 Subject: [PATCH] fix issue 38713 --- src/sage/graphs/generic_graph.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/sage/graphs/generic_graph.py b/src/sage/graphs/generic_graph.py index 6ed8446ae1c..a43a36057fd 100644 --- a/src/sage/graphs/generic_graph.py +++ b/src/sage/graphs/generic_graph.py @@ -7512,7 +7512,7 @@ def edge_cut(self, s, t, value_only=True, use_edge_labels=False, vertices=False, sage: g.edge_cut(1, 2, value_only=True, algorithm='LP') # needs sage.numerical.mip 3 - :issue:`12797`:: + Check that :issue:`12797` and :issue:`38713` are fixed:: sage: G = Graph([(0, 3, 1), (0, 4, 1), (1, 2, 1), (2, 3, 1), (2, 4, 1)]) sage: G.edge_cut(0, 1, value_only=False, use_edge_labels=True) @@ -7521,7 +7521,7 @@ def edge_cut(self, s, t, value_only=True, use_edge_labels=False, vertices=False, sage: G.edge_cut(0, 1, value_only=False, use_edge_labels=True) [1, [(2, 1, 1)]] sage: G.edge_cut(0, 1, value_only=False, use_edge_labels=True, algorithm='LP') # needs sage.numerical.mip - (1, [(2, 1)]) + (1, [(2, 1, 1)]) """ self._scream_if_not_simple(allow_loops=True) if vertices: @@ -7574,9 +7574,10 @@ def weight(x): # frozensets otherwise if g.is_directed(): def good_edge(e): - return e + return (e[0], e[1]) else: - good_edge = frozenset + def good_edge(e): + return frozenset((e[0], e[1])) # Some vertices belong to part 1, others to part 0 p.add_constraint(v[s], min=0, max=0) @@ -7589,7 +7590,7 @@ def good_edge(e): # Adjacent vertices can belong to different parts only if the # edge that connects them is part of the cut - for x, y in g.edge_iterator(labels=None): + for x, y in g.edge_iterator(labels=False): p.add_constraint(v[x] + b[good_edge((x, y))] - v[y], min=0) else: @@ -7597,7 +7598,7 @@ def good_edge(e): p.set_objective(p.sum(weight(w) * b[good_edge((x, y))] for x, y, w in g.edge_iterator())) # Adjacent vertices can belong to different parts only if the # edge that connects them is part of the cut - for x, y in g.edge_iterator(labels=None): + for x, y in g.edge_iterator(labels=False): p.add_constraint(v[x] + b[good_edge((x, y))] - v[y], min=0) p.add_constraint(v[y] + b[good_edge((x, y))] - v[x], min=0) @@ -7612,7 +7613,7 @@ def good_edge(e): return obj answer = [obj] - answer.append([e for e in g.edge_iterator(labels=False) if b[good_edge(e)]]) + answer.append([e for e in g.edge_iterator(labels=True) if b[good_edge(e)]]) if vertices: v = p.get_values(v, convert=bool, tolerance=integrality_tolerance)