> > We need to be able to convert to and from the graph6 and sparse6 formats
> > to an adjacency matrix and to a graph.
Done.

> > We need some hooks to nauty.
Not done: we have reimplemented instead. If I don't do it before Sage
Days 7, I will do it there: create a (necessarily optional) spkg to
include nauty, and give all the relevant functions the option to call
nauty instead. I believe geng is part of nauty, so this would come
along for the ride. This should definitely be a wishlist trac ticket.

> > (a) Given a graph and a partition of its vertex set:
> > get generators, orbits and the order of the group of
> > automorphisms of the graph that preserve the partition.
Done. (Orbits are not part of the output, but can be easily read off
from the generators, and is a function of a permutation group (I
certainly hope))

> > (b) Determine if two graphs are isomorphic; if they are then provide the
> > isomorphism, if they are not, return canonical labels.
Done.

> > A python generator
> > based on geng. (This could be more useful in some respects than a
> > database.)
Done. For example:
sage: for g in graphs(3):
    if g.order() != 0: print g.spectrum()
....:
[0.0]
[0.0, 0.0]
[0.0, 0.0, 0.0]
[-1.0, 0.0, 1.0]
[-1.41421356237, 1.16280682999e-16, 1.41421356237]
[-1.0, 1.0]
[-1.0, -1.0, 2.0]

> > (a) Graphs on surfaces: [This item is a place-holder; I am not sure what
> > data structures people will want.]
> I'll pass on this for now until we know more about what we should do.
Comments: Emily Kirkman has done some extensive work on embedding
graphs in surfaces, and I'd love to see some conversation about this
at Sage Days 7.

> > (b) Cayley graphs: These can be dealt with in GAP, but I think it would be
> > useful to have a class, with the group and generating set explicit. Cayley
> > graphs could be directed or undirected. Circulants and Cayley graphs
> > for Zd (where p is prime) could be useful special cases.
Cayley graphs are implemented, but most likely not to the extent
anyone wants. For example, you can call cayley_graph on some groups,
and get the graph back, but the functionality is very limited. There
is certainly no CayleyGraph class, which would be a thousand times
better than the current situation. Definitely create a ticket for
this.

> > (c) Edge-colored graphs: A graph and functions from its edges to an index
> > set, and vice versa. These could also be represented as a set of
> > matchings,
> > and this data structure can be used to represent maps on surfaces.
> I think we should make a nice system for attaching arbitrary metadata to
> vertices and edges of a graph. Something like an attribute dictionary
> for each vertex and edge.
There is an existing trac ticket for improving the vertex association
setup- most likely these comments should just go on that ticket. Any
object at all can be the label for an edge, so I don't think there is
too much to do here.

Another ticket you might want to create, but that I would be most
likely to implement, is edge-labeled graph isomorphism.

> > (d) Bipartite graphs: We will need to deal with some incidence structures,
> > and these can be encoded as bipartite graphs. We want to get the point
> > graphs and line graphs of incidence structures. If we have a procedure to
> > convert a graph G to an incidence structure of vertices and edges, then
> > the line graph of the incidence structure is the line graph of G.
> Do we have a way to represent and work with incidence structures in Sage
> natively?
Graphs and codes are implemented, but I don't think designs are.
Ultimately, there should be an incidence structure class which they
inherit from etc etc etc. Definitely a wishlist ticket, and likely a
good coding sprint idea for Sage Days 7.


> > (e) Bundles: Start with a base graph G with vertices {1, . . . , n}.
> > For each
> > vertex i we are given a graph Ci . For each edge ij we are given a
> > bipartite
> > graph joining V (Ci ) to V (Cj ). (There is an implicit orientation here.)
> > Some examples:
> > (i) The Petersen graph: n = 2, C1 is the 5-cycle, C2 is its complement
> > and the bipartite graph is a 5-matching.
> > (ii) The Hoffman-Singleton graph can be constructed with n = 2, where
> > C1 is an independent set on 15 vertices, C2 is a nice distance regular
> > graph on 35 vertices,. . .
> > (iii) Covering graphs. Here the graphs Ci are empty on r vertices, and
> > each bipartite graphs is either an r-matching or is empty.
> Huh, I used this idea extensively in my dissertation and a research
> paper. I used the "blowup graph" terminology, though, from extremal
> graph theory. Is anyone working on this? If not, I'll make a trac ticket.
Nobody I know of. If you did this type of stuff in your dissertation,
then I nominate you! Create a ticket.

