Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

Commit 8df4b07

Browse files
docs: update ARCHITECTURE.md with 11 missing analyzers and 6 utility classes
The architecture document listed only 13 of the 24 analyzer classes and 4 of 10 utility classes, significantly understating the project's analysis capabilities. Added analyzer entries: - BipartiteAnalyzer (BFS 2-coloring, Hopcroft-Karp matching) - CycleAnalyzer (DFS back-edges, BFS girth, fundamental basis) - EulerianPathAnalyzer (Hierholzer's algorithm) - GraphDiffAnalyzer (structural diff of two graphs) - GraphIsomorphismAnalyzer (backtracking with degree pruning) - GraphResilienceAnalyzer (attack simulation, robustness index) - MotifAnalyzer (3/4-node subgraph census, z-scores) - NetworkFlowAnalyzer (Edmonds-Karp max flow, min cut) - RandomWalkAnalyzer (Monte Carlo, hitting times, stationary dist) - SpectralAnalyzer (Jacobi eigenvalues, algebraic connectivity) - StronglyConnectedComponentsAnalyzer (Tarjan's, Kosaraju's, DAG) Added utility class entries: - ForceDirectedLayout, GraphPartitioner, AdjacencyMatrixHeatmap, LaplacianBuilder, GraphRenderers, GraphUtils Updated test section with 12 missing test files (30 total, 1200+ tests). Fixed class counts (18->29 source, 17->30 test classes).
1 parent 481f02f commit 8df4b07

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

ARCHITECTURE.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ This document describes the source structure, design patterns, and key component
88
GraphVisual/
99
├── Gvisual/
1010
│ ├── src/
11-
│ │ ├── gvisual/ # Visualization + analysis (18 classes)
11+
│ │ ├── gvisual/ # Visualization + analysis (29 classes)
1212
│ │ │ ├── Main.java # Swing GUI — graph panel, timeline, controls
1313
│ │ │ ├── edge.java # Edge model (type, vertices, weight, label)
1414
│ │ │ ├── EdgeType.java # Enum — relationship categories, colors, defaults
1515
│ │ │ ├── GraphStats.java # Network metrics (density, degree, hubs)
1616
│ │ │ ├── GraphMLExporter.java # GraphML XML export
1717
│ │ │ ├── GraphGenerator.java # Synthetic graph topologies
18-
│ │ │ └── [12 analyzers — see below]
18+
│ │ │ └── [24 analyzers + utilities — see below]
1919
│ │ └── app/ # Data pipeline — DB → edge files
2020
│ │ ├── Network.java # SQL → edge-list generation
2121
│ │ ├── Util.java # Database connection factory
2222
│ │ ├── findMeetings.java # Bluetooth events → meeting extraction
2323
│ │ ├── addLocation.java # WiFi-based meeting location classification
2424
│ │ └── matchImei.java # Device → IMEI mapping
2525
│ ├── test/
26-
│ │ ├── gvisual/ # 17 test classes (~650 tests total)
26+
│ │ ├── gvisual/ # 30 test classes (~1200+ tests total)
2727
│ │ └── app/ # Pipeline utility tests
2828
│ ├── lib/ # JUNG 2.0.1, PostgreSQL JDBC, Java3D, Commons IO
2929
│ └── images/ # UI icons (play, pause, stop, legend colors)
@@ -34,7 +34,7 @@ GraphVisual/
3434

3535
## Analyzers
3636

37-
The analysis engine consists of 12 standalone analyzer classes. Each follows the same pattern:
37+
The analysis engine consists of 24 standalone analyzer and utility classes. Each follows the same pattern:
3838

