|
1 | 1 | # SimpleValueGraphs.jl
|
2 | 2 |
|
3 |
| -[](https://juliahub.com/ui/Packages/SimpleValueGraphs/aub6U) |
4 | 3 | 
|
| 4 | +[](https://juliahub.com/ui/Packages/SimpleValueGraphs/aub6U) |
5 | 5 | [](https://simonschoelly.github.io/SimpleValueGraphs.jl/stable)
|
6 | 6 | [](https://simonschoelly.github.io/SimpleValueGraphs.jl/dev)
|
7 |
| -[](https://travis-ci.com/simonschoelly/SimpleValueGraphs.jl) |
8 | 7 | 
|
9 | 8 | [](https://codecov.io/gh/simonschoelly/SimpleValueGraphs.jl)
|
10 | 9 | [](https://julialang.zulipchat.com/#narrow/stream/228745-graphs)
|
11 | 10 |
|
12 |
| -This is a experimental package that uses the interface from [LightGraphs.jl](https://github.com/JuliaGraphs/LightGraphs.jl). |
13 |
| -It is similar to [MetaGraphs.jl](https://github.com/JuliaGraphs/MetaGraphs.jl) and [SimpleWeightedGraphs.jl](https://github.com/JuliaGraphs/SimpleWeightedGraphs.jl). |
14 |
| -It solves the following problem: |
15 |
| -- The topology of `MetaGraphs` can be changed fast, but changing and querying edge values is slow. |
16 |
| -- Changing the topology of `SimpleWeightedGraphs` is slow, but changing and querying edge values is fast. |
| 11 | +This is [LightGraphs.jl](https://github.com/JuliaGraphs/LightGraphs.jl) compatible package for graphs with multiple, homogeneous vertex and edge metadata. In particular it provides: |
| 12 | +- an abstract interface for graphs with metadata |
| 13 | +- concrete implementations of mutable graphs with metadata |
| 14 | + |
| 15 | +Compared to [SimpleWeightedGraphs.jl](https://github.com/JuliaGraphs/SimpleWeightedGraphs.jl) it has the following advantages: |
| 16 | +- vertex metadata |
| 17 | +- multiple edge metadata |
| 18 | +- faster structural modifications of graphs |
| 19 | + |
| 20 | +Compared to [MetaGraphs.jl](https://github.com/JuliaGraphs/MetaGraphs.jl) it has the following advantages: |
| 21 | +- faster access and modifications of metadata |
| 22 | +- better type stability when accessing metadata |
17 | 23 |
|
18 | 24 | ## Example
|
19 | 25 |
|
@@ -50,3 +56,15 @@ graphplot(gv;
|
50 | 56 | ```
|
51 | 57 | 
|
52 | 58 |
|
| 59 | +## Benchmarks |
| 60 | + |
| 61 | +This is a comparison of running `LightGraphs.dijkstra_shortest_paths` on the [egonets-Facebook](https://snap.stanford.edu/data/egonets-Facebook.html) graph for multiple graph types - one should note, that this function is not optimal when accessing the edge weights for most of these graph types, so in the future these benchmarks should be repeated with a more optimized function. |
| 62 | + |
| 63 | +| graph type | time (ms) | |
| 64 | +| ------------------------------------------------- | --------- | |
| 65 | +| LightGraphs.SimpleGraph + Matrix weights | 5.1 | |
| 66 | +| LightGraphs.SimpleGraph + SparseMatrixCSC weights | 7.9 | |
| 67 | +| SimpleWeightedGraphs.SimpleWeightedGraph | 7.8 | |
| 68 | +| MetaGraphs.MetaGraph | 68.5 | |
| 69 | +| SimpleValueGraphs.ValGraph | 9.2 | |
| 70 | + |
0 commit comments