Skip to content

Commit c68aec5

Browse files
committed
Few optimizations
1 parent 2e4020a commit c68aec5

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/sage/matroids/flats_matroid.pyx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,14 @@ cdef class FlatsMatroid(Matroid):
7676
self._F[i].add(frozenset(F))
7777
else:
7878
self._groundset = frozenset(groundset)
79-
for i in flats:
79+
for i in sorted(flats):
8080
for F in flats[i]:
8181
try:
8282
self._F[i].add(frozenset(F))
8383
except KeyError:
8484
self._F[i] = set()
8585
self._F[i].add(frozenset(F))
86-
self._matroid_rank = self.rank(self._groundset)
86+
self._matroid_rank = max([0] + list(self._F))
8787

8888
cpdef groundset(self) noexcept:
8989
"""
@@ -121,16 +121,20 @@ cdef class FlatsMatroid(Matroid):
121121
sage: M = FlatsMatroid(matroids.Theta(3))
122122
sage: M._rank(['x1', 'y0', 'y2'])
123123
2
124+
125+
TESTS::
126+
127+
sage: from sage.matroids.flats_matroid import FlatsMatroid
128+
sage: M = matroids.catalog.NonDesargues()
129+
sage: F = FlatsMatroid(M)
130+
sage: for S in powerset(M.groundset()):
131+
....: assert M.rank(S) == F.rank(S)
124132
"""
125133
cdef frozenset XX = frozenset(X)
126-
cdef int min = len(self._groundset)
127-
for i in self._F:
128-
if i < min:
134+
for i in range(self.rank() + 1):
129135
for f in self._F[i]:
130136
if f >= XX:
131-
min = i
132-
break
133-
return min
137+
return i
134138

135139
# optional
136140

@@ -409,7 +413,7 @@ cdef class FlatsMatroid(Matroid):
409413
"""
410414
cdef list W = []
411415
cdef int i
412-
for i in sorted(self._F):
416+
for i in self._F:
413417
W.append(len(self._F[i]))
414418
return W
415419

@@ -476,7 +480,7 @@ cdef class FlatsMatroid(Matroid):
476480
cdef bint flag
477481

478482
# check flats dictionary for invalid ranks and repeated flats
479-
ranks = sorted(self._F)
483+
ranks = list(self._F)
480484
if ranks != list(range(len(ranks))):
481485
return False
482486
flats_lst = [F for i in self._F for F in self._F[i]]

0 commit comments

Comments
 (0)