Cours “Network science” - Erwan Le Merrer
Cours “Network science” - Erwan Le Merrer
TP5 du 07/12/2020
NetworkX et sa documentation ici.
Propos principal: comparer de petits graphes.
Comparaison de graphes
comparer ces deux graphes: une étoile à 4 noeuds, et un graphe complet de la même taille, avec la fonction distance d’édition de NetworkX. La distance retournée vous semble t elle cohérente?
testez sur des graphes un peu plus gros; quelle est la complexité du calcul de la distance d’édition de graphes?
créez les graphlets G4, G8 et G15 du poly
regardez la définition d’isomorphisme. Créez 2 graphes isomorphes de 3 noeuds, et (ie, G1 ou G2) vérifiez cette propriété avec la fonction appropriée de NetworkX.
- nous allons compter ces graphlets dans le graphe Karate Club. Le but est de créer une fonction get_graphlet_edges(graphlet, G) qui retourne la liste des arêtes de chacun des “graphlets” trouvés dans G.
- avec la fonction itertools.combinations(…), itérez sur tous les combinaisons possibles de k noeuds (si le graphlet en paramètres compte k noeuds) dans les noeuds de G; extrayez le sous graphe induit par chaque combinaison, et vérifiez qu’il est connecté.
- s’il l’est, alors vérifiez s’il est aussi isomorphe au graphlet: si oui vous avez trouvé un graphlet de G, poursuivez.
importez le graphe Karate Club dans G. Combien de graphlets G4, G8 et G15 dans G?
comparez ces quantités à celles d’un graphe Barabasi-Albert comportant également 34 noeuds (eg, nx.barabasi_albert_graph(34, 2)). Conclusion de similarité cohérente avec la comparaison d’autres caractéristiques des deux réseaux? (eg, shortest path et average clustering)
- BONUS: regardez les “graph kernels” à base de marches aléatoires (eg, ici). (Ceux ci permettent une comparaison en temps polynomial, et donc de plus grand graphes)
Questions/commentaires: erwan.le-merrer@inria.fr