#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.