> > A database of small graphs. Put Ted Spence's strongly regular graphs
> > into a
> > database. (In this case the important thing is to have the graphs
> > themselves,
> > we would not necessarily need much data.) Gordon Royle has more data
> > than he knows what to do with.
Database of small graphs: done
Ted Spence's regular graphs: not done
Gordon Royle's data: not done

> Trac ticket?
Maybe not yet for this one. We've invited Gordon Royle to SD7, and if
he comes, you and he and Emily could have a session about databases...

> > A database of trees, or a generator for trees. I think it would be
> > reasonably
> > straightforward to generate rooted trees, and hence get trees. The
> > generators
> > would be more useful than the database. It is not impossible that
> > something
> > in the nauty package generates trees.
If you look into the code that graphs(7) calls, you will notice that
you can pass it any vertex-hereditary property, including being a
tree. So in some sense, this is already implemented. However, this
could be its own constructor, and more importantly, I know of a way to
optimize the generation of trees to go much faster than it would with
what I described above. Create a ticket, and assign it to me.

> > A lot of this will be in NetworkX, and I am not sure what is there. It
> > would
> > be useful to have quick and dirty recursive routines to find max cliques,
> > max independent set, chromatic number, Hamilton cycles, Hamilton paths,
> > chromatic polynomial, Tutte polynomial. Edge colorings. Efficient routines
> > would be better, but the problem is to find them. There is a clique
> > routine
> > in C at http://users.tkk.fi/∼pat/cliquer.html
> > I would want to be able to find cut vertices and 2-cuts (and hence decide
> > if the graph is 3-connected). Eventually someone will ask about computing
> > vertex and/or edge connectivity; I assume some of this is in NetworkX.
> > Personally, I want some eigenvalue stuff. For small graphs, I want the
> > eigenvalues computed fast in floating point, and the eigenspaces. NTL will
> > compute the characteristic polynomial of quite large graphs.
>
> Already done:
> * max cliques (see cliques() and cliques_*)
> * computing eigenvalues (is it as fast as Chris is thinking?)
I would expect so, since Sage wants to be as fast as possible at
anything Linear Algebra. Someone who knows more should comment...

