INF4705 — Analyse et conception d’algorithmes
tp 1
Ce travail pratique se répartit sur deux séances de laboratoire et porte sur
l’analyse empirique et hybride des algorithmes. À la section 1 du chapitre 3 des
notes de cours, trois approches d’analyse de l’implantation d’un algorithme sont
décrites. Vous les mettrez en pratique pour des algorithmes de multiplication de
grands entiers.
1 Implantation
Durant la première séance, vous implanterez les algorithmes de multiplica-
tion de grands entiers arabe et diviser-pour-régner. Vérifiez que vos algorithmes
fonctionnent correctement en les testant sur de petits exemplaires du problème.
Vous pouvez également vérifier que vos implantations sont correctes en compa-
rant les résultats des deux algorithmes.
Vous avez le choix du langage de programmation utilisé (C, C++, Java) mais
vous devrez utiliser les mêmes langage, compilateur et ordinateur pour toutes
vos implantations. Nous vous demandons de nous remettre une version de vos
programmes qui soit compatible avec les ordinateurs du laboratoire L-4712.
Par exemple, le compilateur g++ version 4.1.2.. Ce laboratoire est accessible de
l’exterieur de l’école à l’adresse L4712-XX.info.polymtl.ca tel que XX représente
le numéro du poste (compris entre 01 et 15).
2 Jeu de données
Vous trouverez dans le répertoire ˜inf4705/pub/Multiplication les exem-
plaires à traiter. Les fichiers portent le nom "ex_nN.X" où N = 64, 256, 1024,
4096, 16384 (ce qui représente le nombre de chiffres composant chacun des deux
entiers à multiplier) et X = 0,..,9 (le numéro d’exemplaire).
Chaque ligne comprend deux chiffres séparés par un espace (" "), respecti-
vement du premier et second entiers à multiplier, à la même position décimale.
La première ligne contient les unités, la seconde les dizaines et ainsi de suite.
3 Analyse
Pour l’algorithme arabe :
i) Appliquez le test de puissance.
ii) Appliquez le test du rapport en utilisant la fonction de son ordre exact.
iii) Précisez l’analyse asymptotique théorique en calculant les constantes en jeu
(troisième approche).
1