Résolution du problème d'Euler

I. Modélisation de la zone A

image.png

image.png

II. Recherche d'un cycle Eulérien

Avant de créer un algorithme de recherche de cycle eulérien, on va d'abord s'assurer qu'il en existe bien un. Créons la matrice associé à notre graphe :

Ensuite, comptons le degré par sommet :

D'une part, notre graphe n'a aucun sommet impair. D'autre part, notre graphe est connexe (d'un sommet donné on peut atteindre n'importe quels autres sommets). D'après le théorème d'Euler, notre graphe possède un cycle eulérien.On peut aussi créer un algorithme qui effectue ce raisonnement :

On va maintenant implémenter un algorithme pour trouver ce cycle Eulérien :

On peut vérifier ce cycle eulérien manuellement via le graphe :

image.png

III. Calculer la complexité de l'algorithme

On peut maintenant analyser le temps que notre algorithme a besoin pour se terminer. On veut savoir s'il est utilisable sur des villes entières, et donc des matrices bien plus grandes que celle de la zone A. Pour cela, on va générer aléatoirement des matrices de taille croissante, et analyser le temps que met notre algorithme à trouver leur cycle eulérien. On va ensuite pouvoir afficher dans un graphique le temps de calcul de l'algorithme en fonction de la taille de la amtrice d'entrée.

Tout d'abord, créons une fonction qui génère un graphe aléatoire :

Ensuite, affichons le temps de calcul de la fonction cycleEulerien sur plusieurs matrices :

On peut aussi anticiper ce résultat en effectuant une étude théorique de complexité de la fonction cycleEulerien :

image.png