# 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 ! 🚀