> Not done (and fodder for trac tickets):
> * max independent set
> * chromatic number
> * hamiltonian cycles and paths
> * chromatic polynomial
> * Tutte polynomial
> * finding edge colorings
> * compare cliques() and related functions with the routine at
> http://users.tkk.fi/~pat/cliquer.html (the routine is released under GPL)
> * cut-sets (more generally, min/max flow algorithms)
> * vertex and edge connectivity (I don't think this is in NetworkX)
> * eigenspaces
> * characteristic polynomial (NTL?)
> > I would like a procedure which given an n × n (sparse) matrix A and an
> > n-vector z, would compute the monic polynomial of least degree f such that
> > f (A)z = 0. In other words, find the least integer d such that Ad z
> > lies in the
> > span of
> > z, Az, . . . , A^(d−1) z
> > and give me the coefficients of A^d z when we write it as a linear
> > combination of
> > these vectors. I could use this to derive information about walk
> > generating
> > functions for large graphs, and hence get spectral information. The field
> > could be Q, or Zp . (We might need the latter to circumvent coefficient
> > growth problems.)
> This sounds like a good problem for other parts of Sage. Can we do this
> already?
Not really sure. Optimally, Chris Godsil might speak about something
like this at SD7.

> > Someone is eventually going to ask for a routine to test for planarity. I
> > believe that there are good ones in existence, but it's going to be
> > hard to get
> > a good one with an open source licence.
>
> The nauty README has this to say about the new planarity testing feature:
> "New program planarg to test for planarity and find planar embeddings:
> planarg -help for details. The planarity code was written by Paulette
> Lieby for the Magma project and used with permission."
>
> Does anyone know Paulette Lieby? Can we ask about releasing the code
> under GPL? It looks like the source has now been released as a part of
> nauty.
Emily Kirkman understands a linear time algorithm for testing for
planarity. There is one in BOOST, which is GPL, and has been nominated
for inclusion in Sage several times.

> > A graph editor. This would allow graphs to be constructed and edited by
> > pointing and clicking. It should be able to output ps/pdf files. We
> > want to
> > be able to save the current state in machine readable form, and to be able
> > to input graphs in this form. This means we will have drawings as explicit
> > objects. (Thus it would be easy to write programs to generate drawings.)
> > If we have a graph displayed in the editor, we should be able to access it
> > from sage/python, and compute parameters there. So I would like to be able
> > to adjust the graph with the mouse, or from sage.
> > Some people will want to be able to use arbitrarily complicated curves
> > for the edges, and to place all sorts of text around the drawing. This
> > will
> > lead to something like xfig rewritten in sage.
>
> Indeed, this does sound like a very ambitious project. We might look at
> incorporating other graph editors. There are a few written in Java that
> might be useful. As it is, though, do we have any GUI things we can work
> with other than Java (like the recent interactive 3d plots) or some sort
> of AJAX trickery? We may be able to do something with javascript
> draggable objects here, using jquery or some other javascript GUI
> library. It seems like at one point someone mentioned another javascript
> library for drawing on a web page.
Sean Howe wrote a javascript editor, and that is lurking in my email
somewhere. I think it was decided against for reasons of notebook
security, and in favor of the new Java3d stuff. The problem is that
interactive GUIs is a difficult problem for anything in Sage. Also,
nothing has been written for the Java3d stuff yet. The problem with a
lot of graph visualizers and editors already written is that most of
them aren't very high quality, and there are so many low quality
ones...

> If we do this in the web, then having interactive widgets in the
> notebook seems like the way to go. That's another project that would be
> useful.
I was brainstorming about something like widgets a while ago, before
the notebook underwent its sea change. We (>= you and I) should make
this a coding sprint at SD7.

> > The reference here is Stanton and White. We want rank, unrank and genera-
> > tors for basis combinatorial objects. For example, permutations: the
> > unrank
> > function, given i such that 1 ≤ i ≤ n!, returns the i-th permutation,
> > the rank
> > function is its inverse. [Well, I might have rank and unrank swapped, but
> > the idea should be clear.]
> > Basic objects include sets, k-sets, elements of S n (Grey codes), permuta-
> > tions, set partitions, integer partitions, perfect matchings,. . .
> Are there any of these that Mike has not implemented? I know he's done a
> pretty comprehensive job.
Mike's department.

> > It would be very useful to be able to form incidence structures from
> > differ-
> > ence sets. Here the input would be a group G and some subsets S1 , . .
> > . , Sm ;
> > the point set of the incidence structure would be G, and the blocks would
> > be the translates Sig for i = 1, . . . , m and g in G. Even just the
> > case G = Zd
> > n
> > would be a good start.
> Again, do we have facilities for working with incidence structures in Sage?
See above.

> > Sometimes I want to construct graphs whose vertices are subspaces of a
> > vector space over a finite field. It could be useful to have a
> > generator for
> > the lines of the associated projective space, or even subspaces of a given
> > dimension.
> Is there an easy way to generate all of the subspaces of a vector space
> already in Sage, maybe restricted to a particular dimension, from the
> original vector space?
Maybe make a ticket for this?

-- 
Robert L. Miller
University of Washington
Department of Mathematics
http://www.rlmiller.org/

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to