#16553: Clean IncidenceStructure
-------------------------------------+-------------------------------------
       Reporter:  vdelecroix         |        Owner:
           Type:  enhancement        |       Status:  needs_work
       Priority:  major              |    Milestone:  sage-6.3
      Component:  combinatorial      |   Resolution:
  designs                            |    Merged in:
       Keywords:                     |    Reviewers:
        Authors:  Nathann Cohen,     |  Work issues:
  Vincent Delecroix                  |       Commit:
Report Upstream:  N/A                |  9be78f42a2e26008661462f6db66b5646849ee76
         Branch:  public/16553v2     |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------

Comment (by vdelecroix):

 Replying to [comment:99 ncohen]:
 > Yo !
 >
 > > - It makes sense to translate everything on {0,...,n-1} internally. It
 will save a lot of pain.
 >
 > +1
 >
 > > - For the blocks we can put it into a fixed datastructure: i.e. a
 sparse incidence matrix (that way even the blocks are numbered). Sparse
 integer matrices have methods
 > > {{{
 > > def _nonzero_positions_by_row(self, copy=True)
 > > def _nonzero_positions_by_column(self, copy=True)
 > > }}}
 > > It is a bit stupid for our purpose to use GMP integers... but at least
 these are fast methods.
 > >
 > > What do you think of getting rid of the attribute `._blocks` and use
 only `._incidence_matrix`.
 >
 > I don't like it, because I don't trust complicated datatypes. What do we
 earn by storing this as a matrix ? I expect it to be heavier (because it
 has to remember the '1' in each cell, it is not meant to be a binary
 matrix) and less practical (we iterate on the blocks all day long)..

 Right.

 > The best data structure for this is a bipartite graph, isn't it ?

 It is the same as a binary matrix...

 > But even then, I personally prefer simple data types. Otherwise we will
 constantly do work on list of lists, translate everything to a
 matrix/graph, then export everything to list of lists, then build another
 incidence structure ...
 >
 > What do you think ?

 True, but we have to fix the way it is stored, otherwise everything is
 broken (e.g. equality, `is_simple`). Let's go for sorted tuples of sorted
 tuples of integers and add a flag
 `do_not_copy_or_check_the_input_and_I_am_sure_that_it_is_what_I_want` in
 the constructor. Is that good for you?

 Vincent

--
Ticket URL: <http://trac.sagemath.org/ticket/16553#comment:100>
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