Ce projet implémente :
- L’algorithme de Girvan–Newman pour la détection de communautés dans un graphe,
- Une version optimisée appelée Betweenness Sampling Algorithm (BSA), qui estime la centralité d’intermédiarité sur un échantillon de nœuds pour accélérer le calcul,
- Un calculateur de modularité,
- Une interface CLI (ligne de commande) permettant d’exécuter et de comparer les deux approches.
Maven est utilisé uniquement pour la compilation et les tests unitaires.
| Dossier / Fichier | Description |
|---|---|
src/main/java/com/thenuber/aaga |
Code source principal |
src/test/java |
Tests unitaires |
data/sample.edgelist |
Exemple de graphe (petit dataset) |
Makefile |
Automatisation (Linux/macOS) |
run.bat |
Automatisation (Windows) |
results/ |
Dossier de sortie (généré après exécution) |
- Java 17+ installé et accessible via
java -version - Maven 3+ installé et accessible via
mvn -version - (Optionnel) Make installé pour Linux/macOS
- (Optionnel) Git Bash ou PowerShell sous Windows
mvn -DskipTests packagemake packagerun.bat packageExécute l’algorithme original sur le petit graphe data/sample.edgelist :
java -jar target/aaga-projet-0.1.0-SNAPSHOT.jar -i data/sample.edgelist -o results/newmanou simplement :
make run-newman # sous Linux/macOS
run.bat run-newman # sous WindowsExécute la version optimisée par échantillonnage :
java -jar target/aaga-projet-0.1.0-SNAPSHOT.jar -i data/sample.edgelist -o results/sample -a bsaou :
make run-sample # sous Linux/macOS
run.bat run-sample # sous WindowsLe paramètre -a bsa indique au programme d’utiliser la version optimisée.
Pour supprimer les fichiers générés et le dossier results/ :
make clean # sous Linux/macOS
run.bat clean # sous WindowsExécution des tests Maven :
mvn testou
make test-
Les scripts (
Makefileetrun.bat) couvrent tous les cas d’usage : compilation, exécution, test, et nettoyage. -
Aucun prérequis externe n’est nécessaire en dehors de Java et Maven.
-
Les résultats (communautés détectées, modularité, etc.) seront générés dans le dossier
results/. -
Le projet peut être testé sur des graphes plus grands en remplaçant le chemin d’entrée via l’option
-i, par exemple :java -jar target/aaga-projet-0.1.0-SNAPSHOT.jar -i data/facebook_combined.txt -o results/facebook -d " "
run.bat package
run.bat test
run.bat run-sample
run.bat run-newmanProjet développé dans le cadre du cours AAGA