Skip to content

Commit 3513dc4

Browse files
committed
Fix "NotImplementedError: an immutable graph does not change name"
1 parent 94baf41 commit 3513dc4

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/sage/graphs/generic_graph.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8405,6 +8405,9 @@ def longest_cycle(self, induced=False, use_edge_labels=False,
84058405
True
84068406
sage: D.longest_cycle(induced=False, use_edge_labels=True, immutable=False)[1].is_immutable()
84078407
False
8408+
sage: # check that https://houseofgraphs.org/graphs/752 has circumference 6:
8409+
sage: Graph('EJ~w', immutable=True).longest_cycle().order()
8410+
6
84088411
"""
84098412
self._scream_if_not_simple()
84108413
G = self
@@ -8560,7 +8563,7 @@ def F(e):
85608563
hh = h.subgraph(vertices=c)
85618564
if total_weight(hh) > best_w:
85628565
best = hh
8563-
best.name(name)
8566+
best._name = name
85648567
best_w = total_weight(best)
85658568

85668569
# Add subtour elimination constraints
@@ -9299,7 +9302,7 @@ def hamiltonian_path(self, s=None, t=None, use_edge_labels=False,
92999302
return (0, None) if use_edge_labels else None
93009303

93019304
tsp.delete_vertices(extra_vertices)
9302-
tsp.name("Hamiltonian path from {}".format(self.name()))
9305+
tsp._name = "Hamiltonian path from {}".format(self.name())
93039306
if immutable:
93049307
tsp = tsp.copy(immutable=True)
93059308

@@ -9574,7 +9577,7 @@ def weight(label):
95749577
(vv, uu, self.edge_label(vv, uu))]
95759578
answer = self.subgraph(edges=edges, immutable=self.is_immutable())
95769579
answer.set_pos(self.get_pos())
9577-
answer.name("TSP from "+self.name())
9580+
answer._name = "TSP from "+self.name()
95789581
return answer
95799582
else:
95809583
if self.allows_multiple_edges() and len(self.edge_label(uu, vv)) > 1:
@@ -9584,7 +9587,7 @@ def weight(label):
95849587
edges = self.edges(sort=True, key=weight)[:2]
95859588
answer = self.subgraph(edges=edges, immutable=self.is_immutable())
95869589
answer.set_pos(self.get_pos())
9587-
answer.name("TSP from " + self.name())
9590+
answer._name = "TSP from " + self.name()
95889591
return answer
95899592

95909593
raise EmptySetError("the given graph is not Hamiltonian")
@@ -9733,7 +9736,7 @@ def weight(label):
97339736
# We can now return the TSP !
97349737
answer = self.subgraph(edges=h.edges(sort=False), immutable=self.is_immutable())
97359738
answer.set_pos(self.get_pos())
9736-
answer.name("TSP from "+g.name())
9739+
answer._name = "TSP from "+g.name()
97379740
return answer
97389741

97399742
#################################################
@@ -9805,7 +9808,7 @@ def weight(label):
98059808
f_val = p.get_values(f, convert=bool, tolerance=integrality_tolerance)
98069809
tsp.add_vertices(g.vertex_iterator())
98079810
tsp.set_pos(g.get_pos())
9808-
tsp.name("TSP from " + g.name())
9811+
tsp._name= "TSP from " + g.name()
98099812
if g.is_directed():
98109813
tsp.add_edges((u, v, l) for u, v, l in g.edge_iterator() if f_val[u, v] == 1)
98119814
else:
@@ -24891,7 +24894,7 @@ def is_hamiltonian(self, solver=None, constraint_generation=None,
2489124894

2489224895
TESTS::
2489324896

24894-
sage: g = graphs.ChvatalGraph()
24897+
sage: g = graphs.ChvatalGraph().copy(immutable=True)
2489524898
sage: g.is_hamiltonian() # needs sage.numerical.mip
2489624899
True
2489724900

0 commit comments

Comments
 (0)