diff --git a/Gvisual/src/gvisual/GrowthRateAnalyzer.java b/Gvisual/src/gvisual/GrowthRateAnalyzer.java index 8468a33..c9cd723 100644 --- a/Gvisual/src/gvisual/GrowthRateAnalyzer.java +++ b/Gvisual/src/gvisual/GrowthRateAnalyzer.java @@ -118,9 +118,10 @@ private static double computeDensity(int nodes, int edges) { private static double computeAvgClustering(Graph g) { if (g.getVertexCount() == 0) return 0.0; + Map> adj = GraphUtils.buildAdjacencyMap(g); double totalClustering = 0.0; for (String v : g.getVertices()) { - Collection neighbors = g.getNeighbors(v); + Set neighbors = adj.get(v); if (neighbors == null) continue; List neighborList = new ArrayList<>(neighbors); int k = neighborList.size(); @@ -128,8 +129,9 @@ private static double computeAvgClustering(Graph g) { int triangles = 0; for (int i = 0; i < k; i++) { + Set ni = adj.get(neighborList.get(i)); for (int j = i + 1; j < k; j++) { - if (g.isNeighbor(neighborList.get(i), neighborList.get(j))) { + if (ni != null && ni.contains(neighborList.get(j))) { triangles++; } } diff --git a/Gvisual/src/gvisual/NodeSimilarityAnalyzer.java b/Gvisual/src/gvisual/NodeSimilarityAnalyzer.java index a051d1d..4261c17 100644 --- a/Gvisual/src/gvisual/NodeSimilarityAnalyzer.java +++ b/Gvisual/src/gvisual/NodeSimilarityAnalyzer.java @@ -81,7 +81,7 @@ public NodeSimilarityAnalyzer(Graph graph) { throw new IllegalArgumentException("Graph must not be null"); } this.graph = graph; - this.neighborCache = new HashMap>(); + this.neighborCache = GraphUtils.buildAdjacencyMap(graph); } // ── Single-pair metrics ───────────────────────────────────── diff --git a/Gvisual/src/gvisual/StructuralHoleAnalyzer.java b/Gvisual/src/gvisual/StructuralHoleAnalyzer.java index f99411d..2f40a52 100644 --- a/Gvisual/src/gvisual/StructuralHoleAnalyzer.java +++ b/Gvisual/src/gvisual/StructuralHoleAnalyzer.java @@ -51,7 +51,7 @@ public class StructuralHoleAnalyzer { private final Graph graph; - private Map> neighborCache; + private final Map> neighborCache; /** * Creates a new StructuralHoleAnalyzer for the given graph. @@ -64,18 +64,7 @@ public StructuralHoleAnalyzer(Graph graph) { throw new IllegalArgumentException("Graph must not be null"); } this.graph = graph; - buildNeighborCache(); - } - - private void buildNeighborCache() { - neighborCache = new HashMap<>(); - for (String v : graph.getVertices()) { - Set nbrs = new LinkedHashSet<>(); - for (String n : graph.getNeighbors(v)) { - nbrs.add(n); - } - neighborCache.put(v, nbrs); - } + this.neighborCache = GraphUtils.buildAdjacencyMap(graph); } // ── Result classes ──────────────────────────────────────────