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

Reply via email to