ASD/test.py
2017-12-19 17:54:13 +01:00

173 lines
5 KiB
Python

import graphe
import graphique
import copy
import numpy as np
import matplotlib.pyplot as pl
import time
def creerGrapheFigure1():
""" Crée le graphe de la figure 1 """
g = graphe.Graphe("Graphe de la figure 1")
s1 = g.ajouteSommet(1.0, 1.0)
s2 = g.ajouteSommet(2.0, 3.5)
s3 = g.ajouteSommet(2.5, 2.5)
s4 = g.ajouteSommet(5.0, 2.0)
s1.couleur = (1., 1., 0.)
s2.couleur = (0., 0., 1.)
s3.couleur = (1., 0., 0.)
s4.couleur = (1., 1., 0.)
a = g.connecte(s1, s2, 4.0, 90.)
a.couleur = (1., 1., 0.)
g.connecte(s1, s4, 5.2, 124.)
g.connecte(s2, s3, 2.0, 54.)
g.connecte(s2, s4, 5.0, 90.)
return g
def testQuestion1_2():
"""' Teste que la création d ' un graphe ne plante pas
print ”Question 1.2 :"""
creerGrapheFigure1()
print("Ok. Pas de plantage")
def testQuestion1_3():
""" Teste l ' affichage d ' un graphe dans la console"""
print("Question 1.3 :")
g = creerGrapheFigure1()
print(g)
def testQuestion1_4():
""" Teste du dessin d'un graphe."""
print("Question 1.4:")
graphique.affiche(creerGrapheFigure1(), (3., 2.), 100.)
def testQuestion2_2():
"""Teste de génération aléatoire de graphe."""
print("Question 2.2:")
graphique.affiche(graphe.pointsAleatoires(5, 30), (0, 0), 10.)
def testQuestion2_4():
"""Teste de gabriel et gvr."""
print("Question 2.4")
g = graphe.pointsAleatoires(30, 30)
g.renomme("Gabriel")
g1 = copy.deepcopy(g)
g1.renomme("GVR")
graphe.gabriel(g)
graphe.gvr(g1)
graphique.affiche(g, (0, 0), 10.)
graphique.affiche(g1, (0, 0), 10.)
def testQuestion2_5():
"""Teste de la création de réseau."""
g = graphe.pointsAleatoires(30, 30)
graphe.reseau(g)
graphique.affiche(g, (0, 0), 10.)
def chronometre(fonctionTest, fonctionPreparation, parametres):
''' Mesure le temps d ' exécution fonctionTest pour différentes valeurs d '
un paramètres '''
temps = []
# Pour chaque valeur de paramètre
for p in parametres:
# Génère les entrées du test pour la valeur p
entrees = fonctionPreparation(p)
# Lance le test pour ces entrées
print("t({}) = ".format(p), end="", flush=True)
debut = time.time()
fonctionTest(entrees)
fin = time.time()
# Mesure le temps d ' exécution
t = (fin - debut)
print("{:.2f} s".format(t))
temps.append(t)
return temps
def testQuestion2_6():
"""Mesure la performance de graphe.reseau"""
prepare = lambda p : graphe.pointsAleatoires(p, 10)
valeurs_n = np.arange(1, 200)
temps = chronometre(graphe.reseau, prepare, valeurs_n)
pl.close('all')
pl.title("Mesure du temps d'exécution de `reseau`.")
pl.plot(valeurs_n, temps)
pl.xlabel("n")
pl.ylabel("temps")
pl.show()
pl.title("Mesure du temps d'exécution de `reseau`.")
pl.loglog(valeurs_n, temps, label='temps de calcul')
pl.loglog(valeurs_n, (lambda x : x**3)(valeurs_n), label='$x\mapsto x^3$')
pl.legend(loc='best')
pl.xlabel("n")
pl.ylabel("temps")
pl.show()
def testQuestion2_7():
"""Compare la création de graphe de gabriel et ed delaunay."""
prepare = lambda p : graphe.pointsAleatoires(p, 10)
valeurs_n = np.arange(1, 200)
temps1 = chronometre(graphe.gabriel, prepare, valeurs_n)
temps2 = chronometre(graphe.delaunay, prepare, valeurs_n)
pl.close('all')
pl.title("Comparaison du temps pour `delaunay` et `gabriel`")
pl.plot(valeurs_n, temps1, label='gabriel')
pl.plot(valeurs_n, temps2, label='delaunay')
pl.legend(loc='best')
pl.xlabel('n')
pl.ylabel('temps')
pl.show()
def testQuestion2_8():
"""Compare le reseau naif et non naif."""
g = graphe.pointsAleatoires(30, 30)
g1 = copy.deepcopy(g)
g.renomme("Naïf")
g1.renomme("Non naïf")
graphe.reseau(g)
graphe.reseauRapide(g1)
graphique.affiche(g, (0, 0), 10.)
graphique.affiche(g1, (0, 0), 10.)
def testQuestion2_9():
"""Compare le temps de création des deux méthodes de création de réseau"""
prepare = lambda p : graphe.pointsAleatoires(p, 10)
valeurs_n = list(map(lambda x: int(x), np.logspace(1, 3, 30)))
temps1 = chronometre(graphe.reseau, prepare, valeurs_n)
temps2 = chronometre(graphe.reseauRapide, prepare, valeurs_n)
pl.close('all')
pl.title("Comparaison du temps d'exécution de `reseau` et `reseauRapide`.")
pl.plot(valeurs_n, temps1, label='reseau')
pl.plot(valeurs_n, temps2, label='reseauRapide')
pl.legend(loc='best')
pl.xlabel("n")
pl.ylabel("temps")
pl.show()
pl.title("Comparaison du temps d'exécution de `reseau` et `reseauRapide`.")
pl.loglog(valeurs_n, temps1, label='reseau')
pl.loglog(valeurs_n, temps2, label='reseauRapide')
pl.legend(loc='best')
pl.xlabel("n")
pl.ylabel("temps")
pl.show()
# testQuestion1_2()
# testQuestion1_3()
# testQuestion1_4()
# testQuestion2_2()
# testQuestion2_4()
# testQuestion2_5()
# testQuestion2_6()
# testQuestion2_7()
# testQuestion2_8()
testQuestion2_9()