Skip to content

Commit 4441acd

Browse files
author
Release Manager
committed
Trac #32095: DiFUB algorithm fails on some random graph
{{{ sage -t --long --random-seed=4 src/sage/graphs/digraph.py ********************************************************************** File "src/sage/graphs/digraph.py", line 2475, in sage.graphs.digraph.DiGraph.? Failed example: d1 == d2 Expected: True Got: False ********************************************************************** 1 item had failures: 1 of 166 in sage.graphs.digraph.DiGraph.? [530 tests, 1 failure, 1.70 s] }}} {{{ sage: set_random_seed(4) sage: G = graphs.RandomGNP(40, 0.4).to_directed() sage: G.diameter() 3 sage: d1 = G.diameter(algorithm='DiFUB', by_weight=True) sage: d1 2.0 }}} Yet, `DiFUB` claims to be exact. URL: https://trac.sagemath.org/32095 Reported by: gh-kliem Ticket author(s): David Coudert Reviewer(s): Jonathan Kliem
2 parents ea61b79 + 1d25896 commit 4441acd

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/sage/graphs/base/boost_graph.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -2381,8 +2381,8 @@ cdef double diameter_DiFUB(BoostVecWeightedDiGraphU g_boost,
23812381
# distances respectively.
23822382
# Now order_1 and order_2 will contain order of vertices in which
23832383
# further distance computations will be done.
2384-
sorted(order_1, reverse=True)
2385-
sorted(order_2, reverse=True)
2384+
order_1 = sorted(order_1, reverse=True)
2385+
order_2 = sorted(order_2, reverse=True)
23862386

23872387
LB = max(LB, LB_1, LB_2)
23882388
if LB == sys.float_info.max:

src/sage/graphs/digraph.py

+11
Original file line numberDiff line numberDiff line change
@@ -2490,6 +2490,17 @@ def diameter(self, by_weight=False, algorithm=None, weight_function=None,
24902490
Traceback (most recent call last):
24912491
...
24922492
ValueError: diameter is not defined for the empty DiGraph
2493+
2494+
:trac:`32095` is fixed::
2495+
2496+
sage: g6 = 'guQOUOQCW[IaDBCVP_IE\\RfxV@WMSaeHgheEIA@tfOJkB~@EpGLCrs'
2497+
sage: g6 += 'aPIpwgQI_`Abs_x?VWxNJAo@w\\hffCDAW]bYGMIZGC_PYOrIw[Gp['
2498+
sage: g6 += '@FTgc_O}E?fXAnGCB{gSaUcD'
2499+
sage: G = Graph(g6).to_directed()
2500+
sage: G.diameter(algorithm='DiFUB', by_weight=False)
2501+
3
2502+
sage: G.diameter(algorithm='DiFUB', by_weight=True)
2503+
3.0
24932504
"""
24942505
if not self.order():
24952506
raise ValueError("diameter is not defined for the empty DiGraph")

0 commit comments

Comments
 (0)