Hi, my name is Harman Singh and I am a third-year Computer Science Engineering undergraduate from BITS-Pilani K.K. Birla Goa Campus. I am primarily interested in graph algorithms, and am looking to contribute something significant to the
Graphs.jl library. I'm still extremely new to Julia, so there's a lot I don't know, but I'm learning fast, so bear with me.
The current Graphs library is a bit basic, and I intend on adding implementations of several classic algorithms. I've started by
implementing the A-Star algorithm for finding the shortest path between nodes of a graph given an admissible heuristic. I began by trying to imitate the coding style given in the Dijkstra implementation already present in the library, but it ended up diverging quite a lot, so please let me know if there's something coding convention or practice that I've missed.
I want to follow this up with several other features and algorithm that the package currently doesn't have. Off the top of my head, these include Fleury's algorithm and Hierholzer's algorithm for finding Eulerian paths, Floyd-Warshall, and even more basic things such as creating a graph for a given degree sequence (which ought to be a pretty useful feature). If I learn enough by then, I hope to eventually add methods to find the Eigenvector centrality of a node, so that users can experiment with algorithms like PageRank themselves (Incidentally, this last one is missing even in popular libraries such as Networkx and Java's JGraphT).
Are there any other features that users hope to see in the Graphs library? Any suggestions about what I should start with? I'm currently checking out the issue tracker on GitHub to see if there's anything I can help out with.
Additionally, I realise that nothing of this sort exists on the GSoC ideas page. But if there's anyone I can contact regarding the Graphs package, I'd really appreciate some help in formulating a precise and significant project idea.
Thanks in advance for your help,
Harman Singh