Salut,
J'ai un projet d'expérimentation en complexité algorithmique à réaliser, et je me retrouve à tracer des graphiques avec gnuplot pour illustrer le temps de calcul de différents algorithmes. J'ai donc un fichier data qui mappe une taille d'entrée à un temps d'exécution en ms, que je plot avec gnuplot sans problèmes.
Par contre, j'aimerais pouvoir tracer sur le même graphique, les courbes de référence liées à leur complexité théorique ; par exemple, j'aimerais tracer la courbe f(x) = x*x pour la comparer avec la courbe de temps réel si je sais que mon algorithme a une complexité moyenne théorique quadratique. Je sais bien qu'il y aura un écart et que les deux ne sont pas comparables en soi puisque l'une est quantifiée en ms et l'autre en opérations fondamentales, mais c'est justement un des points vers lesquels je dois aller pour l'exercice.
Le problème est que, du coup, je ne sais pas comment la plotter correctement dans gnuplot. Puisque je plot mes données expérimentales, je me retrouve avec des ms en ordonnés pour des "tailles d'instance" en abscisses, et si je fais un "f(x) = x*x; plot f(x) <...>" ça n'a aucun sens puisqu'il map alors des tailles arbitraires au carré à des ms.
La solution serait de savoir combien d'instructions par seconde mon processeur peut réaliser, et entrer les données moi-même pour avoir une allure à peu près signifiante par rapport aux unités, mais ça me semble pas possible puisque ce nombre est variable sur un même processeur et pas vraiment indicatif.
Du coup, quelqu'un a une idée de comment je peux plotter correctement une courbe tirée d'une expérimentation (ms/nombre d'entrées) et une fonction de référence (opérations/nombre d'entrées) dans le même repère ? J'ai beaucoup de mal à voir comment donner un sens à tout ça, mais c'est manifestement ce qu'on nous demande...
Merci.