Skip to content

Commit 0de8015

Browse files
Merge pull request #2 from yuehhua/ne
Fix ne for self-loops
2 parents d20d948 + 088816c commit 0de8015

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/simpleweightedgraph.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,15 @@ mutable struct SimpleWeightedGraph{T<:Integer, U<:Real} <: AbstractSimpleWeighte
1818

1919
end
2020

21-
ne(g::SimpleWeightedGraph) = nnz(g.weights) ÷ 2
21+
ne(g::SimpleWeightedGraph) = (nnz(g.weights) + nselfloop(g)) ÷ 2
22+
23+
function nselfloop(g::SimpleWeightedGraph)
24+
n = 0
25+
for i in axes(g.weights, 1)
26+
n += g.weights[i, i] != 0
27+
end
28+
return n
29+
end
2230

2331
SimpleWeightedGraph{T}(adjmx::SparseMatrixCSC{U, T}) where {T <: Integer, U <: Real} =
2432
SimpleWeightedGraph{T, U}(adjmx)

test/simpleweightedgraph.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ using SimpleWeightedGraphs
22

33
@testset "SimpleWeightedGraphs" begin
44
@info("Ignore warnings relating to adding and removing vertices and edges")
5-
adjmx1 = [0 1 0; 1 0 1; 0 1 0] # SimpleWeightedGraph
6-
adjmx2 = [0 1 0; 1 0 1; 1 1 0] # SimpleWeightedDiGraph
5+
adjmx1 = [0 1 0; 1 1 1; 0 1 0] # SimpleWeightedGraph
6+
adjmx2 = [0 1 0; 1 1 1; 1 1 0] # SimpleWeightedDiGraph
77
# specific concrete generators - no need for loop
88
@test @inferred(eltype(SimpleWeightedGraph())) == Int
99
@test @inferred(eltype(SimpleWeightedGraph(adjmx1))) == Int
1010
@test_throws ErrorException SimpleWeightedGraph(adjmx2)
1111

1212
@test @inferred(ne(SimpleWeightedGraph(path_digraph(5)))) == 4
13+
@test @inferred(ne(SimpleWeightedGraph(adjmx1))) == 3
1314
@test @inferred(!is_directed(SimpleWeightedGraph))
1415

1516
@test @inferred(eltype(SimpleWeightedDiGraph())) == Int
1617
@test @inferred(eltype(SimpleWeightedDiGraph(adjmx2))) == Int
1718
@test @inferred(ne(SimpleWeightedDiGraph(path_graph(5)))) == 8
19+
@test @inferred(ne(SimpleWeightedDiGraph(adjmx2))) == 6
1820
@test @inferred(is_directed(SimpleWeightedDiGraph))
1921

2022

0 commit comments

Comments
 (0)