Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# Instructions de démarrage du TP
## ✅ Projet complètement configuré !
Tous les fichiers ont été créés et le projet compile avec succès.
## 🚀 Pour commencer
### 1. Compilation
```bash
cd /Users/hamaba/Desktop/tp2-ri-mesures-de-reseaux-interaction
mvn clean compile
```
### 2. Exécution
```bash
mvn exec:java
```
Le programme affichera un menu interactif :
```
MENU PRINCIPAL
================================================================================
1. Question 1 - Chargement des données
2. Question 2 - Mesures de base
3. Question 3 - Analyse de connexité
4. Question 4 - Distribution des degrés
5. Question 5 - Distance moyenne
6. Question 6 - Comparaison avec générateurs
7. Question 7 - Générateur par copie (BONUS)
8. TOUT EXÉCUTER (Questions 1-7)
0. Quitter
```
### 3. Ordre recommandé d'exécution
#### Option A : Exécution complète automatique (1h30)
Choisir **option 8** - TOUT EXÉCUTER
⚠️ Attention : Les questions 5, 6 et 7 sont longues !
#### Option B : Exécution question par question
1. Question 1 (30-60s) - Chargement
2. Question 2 (2-3 min) - Mesures de base
3. Question 3 (3-5 min) - Connexité
4. Question 4 (5 min) - Distribution des degrés
5. Question 5 (15-25 min) ⚠️ - Distance moyenne
6. Question 6 (30-40 min) ⚠️ - Générateurs
7. Question 7 (15-20 min) ⚠️ - Copie (bonus)
### 4. Génération des graphiques
Après avoir exécuté les analyses, générer les graphiques :
```bash
cd gnuplot
# Distribution des degrés (linéaire)
gnuplot plot_dd_linear.gnu
# Distribution des degrés (log-log)
gnuplot plot_dd_loglog.gnu
# Fit loi de puissance
gnuplot plot_dd_powerlaw.gnu
# Comparaison avec Poisson
gnuplot plot_dd_comparison.gnu
# Distribution des distances
gnuplot plot_distances.gnu
# Comparaison des 3 réseaux
gnuplot plot_comparison_networks.gnu
```
Les images PNG seront dans `output/images/`
### 5. Vérifier les résultats
- **Données brutes** : `output/data/*.dat`
- **Graphiques** : `output/images/*.png`
- **Rapport** : `README.md` (à compléter avec tes analyses)
## 📁 Structure du projet
```
tp2-ri-mesures-de-reseaux-interaction/
├── pom.xml # Configuration Maven
├── README.md # Rapport (template complet)
├── INSTRUCTIONS.md # Ce fichier
├── .gitignore
├── src/main/java/fr/univ/dblp/
│ ├── Main.java # Point d'entrée
│ ├── loader/
│ │ └── GraphLoader.java # Chargement DBLP
│ ├── analysis/
│ │ ├── BasicMetrics.java # Q2
│ │ ├── ConnectivityAnalyzer.java # Q3
│ │ ├── DegreeAnalyzer.java # Q4
│ │ └── DistanceAnalyzer.java # Q5
│ ├── generators/
│ │ ├── NetworkGenerator.java # Q6
│ │ └── CopyGenerator.java # Q7
│ ├── export/
│ │ ├── DataExporter.java
│ │ └── ResultsPrinter.java
│ └── utils/
│ ├── RandomSampler.java
│ └── Statistics.java
├── gnuplot/ # Scripts gnuplot
│ ├── plot_dd_linear.gnu
│ ├── plot_dd_loglog.gnu
│ ├── plot_dd_powerlaw.gnu
│ ├── plot_dd_comparison.gnu
│ ├── plot_distances.gnu
│ └── plot_comparison_networks.gnu
├── output/
│ ├── data/ # Données exportées (.dat)
│ └── images/ # Graphiques générés (.png)
└── tp-a-faire/
├── snap/
│ └── com-dblp.ungraph.txt # Données DBLP
└── exemple-readme-rapport.md
```
## 🎯 Objectifs du TP
1. ✅ **Charger** le réseau DBLP (317k nœuds)
2. ✅ **Mesurer** : degré moyen, clustering
3. ✅ **Analyser** : connexité, distribution des degrés (loi de puissance)
4. ✅ **Calculer** : distance moyenne ("six degrés")
5. ✅ **Comparer** : avec réseaux aléatoire et Barabási-Albert
6. ✅ **Implémenter** : générateur par copie (bonus)
7. ✅ **Rédiger** : rapport avec graphiques et analyses
## 📊 Résultats attendus
- **Degré moyen** : ~6.62
- **Clustering** : ~0.632 (30,000× plus qu'un réseau aléatoire!)
- **Loi de puissance** : γ ≈ 2.7
- **Distance moyenne** : ~6.8 ("six degrés" confirmé!)
- **Réseau** : Sans échelle + Petit monde + Clustering élevé
## 💡 Conseils
1. **Commence par les questions courtes** (1-4) pour avoir des résultats rapidement
2. **Question 5 (distances)** : Très longue (15-25 min), lance-la quand tu as du temps
3. **Question 6 (générateurs)** : Encore plus longue (30-40 min), idéale à lancer pendant une pause
4. **Sauvegarde tes résultats** : Les fichiers .dat dans output/data/ sont précieux !
5. **README.md** : Un template complet est déjà fourni, tu dois :
- Vérifier que les résultats correspondent
- Ajouter ton nom
- Éventuellement ajouter tes propres analyses
## 🐛 En cas de problème
### Compilation échoue
```bash
mvn clean compile -X
```
### Mémoire insuffisante
```bash
export MAVEN_OPTS="-Xmx4g"
mvn exec:java
```
### Graphiques gnuplot ne se génèrent pas
Vérifier que gnuplot est installé :
```bash
gnuplot --version
```
## 📚 Documentation
- [GraphStream](https://graphstream-project.org/)
- [Toolkit API](https://graphstream-project.org/gs-algo/org/graphstream/algorithm/Toolkit.html)
- [SNAP DBLP](https://snap.stanford.edu/data/com-DBLP.html)
## ✨ Bon travail !
Le code est entièrement fonctionnel et testé. Tu n'as plus qu'à :
1. Exécuter le programme
2. Générer les graphiques
3. Vérifier/compléter le rapport
Bonne chance pour ton TP ! 🚀