#18539: faster matroid 3 connectivity
-------------------------------------+-------------------------------------
       Reporter:  chaoxu             |        Owner:  chaoxu
           Type:  enhancement        |       Status:  new
       Priority:  major              |    Milestone:  sage-6.8
      Component:  matroid theory     |   Resolution:
       Keywords:                     |    Merged in:
        Authors:                     |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  u/chaoxu/faster_matroid_3_connectivity|  
84a81fdefe60c488faf9e4610c170c985e0c5f2f
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by chaoxu):

 Replying to [comment:13 Rudi]:

 > I have attached the set of matroids on at most 9 elements, perhaps that
 will save you some time translating their data.
 Thanks, that's really helpful. I found a bug and now it have been fixed.
 Now it works for all test cases. I'm pretty convinced of the correctness.

 > What part of your code is currently using most of the time on these test
 cases?
 For the named cases,  _corank and minor operation taking the most of the
 time.
 For the small 3 connected binary matroids, most time was spent on
 is_circuit, is_cosimple, is_simple.
 For matroids with large rank (I generated a random rank 500 binary
 matroid), components take the most time.
 Here is an time breakdown for a rank 500 binary matroid.

 {{{
          136529 function calls in 18.426 seconds

    Ordered by: internal time

    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       501    6.947    0.014   11.109    0.022 matroid.pyx:4477(components)
    125515    4.162    0.000    4.162    0.000 matroid.pyx:1351(circuit)
         1    3.968    3.968    3.968    3.968
 matroid.pyx:4441(is_cosimple)
       500    3.216    0.006    3.246    0.006 matroid.pyx:3438(minor)
         1    0.027    0.027   14.356   14.356
 matroid.pyx:4807(_is_3connected_beta)
      1000    0.026    0.000    0.044    0.000
 matroid.pyx:1772(fundamental_cocircuit)
         1    0.026    0.026    0.026    0.026 matroid.pyx:4408(is_simple)
      1000    0.014    0.000    0.014    0.000 matroid.pyx:820(_is_basis)
       500    0.013    0.000    0.013    0.000 {method '_max_coindependent'
 of 'sage.matroids.basis_exchange_matroid.BasisExchangeMatroid' objects}
       500    0.005    0.000    0.030    0.000
 utilities.py:184(sanitize_contractions_deletions)
         1    0.005    0.005    0.005    0.005 matroid.pyx:2040(coloops)
       500    0.005    0.000    0.005    0.000 {method '_max_independent'
 of 'sage.matroids.basis_exchange_matroid.BasisExchangeMatroid' objects}
      1000    0.003    0.000    0.017    0.000 matroid.pyx:1887(is_basis)
      1000    0.003    0.000    0.003    0.000 {method 'issuperset' of
 'frozenset' objects}
      1000    0.002    0.000    0.002    0.000 {method 'difference' of
 'frozenset' objects}
      1000    0.002    0.000    0.002    0.000 {method 'union' of
 'frozenset' objects}
       500    0.001    0.000    3.248    0.006 matroid.pyx:3631(delete)
       500    0.000    0.000   11.060    0.022
 matroid.pyx:4518(is_connected)
       500    0.000    0.000    0.000    0.000 {method 'isdisjoint' of
 'frozenset' objects}
      1000    0.000    0.000    0.000    0.000 {method 'groundset' of
 'sage.matroids.basis_exchange_matroid.BasisExchangeMatroid' objects}
         1    0.000    0.000    0.000    0.000 matroid.pyx:1811(loops)
         1    0.000    0.000   18.431   18.431 <string>:1(<module>)
         1    0.000    0.000   18.431   18.431 {method 'is_3connected_beta'
 of 'sage.matroids.matroid.Matroid' objects}
         1    0.000    0.000   18.431   18.431
 matroid.pyx:4740(is_3connected_beta)
         3    0.000    0.000    0.000    0.000 matroid.pyx:1216(size)
         1    0.000    0.000    0.000    0.000 matroid.pyx:1236(rank)
         1    0.000    0.000    0.000    0.000 {method 'disable' of
 '_lsprof.Profiler' objects}
 }}}

 I will get it to return a separator and write some docs for the next
 update.

--
Ticket URL: <http://trac.sagemath.org/ticket/18539#comment:16>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to