README.md 5,6 ko
Newer Older
Hugo (Univ)'s avatar
Hugo (Univ) a validé
# Mesures de réseaux d'interaction
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
Nous allons analyser un réseau de collaboration scientifique en informatique. Le réseau est extrait de DBLP et disponible sur [SNAP](https://snap.stanford.edu/data/com-DBLP.html).
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
GraphStream permet de mesurer de nombreuses caractéristiques d'un réseau. La plupart de ces mesures sont implantées comme des méthodes statiques dans la classe [`Toolkit`](https://data.graphstream-project.org/api/gs-algo/current/org/graphstream/algorithm/Toolkit.html). Elles vous seront très utiles par la suite.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
> **Note : les résultats affichés sont approximatifs, mais les calculs ont bien été réalisés avec les valeurs réelles calculées par GraphStream.**

Hugo (Univ)'s avatar
Hugo (Univ) a validé
1. Commencez par télécharger les données et les lire avec GraphStream. GraphStream sait lire ce format. Voir [`FileSourceEdge`](https://data.graphstream-project.org/api/gs-core/current/org/graphstream/stream/file/FileSourceEdge.html) et ce [tutoriel](http://graphstream-project.org/doc/Tutorials/Reading-files-using-FileSource/). Vous pouvez essayer de visualiser le graphe mais pour cette taille ça sera très lent et très peu parlant.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
**Fait**
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
2. Prenez quelques mesures de base: nombre de nœuds et de liens, degré moyen, coefficient de clustering. Quel sera le coefficient de clustering pour un réseau aléatoire de la même taille et du même degré moyen ?
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
| Donnée                                  | Valeur approximative |
|-----------------------------------------|----------------------|
| Nombre de noeuds ($N$)                  | 317080               |
| Nombre de liens ($L$)                   | 1049866              |
| Degré moyen ($`\langle k \rangle`$)     | 6.62208890914917     |
| Coefficient moyen de clustering ($C_i$) | 0.6324308280637396   |
Hugo (Univ)'s avatar
Hugo (Univ) a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
Pour un réseau aléatoire, le coefficient moyen de clustering est $`C_i = p = \cfrac{\langle k \rangle}{N}`$, soit $`C_i \approx \cfrac{6.622}{317080} \approx \boxed {2.088e^{-5}}`$
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
3. Le réseau est-il connexe ? Un réseau aléatoire de la même taille et degré moyen sera-t-il connexe ? À partir de quel degré moyen un réseau aléatoire avec cette taille devient connexe ?
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
Le réseau est connexe.

Pour un réseau aléatoire, le régime connecté s'atteint lorsque $`\langle k \rangle > \ln N`$.  
Ici, $`\langle k \rangle \approx 6.622`$ et $`\ln N \approx 12.667`$, donc le régime n'est pas atteint. Cela signifie qu'un réseau aléatoire de la même taille et de même degré moyen ne sera pas forcément connexe.

Le degré moyen à atteindre pour n'avoir que des réseaux connexes est donc $`\langle k \rangle \gtrapprox 12.667`$.

Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
4. Calculez la distribution des degrés et tracez-la avec `gnuplot` (ou avec votre outil préféré) d'abord en échelle linéaire, ensuite en échelle log-log. Est-ce qu'on observe une ligne droite en log-log ? Que cela nous indique ? Tracez la distribution de Poisson avec la même moyenne pour comparaison. Utilisez la commande `fit` de `gnuplot` pour trouver les coefficients de la loi de puissance et tracez-la.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   La distribution de degrés $`p_k = \frac{N_k}{N}`$ est la probabilité qu'un nœud choisi au hasard ait degré $`k`$. On peut utiliser [`Toolkit.degreeDistribution()`](https://data.graphstream-project.org/api/gs-algo/current/org/graphstream/algorithm/Toolkit.html#degreeDistribution(org.graphstream.graph.Graph)) pour obtenir $`N_k`$ et normaliser par la suite :
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
    ```java
    int[] dd = Toolkit.degreeDistribution(graph);
    for (int k = 0; k < dd.length; k++) {
      if (dd[k] != 0) {
        System.out.printf(Locale.US, "%6d%20.8f%n", k, (double)dd[k] / graph.getNodeCount());
      }
    }
    ```
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   En traçant la distribution de degrés en échelle log-log on observe une ligne droite pendant plusieurs ordres de grandeur. Cela nous indique une loi de puissance :
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
    ```math
    p_k = C k^{-\gamma}
    ```
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   On utilise ce [script](/gnuplot/plot_dd.gnu) pour tracer la distribution et estimer l'exposant de la loi de puissance.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   ![distribution des degrés](/gnuplot/dd_dblp.png)
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   On a $`\gamma = 2.7 \pm 0.04`$
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
5. Maintenant on va calculer la distance moyenne dans le réseau. Le calcul des plus courts chemins entre toutes les paires de nœuds prendra plusieurs heures pour cette taille de réseau. C'est pourquoi on va estimer la distance moyenne par échantillonnage en faisant un parcours en largeur à partir de 1000 sommets choisis au hasard. L'hypothèse des six degrés de séparation se confirme-t-elle ? Est-ce qu'il s'agit d'un réseau petit monde ? Quelle sera la distance moyenne dans un réseau aléatoire avec les mêmes caractéristiques ? Tracez également la *distribution* des distances. Formulez une hypothèse sur la loi de cette distribution.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   **TODO**
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
6. Utilisez les générateurs de GraphStream pour générer un réseau aléatoire et un réseau avec la méthode d'attachement préférentiel (Barabasi-Albert) qui ont la même taille et le même degré moyen. Refaites les mesures des questions précédentes pour ces deux réseaux. Les résultats expérimentaux correspondent-ils aux prédictions théoriques ? Comparez avec le réseau de collaboration. Que peut-on conclure ?
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   **TODO**
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
7. (*Question bonus*) S'il y a une caractéristique du réseau de collaboration que le modèle de Barabasi-Albert n'arrive pas à reproduire c'est le coefficient de clustering. Est-ce qu'on peut espérer faire mieux avec une variante de la méthode de copie :
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
    * Le nouveau nœud choisit au hasard un nœud `v`.
    * Ensuite il parcourt tous les voisins de `v` et se connecte à eux avec probabilité `p`.
    * À la fin il se connecte à `v`
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   Essayez d'implanter un tel générateur et voir les résultats qu'il donne.
Hugo Landrin's avatar
Hugo Landrin a validé

Hugo (Univ)'s avatar
Hugo (Univ) a validé
   **TODO**