Hello Michele, > I have checked the graph library in SageMath, and in your documentation, you > write "Sage graphs are actually NetworkX graphs, wrapped in a Sage class.".
Can you tell me where you found that ? This is actually slighty incorrect: NetworkX' graphs used to be the default data structure of Sage's graphs, but that changed quite some time ago. Nowadays you *can* use NetworkX graph if you want to, but we have our own C implementation of graphs. > Although this implementation is very simple and user-friendly, it is not > very fast (http://graph-tool.skewed.de/performance). Even though those statistics are made for NetworkX and not for Sage, I would not be surprised to find out that we are not very competitive for the algorithms they test. We could actually be quite competitive for centrality betweenness if anybody cares: you can compute this easily from the distances between all pairs of nodes, and we implemented this feature carefully. > For this reason, I > would like to propose a project developing a more efficiency-oriented > implementation, that might be preferred by some users: not only researchers > that analyze very big graphs in the field of Complex Networks (millions or > billions of nodes), We may not be very good for that indeed. > but also people who work in the algorithm design field, > where efficiency is very important. Those guys, however, will probably feel more at home with Sage than with any other software :-P > 1) Are you interested in a project like this, since none of your example > project deals with Sage graph library? Welll.. I would personally be very glad if anybody wanted to work on this in Sage, and I would be very very glad to contribute to the effort. I am not very interested to become a GSOC mentor, however. > 2) In case, do you have any preference on how to choose the language to use > for the implementation? I see that many parts of Sage are written in C or > C++, but none in Java: is it possible to embed Java code in Sage? Otherwise, > I should only focus on C/C++. We do not use java much if at all. As far as I know we sometimes call JMol for 3D data visualization, but that is all. In particular I am not aware of any low-level calls to java code. > 3) Is there any performance bottleneck I should be aware of, before starting > a project like this? For instance, does the notebook interface impact > performances? It depends. Because of our language (because it is not compiled, not typed, ...) we will forever lose time in functions like add_edge, get_neighbours etc. This being said, whenever we have some long computation to run the first thing we do is convert the data structure into something that is easier to work with, so it does not matter much. If you are interested by this software outside of the GSOC context, I would be glad to know. Have fuuuuuuuuuuun, Nathann -- You received this message because you are subscribed to the Google Groups "sage-gsoc" 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-gsoc. For more options, visit https://groups.google.com/d/optout.
