I'm working on a small class for representing sign matrices, which are
matrices having -1 or 1 entries which represent the class of real
matrices having the same sign pattern. These show up in communication
complexity, for example. At other times, I've wanted to deal with
matrices having specific zero/nonzero patterns, and would like a nice
object in Sage for representing those classes too.
My design question is how best to implement something like this? In
general, I want to make a bunch of MatrixPattern classes and subclasses.
An instance of a class would represent a class of matrices having
specific constraints on its entries. For example, a SignMatrix class
would represent a class of matrices having a specific sign distribution
of entries. Various questions can be asked about the class, then, like
the sign rank of the SignMatrix (the minimum rank over all real matrices
in the class).
Is there some framework (like in the combinat stuff) that would provide
a nice elegant way to have these MatrixPattern classes? Any ideas for
an elegant naming/subclassing scheme? I presume it would not make sense
to inherit from general matrices, as the matrix pattern classes really
represent groups of matrices.
And finally, anyone interested in working together on something like
this? Right now, I'm particularly interested in sign matrix patterns
and specifying zero/nonzero patterns (where the entries are specified as
zero, nonzero, or I-don't-care).
An example:
sage: m=SignMatrix(["++-","-++"]); m
[++-]
[-++]
sage: m.minimum_rank() # the minimum rank over all real matrices having
this sign pattern
2
sage: BipartiteGraph(m) # makes a bipartite graph representation of the
pattern
Thanks,
Jason
--
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org