3939
1. Constructor takes a `Graph<String, edge>` (JUNG graph)
4040
2. Validates input (null check → `IllegalArgumentException`)
@@ -46,17 +46,28 @@ The analysis engine consists of 12 standalone analyzer classes. Each follows the
4646
| Class | Algorithm | Complexity | Purpose |
4747
|-------|-----------|------------|---------|
4848
| `ArticulationPointAnalyzer` | Tarjan's DFS | O(V+E) | Cut vertices and bridges — single points of failure |
49+
| `BipartiteAnalyzer` | BFS 2-coloring + Hopcroft-Karp | O(V+E) / O(E√V) | Bipartiteness test, maximum matching, vertex cover, independent set |
4950
| `CliqueAnalyzer` | Bron-Kerbosch (Tomita pivot) | O(3^(n/3)) | All maximal cliques — fully connected subgroups |
5051
| `CommunityDetector` | Connected components | O(V+E) | Community detection with size ranking and metrics |
52+
| `CycleAnalyzer` | DFS back-edges + BFS girth | O(V+E) | Cycle detection, girth, fundamental cycle basis, bounded enumeration |
5153
| `DegreeDistributionAnalyzer` | Statistical analysis | O(V) | Degree histogram, power-law fit, network classification |
54+
| `EulerianPathAnalyzer` | Hierholzer's algorithm | O(V+E) | Euler path/circuit detection, degree classification, Chinese Postman |
5255
| `GraphColoringAnalyzer` | Welsh-Powell (greedy) | O(V² + E) | Vertex coloring — chromatic number estimation |
5356
| `GraphDiameterAnalyzer` | All-pairs BFS | O(V(V+E)) | Diameter, radius, eccentricity, center, periphery |
57+
| `GraphDiffAnalyzer` | Set intersection / symmetric diff | O(V+E) | Structural diff of two graphs — added/removed/shared nodes and edges |
58+
| `GraphIsomorphismAnalyzer` | Backtracking with degree pruning | O(V!) worst | Graph isomorphism check via vertex mapping enumeration |
59+
| `GraphResilienceAnalyzer` | Sequential removal simulation | O(V(V+E)) | Random, degree, and betweenness attack resilience with robustness index |
5460
| `KCoreDecomposition` | Iterative peeling | O(V+E) | K-core shells — dense subgraph hierarchy |
5561
| `LinkPredictionAnalyzer` | Common Neighbors / Jaccard / Adamic-Adar | O(V²·d) | Predict missing edges from structural similarity |
5662
| `MinimumSpanningTree` | Kruskal's + Union-Find | O(E log E) | MST / forest with component analysis |
63+
| `MotifAnalyzer` | Subgraph enumeration | O(V^k) | 3/4-node motif detection, census, z-scores, network characterization |
64+
| `NetworkFlowAnalyzer` | Edmonds-Karp (BFS augmenting paths) | O(VE²) | Max flow, min cut, flow decomposition into paths |
5765
| `NodeCentralityAnalyzer` | Brandes + BFS | O(VE) | Degree, betweenness, closeness centrality |
5866
| `PageRankAnalyzer` | Power iteration | O(k(V+E)) | PageRank scores with convergence control |
67+
| `RandomWalkAnalyzer` | Monte Carlo simulation | O(walks × steps) | Random walk statistics, hitting times, stationary distribution |
5968
| `ShortestPathFinder` | BFS / Dijkstra | O(V+E) / O((V+E) log V) | Shortest paths (unweighted and weighted) |
69+
| `SpectralAnalyzer` | Eigenvalue decomposition (Jacobi) | O(V³) | Algebraic connectivity, Fiedler vector, spectral gap, Cheeger bound |
70+
| `StronglyConnectedComponentsAnalyzer` | Tarjan's + Kosaraju's | O(V+E) | SCCs, condensation DAG, bridge edges, connectivity queries |
6071
| `TopologicalSortAnalyzer` | Kahn's + DFS cycle detection | O(V+E) | Topological ordering, cycle detection, critical path |
6172

6273
### Utility Classes
@@ -139,7 +150,7 @@ See [DATABASE.md](DATABASE.md) for full schema documentation.
139150

140151
## Testing
141152

142-
18 test classes with ~670 tests covering all analyzers and security:
153+
30 test classes with ~1200+ tests covering all analyzers and security:
143154

144155
| Test Class | Tests | Covers |
145156
|------------|-------|--------|
@@ -194,3 +205,4 @@ cd Gvisual && ant build
194205
| PostgreSQL JDBC | 8.3-604 | Database connectivity |
195206
| Java3D vecmath | 1.3.1 | 3D math / rendering support |
196207
| JUnit | 4.13.2 | Unit testing (test scope) |
208+

0 commit comments

Comments
 (0)