Closed HarryMcCarney closed 1 year ago
Link to the coordinate representation of sparse matrices mentioned in our call: https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html
A draft of a core structure is in. ee923bd (Sorry, forgot to mention this issue in the commit message)
It stores Edge information as an Adjacency List. For the underlying data structure I used ResizeArray, which are, as the name suggests, can expand without generating another ResizeArray (unlike Arrays in F#). But ResizeArrays don't have the best API, so for now I've included FSharpx as a dependency which provides functional wrappers around generic collection types.
Virtually everything is in-place currently for performance, but I think we'll need immutable alternatives to most functionality for a seemless F# experience.
We have used it in development for a bit and it can handle graphs with over a million edges with ease.
Sorry for blocking you @LibraChris, but I think some of the conversions should be unblocked now.
This should involve comparing different options in terms of performance and usability.