-
Notifications
You must be signed in to change notification settings - Fork 4
Where to find algorithms
Many graph algorithms can be written in GraphBLAS, and, indeed, many already have! These exist in many different locations and in different forms.
As these resources are investigated closer, please update this wiki with info that will be useful for the next reader, and maybe put the most useful links first. One of our goals with graphblas-algorithms
is to create a single location with well-tested, fast, beautiful implementations of graph algorithms. Many of the referenced algorithms will probably need to be modified and cleaned up. By targeting the NetworkX API, we inherit a hardened API and, importantly, tests!
If your goal is to implement some algorithms, right now the best approach is probably to look at NetworkX code and find something to your liking :). There is currently a lot of low-lying fruit that should be straightforward to implement. Some particularly juicy places to look may be:
- https://github.com/networkx/networkx/tree/main/networkx/linalg
- https://github.com/networkx/networkx/tree/main/networkx/algorithms/centrality
Other resources:
- https://docs.google.com/spreadsheets/d/1UYcJ8VICOJovp4ctwXSzm3swB-7dXhGB7Kb2AZIeESA/edit#gid=0
- https://github.com/GraphBLAS/GraphBLAS-Pointers
- https://github.com/metagraph-dev/grblas/tree/main/notebooks
- https://github.com/metagraph-dev/metagraph/tree/main/metagraph/plugins/graphblas
- https://github.com/metagraph-dev/grblas-recipes
- https://github.com/GraphBLAS/LAGraph/tree/reorg/experimental/algorithm
- https://github.com/GraphBLAS/LAGraph/tree/reorg/src/algorithm
- https://github.com/Graphegon/pygraphblas/tree/main/demo
- https://github.com/GraphBLAS/HPEC21-TriangleCentrality/blob/main/python/tc.py
- https://docs.scipy.org/doc/scipy/reference/sparse.csgraph.html
- https://github.com/JuliaSparse/SuiteSparseGraphBLAS.jl
- https://github.com/jessecoleman/gbtl-python-bindings
-
https://github.com/rapidsai/cugraph
- This implements the NetworkX API, so looking at what
cugraph
implements may help determine what NetworkX algorithms are implementable and important. - They also have lots of notebooks: https://github.com/rapidsai/cugraph/tree/branch-22.06/notebooks/cugraph_benchmarks
- This implements the NetworkX API, so looking at what
- https://github.com/gunrock/gunrock