sbromberger / SimpleWeightedGraphs.jl

Simple weighted graphs. Requires LightGraphs.jl.
Other
49 stars 22 forks source link

Inconsistent adjacency matrix for weighted and unweighted graphs #53

Open rodrigolece opened 4 years ago

rodrigolece commented 4 years ago

We have the correct behaviour (self-edges should be double counted as pointed out in #38)

julia> g = SimpleGraph(1)
{1, 0} undirected simple Int64 graph

julia> add_edge!(g,1, 1)
true

julia> adjacency_matrix(g)

1×1 SparseArrays.SparseMatrixCSC{Int64,Int64} with 1 stored entry: [1, 1] = 2

but we have the following which is inconsistent

julia> w = SimpleWeightedGraph(1)
{1, 0} undirected simple Int64 graph with Float64 weights

julia> add_edge!(w, 1, 1, 10)
true

julia> adjacency_matrix(w)
1×1 SparseArrays.SparseMatrixCSC{Int64,Int64} with 1 stored entry:
  [1, 1]  =  1

Ideally I would expect to see 20 (which is correct for weighted and undirected graphs) but at the very least I would expect to see 2 and not 1.

sbromberger commented 4 years ago

This only occurs with self-loops, which aren't really supported in SimpleGraphs and are probably not supported at all in SimpleWeightedGraphs. If you have an example of where this fails on non-self-loops, then it's definitely a bug.