library(signnet)
adj = matrix(c(
#1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 1
1, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 2
1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 3
0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, # 4
0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 5
0, 0, -1, 0, -1, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, # 6
0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, # 7
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, # 8
0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, # 9
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, # 10
0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, # 11
0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, # 12
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, # 13
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, # 14
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0), # 15
nrow = 15, ncol = 15)
g = graph_from_adjacency_matrix(adj, "undirected", weighted = "sign")
balance_score(g, method = "triangles")
## [1] 1
balance_score(g, method = "walk")
## [1] 0.9998143
# lower bound. Exact value is 1 - 1/21 = 0.952381
balance_score(g, method = "frustration")
## [1] 0.9047619