On Thursday, November 22, 2012 7:37:49 AM UTC, Simon King wrote: > Bit packed exponents? What does that mean in a path algebra? I thought > that monomials (i.e., paths in the quiver) would rather be represented by > lists of integers, the integers being the labels of arrows in the quiver. >
What would be nice is to have a more compact representation where paths (up to some maximal length obviously) are represented by a fixed-size memory object. Then you could store the exponents of the polynomial linearly, without having to hunt through the heap for every monomial. As you know, for a commutative ring Singular just stuffs exponents as low/high bits into a machine integer. I don't know the best (or even just good) algorithm for path algebras, but here is what I'm thinking about: Really you only need to know the starting point and, sequentially, which arrow you are following at each node. The most naive storage scheme would be to just save the index of a path in a table of paths up to a predetermined maximal length, though that would make composition a painful table lookup. And you clearly can't order the paths in the table such that composition is addition since composition is non-commutative. But you could, for example, store the path info as the lowest x bits of a machine integer such that composition is bit-shift and addition. The endpoint should probably be stored separately since you very often need to know whether it matches another path's starting point. -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To view this discussion on the web visit https://groups.google.com/d/msg/sage-combinat-devel/-/rEK30cinPWcJ. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.