GRI Heger Arfaoui Clémence Magnien Fonctionnement du cours Enseignants nom et mail Page web du cours : http://www-rp.lip6.fr/~magnien/gri/ Fonctionnement par blocs de deux semaines : er mercredi, 4h-6h : cours er mercredi, 6h-8h : TP e mercredi : TP À la fin de chaque TP (sauf le TP 0), défi à rendre le mardi précédent le cours suivant. Introduction Contexte Grands réseaux d interactions/graphes de terrain : graphes issus de contextes réels. Exemples : Graphes du web Topologies de l internet Réseaux sociaux Réseaux biologiques Applications de l étude de ces graphes : simulations de protocoles sur l internet recommandations sur un site d achat Réseaux sociaux en ligne moteurs de recherche web Bien comprendre la structure de ces graphes soulève plusieurs questions : Mesure (acquérir l information) Analyse (décrire le graphe) Modélisation (générer un graphe ressemblant à un graphe donné) Algorithmique (arriver à traiter de très gros graphes, nouvelles questions) Mesure Acquérir l information sur les nœuds et les liens du graphe. Web : Crawl à partir d une ou plusieurs pages web Internet : mesures avec traceroute Réseaux sociaux : sondages
Analyse Les graphes qu on traite sont très gros, besoin de notions et de descripteurs pour pouvoir dire : si tous les nœuds se ressemblent s il y a des groupes de nœuds fortement reliés les uns aux autres Modélisation Générer des graphes aléatoires qui ressemblent à un graphe donné. Utile pour : Simulations de protocoles (sur un graphe deux fois plus gros,...) Comprendre les phénomènes observés Algorithmique Les graphes qu on traite sont très gros, donc il y a besoin de nouvelles méthodes pour calculer des notions classiques en temps raisonnable (distance moyenne, diamètre par exemple). Des nouvelles questions se posent aussi dans ce contexte, comme par exemple le calcul de communautés (groupes de nœuds fortement reliés les uns aux autres). Dans ce cours, on parlera beaucoup d algorithmique, appliquée à l analyse et à la modélisation. Graphes Définitions Un graphe G = (V, E) est un couple d ensembles. V est l ensemble des sommets (ou nœuds) E (V V ) est l ensemble des arêtes (ou liens). Exemples. Attention à ne pas confondre un graphe et un dessin de ce graphe. On note n = V le nombre de sommets et m = E le nombre d arêtes. Deux sommets u et v sont voisins s il y a une arêtre entre u et v. Le degré d un sommet v, noté d (v), est son nombre de voisins. Le degré moyen du graphe est la moyenne du degré sur tous les sommets : d (G) = d (v) = m n n. v V La densité d un graphe est le nombre d arêtes comparé au nombre d arêtes possibles entre toutes les paires de sommets : δ(g) = m n(n ) = d (G) n. Le graphe est orienté si on considère que (u, v) est différent de (v, u). Notion de degré entrant et degré sortant.
Stockage en mémoire Deux façons principales de stocker un graphe en mémoire : matrice d adjacence listes d adjacence Exemples. Avantages et inconvénients : temps pour savoir si un lien existe, pour calculer le degré d un nœud. Taille des deux représentations. En pratique, nos graphes sont peu denses (m O(n)). Propriétés communes Distributions homogènes vs hétérogènes Si on a un ensemble de valeurs v, v,... v N, la distribution de ces valeurs est la courbe : nombre de valeurs qui valent k en fonction de k. Exemple Valeurs :, 5, 3,,,, 4,, 5 3 3 4 5 En pratique, on a deux grandes familles de distributions : les distributions homogènes sont bien centrées autour de la moyenne (exemple : taille des gens) les distributions hétérogènes ont beaucoup de petites valeurs, quelques très grandes valeurs, et tous les comportements entre les deux (exemple : salaires). Les distributions hétérogènes ressemblent souvent à des lois de puissances : y x α droites en échelle log-log. Dans les distributions homogènes, la moyenne est représentative : la plupart des valeurs sont proches de la moyenne. Dans les distributions hétérogènes, la moyenne n est pas représentative : la plupart des valeurs sont au-dessous de la moyenne, et quelques unes sont très au-dessus de la moyenne. Distribution des degrés Dans les graphes issus de contextes réels, la distribution des degrés est la plupart du temps hétérogène le degré moyen n est pas représentatif. 3
Coefficient de clustering - définitions et calcul Clustering : lié aux triangles Proba que deux nœuds soient reliés s ils ont un voisin en commun Intuitivement, cela correspond à l adage : les amis de mes amis sont mes amis. Calculer le coefficient de clustering d un graphe permet de savoir à quel point c est le cas pour un graphe donné. Coefficient de clustering local Soit un sommet v, son coefficient de clustering est égal au nombre d arêtes entre ses voisins, divisé par le nombre d arêtes total qu il pourrait y avoir. Si on note N(v) les voisins de v et E(N(v)) = {(u, u ) E, u, u N(v)}, alors lcc(v) = Proche de la notion de densité. E(N(v)) d (v)(d (v) ). Le coefficient de clustering local d un graphe G, noté lcc(g), est la moyenne du coefficient de clustering de tous les sommets qui ont un degré supérieur ou égal à. Coefficient de clustering global gcc(g) = 3N N, où N est le nombre de triangles dans le graphe, et N le nombre de triplets connexes (trois sommets et au moins deux arêtes). Probabilité que quand deux sommets ont un voisin en commun, le troisième lien existe. En pratique, les deux coefficients de clustering sont forts pour les graphes de terrain : plusieurs ordres de grandeur au dessus de la densité. Calcul de la distance moyenne d(u, v) : distance entre les nœuds u et v. Distance moyenne : moyenne de d(u, v) sur toutes les paires de sommets (u, v) telles que u v (en pratique, la distribution de la distance est homogène, donc étudier la distance moyenne a du sens). En pratique, la distance moyenne n a de sens que si le graphe est connexe on se restreint à la plus grande composante connexe. Complexité : un parcours en largeur : O(m) distances de tout le monde vers tout le monde : n parcours en largeur O(nm). 4
Outils unix et format des données Valables quand la quantité de données n est pas trop grosse. Bien pour vérifier les résultats d un programme. Format des données : lignes du type n n qui indiquent qu il y a un lien entre les nœuds n et n. Si le graphe est orienté, la ligne indique qu il y a un lien de n vers n. Nombre de liens wc -l graph.data cat graph.data wc -l (Différences mineures dans la sortie) Trouver les voisins (sortants) d un nœud grep graph.data (sans l espace ne marche pas) Degré sortant d un nœud grep graph.data wc -l Degré entrant d un nœud grep $ graph.data wc -l Degré d un nœud dans un graphe non orienté awk {if (($ == ) ($ == )) print $0;} graph.data wc -l Nombre de nœuds cat graph.data tr \n sort -n tail -n awk {print $+} Plus rapide : sort -nu Variante du degré d un nœud (pas efficace) cat graph.data tr \n sort uniq -c grep 5