Un domaine d’intérêt croissant pour les scientifiques qui explorent l’importance, le pouvoir ou l’influence entre les entités est appelé la théorie des graphes. Les racines de la théorie des graphes ont commencé en 1736 lorsque le mathématicien Carl Ehler a présenté à Leonhard Euler le problème des ponts de Konigsberg.
Le problème des ponts de Konigsberg est basé sur l’ancienne ville allemande de Konigsberg qui s’étend sur les deux côtés de la rivière Pregel. Au centre, il y avait deux grandes îles qui étaient reliées l’une à l’autre et aux berges de la rivière par sept ponts. Carl Ehler est devenu obsédé par la recherche d’un itinéraire permettant de traverser chacun des sept ponts sans enjamber aucun plus d’une fois. Ehler a contacté Leonhard Euler, un mathématicien suisse. Euler a confirmé l’hypothèse d’Ehler selon laquelle le problème n’avait pas de solution, et l’explication d’Euler a informé un nouveau paradigme mathématique appelé géométrie de position.
Le nouveau paradigme de géométrie d’Euler a déclaré que l’emplacement des ponts n’avait pas d’importance. Le problème, au contraire, peut être simplifié en transformant chaque pont en un point (nœud) avec des lignes (arêtes) pour représenter les liens entre eux. Cette pratique de l’utilisation des nœuds et des arêtes est maintenant connue sous le nom de théorie des graphes.
Vous pouvez en savoir plus sur le problème des ponts de Konigsberg ici.
A l’origine, la théorie des graphes ne servait pas beaucoup à la résolution de problèmes et n’était pas très appréciée des mathématiciens. Cependant, la puissance de calcul moderne permettant de traiter de grandes permutations a rendu les principes de la théorie des graphes plus pratiques. Cet article vous apprend à appliquer les principes de la Théorie des graphes à l’analyse basée sur Python.
Les réseaux d’un système graphique ne sont pas tous interconnectés. Cette déconnexion est le moment où les composants sont formés. Comme le montre le graphique ci-dessous, une composante est formée uniquement lorsque chaque nœud a un chemin vers d’autres nœuds.
Théorie appliquée des graphes en Python
En Python, networkx est souvent utilisé pour la théorie appliquée des graphes également connue sous le nom d’analyse de réseau . Le paquet a des fonctionnalités utiles pour résumer rapidement les caractéristiques d’un graphe. Vous pouvez revoir les étapes ci-dessous et suivre la création d’un graphe et la compréhension de sa composition.
D’abord, le code ci-dessous crée un objet vide de graphe P
. Les étapes suivantes ajoutent des nœuds et décrivent les arêtes.
Des arguments tels que <object>.nodes()
ou <object>.edges()
sont des moyens rapides de visualiser tous les nœuds et arêtes du système de graphe.
print(P.nodes())print(P.edges())
Enfin, nx.draw
est utilisé pour visualiser le réseau.
%matplotlib inline
import matplotlib.pyplot as plt
nx.draw(P, with_labels = True)
Exercices 1:
Maintenant que les concepts de base des graphes sont discutés, les exercices suivants sont une bonne méthode pour s’exercer:
- Combien de nœuds y a-t-il dans le graphe ci-dessus ?
- Combien d’arêtes y a-t-il dans le graphe ci-dessus ?
- Quel est le géodésique pour E et C ?
- Y a-t-il plus d’une composante dans le graphe ?
Utilisation de données réelles
L’exercice ci-dessous utilisera des données pour les vols à l’intérieur des États-Unis en 2015. L’ensemble de données comprend les aéroports d’origine et de destination en plus des attributs qui décrivent le vol, notamment le temps de vol et les retards (liés à la météo, à la sécurité ou à la compagnie aérienne).
Parce que l’ensemble de données est important, l’exercice se concentrera sur les vols en provenance des aéroports de la région de Los Angeles (Los Angeles (LAX), Burbank (BUR), Orange County (SNA) et San Bernardino County (ONT)). En outre, l’accent sera mis sur l’examen des vols qui ressemblent à mon horaire de voyage chez Deloitte, soit un départ le dimanche et un retour le jeudi.
Puisque nous avons déjà des données d’origine et de destination, ****fields ORIGIN_AIRPORT et DESTINATION_AIRPORT serviront de champs sources pour les nœuds et les arêtes – il n’est pas nécessaire de créer des nœuds ou des arêtes comme nous l’avons fait dans le premier exercice. Une fois les nœuds définis, <object>.edges()
fournira toutes les relations par paires entre eux. Enfin, nx.draw
aidera à produire un graphique aux bords.
FG.edges()